@ledgerhq/device-management-kit 0.0.0-develop-20241017000946 → 0.5.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/lib/cjs/index.js +1 -6126
- package/lib/cjs/index.js.map +4 -4
- package/lib/cjs/package.json +64 -0
- package/lib/cjs/src/api/DeviceManagementKit.js +2 -0
- package/lib/cjs/src/api/DeviceManagementKit.js.map +7 -0
- package/lib/cjs/src/api/DeviceManagementKit.test.js +2 -0
- package/lib/cjs/src/api/DeviceManagementKit.test.js.map +7 -0
- package/lib/cjs/src/api/DeviceManagementKitBuilder.js +2 -0
- package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +7 -0
- package/lib/cjs/src/api/DeviceManagementKitBuilder.test.js +2 -0
- package/lib/cjs/src/api/DeviceManagementKitBuilder.test.js.map +7 -0
- package/lib/cjs/src/api/DmkConfig.js +2 -0
- package/lib/cjs/src/api/DmkConfig.js.map +7 -0
- package/lib/cjs/src/api/Error.js +2 -0
- package/lib/cjs/src/api/Error.js.map +7 -0
- package/lib/cjs/src/api/apdu/model/Apdu.js +2 -0
- package/lib/cjs/src/api/apdu/model/Apdu.js.map +7 -0
- package/lib/cjs/src/api/apdu/model/Apdu.test.js +2 -0
- package/lib/cjs/src/api/apdu/model/Apdu.test.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ApduBuilder.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ApduBuilder.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ApduBuilder.test.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ApduBuilder.test.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ApduParser.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ApduParser.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ApduParser.test.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ApduParser.test.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/AppBuilderError.js +2 -0
- package/lib/cjs/src/api/apdu/utils/AppBuilderError.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayParser.js.map +7 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayParser.test.js +2 -0
- package/lib/cjs/src/api/apdu/utils/ByteArrayParser.test.js.map +7 -0
- package/lib/cjs/src/api/command/Command.js +2 -0
- package/lib/cjs/src/api/command/Command.js.map +7 -0
- package/lib/cjs/src/api/command/Errors.js +2 -0
- package/lib/cjs/src/api/command/Errors.js.map +7 -0
- package/lib/cjs/src/api/command/di/commandModule.js +2 -0
- package/lib/cjs/src/api/command/di/commandModule.js.map +7 -0
- package/lib/cjs/src/api/command/di/commandModule.test.js +2 -0
- package/lib/cjs/src/api/command/di/commandModule.test.js.map +7 -0
- package/lib/cjs/src/api/command/di/commandTypes.js +2 -0
- package/lib/cjs/src/api/command/di/commandTypes.js.map +7 -0
- package/lib/cjs/src/api/command/model/CommandResult.js +2 -0
- package/lib/cjs/src/api/command/model/CommandResult.js.map +7 -0
- package/lib/cjs/src/api/command/model/CommandResult.test.js +2 -0
- package/lib/cjs/src/api/command/model/CommandResult.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/CloseAppCommand.js +2 -0
- package/lib/cjs/src/api/command/os/CloseAppCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/CloseAppCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/CloseAppCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js +2 -0
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/GetAppAndVersionCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js +2 -0
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/GetBatteryStatusCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.js +2 -0
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/GetOsVersionCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/ListAppsCommand.js +2 -0
- package/lib/cjs/src/api/command/os/ListAppsCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/ListAppsCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/ListAppsCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/OpenAppCommand.js +2 -0
- package/lib/cjs/src/api/command/os/OpenAppCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/OpenAppCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/OpenAppCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js +2 -0
- package/lib/cjs/src/api/command/use-case/SendCommandUseCase.js.map +7 -0
- package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +2 -0
- package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +7 -0
- package/lib/cjs/src/api/command/utils/CommandErrors.js +2 -0
- package/lib/cjs/src/api/command/utils/CommandErrors.js.map +7 -0
- package/lib/cjs/src/api/command/utils/CommandUtils.js +2 -0
- package/lib/cjs/src/api/command/utils/CommandUtils.js.map +7 -0
- package/lib/cjs/src/api/command/utils/CommandUtils.test.js +2 -0
- package/lib/cjs/src/api/command/utils/CommandUtils.test.js.map +7 -0
- package/lib/cjs/src/api/command/utils/GlobalCommandError.js +2 -0
- package/lib/cjs/src/api/command/utils/GlobalCommandError.js.map +7 -0
- package/lib/cjs/src/api/command/utils/GlobalCommandError.test.js +2 -0
- package/lib/cjs/src/api/command/utils/GlobalCommandError.test.js.map +7 -0
- package/lib/cjs/src/api/device/DeviceModel.js +2 -0
- package/lib/cjs/src/api/device/DeviceModel.js.map +7 -0
- package/lib/cjs/src/api/device/DeviceStatus.js +2 -0
- package/lib/cjs/src/api/device/DeviceStatus.js.map +7 -0
- package/lib/cjs/src/api/device-action/DeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/DeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/__test-utils__/data.js +2 -0
- package/lib/cjs/src/api/device-action/__test-utils__/data.js.map +7 -0
- package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +2 -0
- package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +7 -0
- package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +2 -0
- package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +7 -0
- package/lib/cjs/src/api/device-action/__test-utils__/testDeviceActionStates.js +2 -0
- package/lib/cjs/src/api/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
- package/lib/cjs/src/api/device-action/di/deviceActionModule.js +2 -0
- package/lib/cjs/src/api/device-action/di/deviceActionModule.js.map +7 -0
- package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js +2 -0
- package/lib/cjs/src/api/device-action/di/deviceActionModule.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/di/deviceActionTypes.js +2 -0
- package/lib/cjs/src/api/device-action/di/deviceActionTypes.js.map +7 -0
- package/lib/cjs/src/api/device-action/model/DeviceActionState.js +2 -0
- package/lib/cjs/src/api/device-action/model/DeviceActionState.js.map +7 -0
- package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +2 -0
- package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/Const.js +2 -0
- package/lib/cjs/src/api/device-action/os/Const.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/Errors.js +2 -0
- package/lib/cjs/src/api/device-action/os/Errors.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceStatus/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/GetDeviceStatus/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/GoToDashboard/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListApps/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/ListApps/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +2 -0
- package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +7 -0
- package/lib/cjs/src/api/device-action/use-case/ExecuteDeviceActionUseCase.js +2 -0
- package/lib/cjs/src/api/device-action/use-case/ExecuteDeviceActionUseCase.js.map +7 -0
- package/lib/cjs/src/api/device-action/xstate-utils/StateMachineTypes.js +2 -0
- package/lib/cjs/src/api/device-action/xstate-utils/StateMachineTypes.js.map +7 -0
- package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-session/ApduResponse.js +2 -0
- package/lib/cjs/src/api/device-session/ApduResponse.js.map +7 -0
- package/lib/cjs/src/api/device-session/ApduResponse.stub.js +2 -0
- package/lib/cjs/src/api/device-session/ApduResponse.stub.js.map +7 -0
- package/lib/cjs/src/api/device-session/DeviceSessionState.js +2 -0
- package/lib/cjs/src/api/device-session/DeviceSessionState.js.map +7 -0
- package/lib/cjs/src/api/device-session/types.js +2 -0
- package/lib/cjs/src/api/device-session/types.js.map +7 -0
- package/lib/cjs/src/api/discovery/ConnectionType.js +2 -0
- package/lib/cjs/src/api/discovery/ConnectionType.js.map +7 -0
- package/lib/cjs/src/api/index.js +2 -0
- package/lib/cjs/src/api/index.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/__mocks__/ConsoleLogger.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/__mocks__/ConsoleLogger.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/model/LogLevel.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/model/LogLevel.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/model/LogSubscriberOptions.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/model/LogSubscriberOptions.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.test.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.test.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/service/LoggerSubscriberService.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/service/LoggerSubscriberService.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.js.map +7 -0
- package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +2 -0
- package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +7 -0
- package/lib/cjs/src/api/transport/model/ConnectedDevice.js +2 -0
- package/lib/cjs/src/api/transport/model/ConnectedDevice.js.map +7 -0
- package/lib/cjs/src/api/transport/model/DiscoveredDevice.js +2 -0
- package/lib/cjs/src/api/transport/model/DiscoveredDevice.js.map +7 -0
- package/lib/cjs/src/api/transport/model/Transport.js +2 -0
- package/lib/cjs/src/api/transport/model/Transport.js.map +7 -0
- package/lib/cjs/src/api/transport/model/TransportIdentifier.js +2 -0
- package/lib/cjs/src/api/transport/model/TransportIdentifier.js.map +7 -0
- package/lib/cjs/src/api/types.js +2 -0
- package/lib/cjs/src/api/types.js.map +7 -0
- package/lib/cjs/src/api/utils/Base64String.js +2 -0
- package/lib/cjs/src/api/utils/Base64String.js.map +7 -0
- package/lib/cjs/src/api/utils/Base64String.test.js +2 -0
- package/lib/cjs/src/api/utils/Base64String.test.js.map +7 -0
- package/lib/cjs/src/api/utils/HexaString.js +2 -0
- package/lib/cjs/src/api/utils/HexaString.js.map +7 -0
- package/lib/cjs/src/api/utils/HexaString.test.js +2 -0
- package/lib/cjs/src/api/utils/HexaString.test.js.map +7 -0
- package/lib/cjs/src/di.js +2 -0
- package/lib/cjs/src/di.js.map +7 -0
- package/lib/cjs/src/di.stub.js +2 -0
- package/lib/cjs/src/di.stub.js.map +7 -0
- package/lib/cjs/src/index.js +2 -0
- package/lib/cjs/src/index.js.map +7 -0
- package/lib/cjs/src/internal/config/data/ConfigDataSource.js +2 -0
- package/lib/cjs/src/internal/config/data/ConfigDataSource.js.map +7 -0
- package/lib/cjs/src/internal/config/data/Dto.js +2 -0
- package/lib/cjs/src/internal/config/data/Dto.js.map +7 -0
- package/lib/cjs/src/internal/config/data/LocalConfigDataSource.js +2 -0
- package/lib/cjs/src/internal/config/data/LocalConfigDataSource.js.map +7 -0
- package/lib/cjs/src/internal/config/data/LocalConfigDataSource.stub.js +2 -0
- package/lib/cjs/src/internal/config/data/LocalConfigDataSource.stub.js.map +7 -0
- package/lib/cjs/src/internal/config/data/LocalConfigDataSource.test.js +2 -0
- package/lib/cjs/src/internal/config/data/LocalConfigDataSource.test.js.map +7 -0
- package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.js +2 -0
- package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.js.map +7 -0
- package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.stub.js +2 -0
- package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.stub.js.map +7 -0
- package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.test.js +2 -0
- package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.test.js.map +7 -0
- package/lib/cjs/src/internal/config/data/__mocks__/LocalConfigDataSource.js +2 -0
- package/lib/cjs/src/internal/config/data/__mocks__/LocalConfigDataSource.js.map +7 -0
- package/lib/cjs/src/internal/config/data/__mocks__/RemoteConfigDataSource.js +2 -0
- package/lib/cjs/src/internal/config/data/__mocks__/RemoteConfigDataSource.js.map +7 -0
- package/lib/cjs/src/internal/config/di/configModule.js +2 -0
- package/lib/cjs/src/internal/config/di/configModule.js.map +7 -0
- package/lib/cjs/src/internal/config/di/configModule.test.js +2 -0
- package/lib/cjs/src/internal/config/di/configModule.test.js.map +7 -0
- package/lib/cjs/src/internal/config/di/configTypes.js +2 -0
- package/lib/cjs/src/internal/config/di/configTypes.js.map +7 -0
- package/lib/cjs/src/internal/config/model/Config.js +2 -0
- package/lib/cjs/src/internal/config/model/Config.js.map +7 -0
- package/lib/cjs/src/internal/config/model/Errors.js +2 -0
- package/lib/cjs/src/internal/config/model/Errors.js.map +7 -0
- package/lib/cjs/src/internal/config/service/ConfigService.js +2 -0
- package/lib/cjs/src/internal/config/service/ConfigService.js.map +7 -0
- package/lib/cjs/src/internal/config/service/DefaultConfigService.js +2 -0
- package/lib/cjs/src/internal/config/service/DefaultConfigService.js.map +7 -0
- package/lib/cjs/src/internal/config/service/DefaultConfigService.test.js +2 -0
- package/lib/cjs/src/internal/config/service/DefaultConfigService.test.js.map +7 -0
- package/lib/cjs/src/internal/config/use-case/GetDmkVersionUseCase.js +2 -0
- package/lib/cjs/src/internal/config/use-case/GetDmkVersionUseCase.js.map +7 -0
- package/lib/cjs/src/internal/config/use-case/GetDmkVersionUseCase.test.js +2 -0
- package/lib/cjs/src/internal/config/use-case/GetDmkVersionUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/device-model/data/DeviceModelDataSource.js +2 -0
- package/lib/cjs/src/internal/device-model/data/DeviceModelDataSource.js.map +7 -0
- package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.js +2 -0
- package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.js.map +7 -0
- package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.test.js +2 -0
- package/lib/cjs/src/internal/device-model/data/StaticDeviceModelDataSource.test.js.map +7 -0
- package/lib/cjs/src/internal/device-model/di/deviceModelModule.js +2 -0
- package/lib/cjs/src/internal/device-model/di/deviceModelModule.js.map +7 -0
- package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js +2 -0
- package/lib/cjs/src/internal/device-model/di/deviceModelModule.test.js.map +7 -0
- package/lib/cjs/src/internal/device-model/di/deviceModelTypes.js +2 -0
- package/lib/cjs/src/internal/device-model/di/deviceModelTypes.js.map +7 -0
- package/lib/cjs/src/internal/device-model/model/DeviceModel.js +2 -0
- package/lib/cjs/src/internal/device-model/model/DeviceModel.js.map +7 -0
- package/lib/cjs/src/internal/device-model/model/DeviceModel.stub.js +2 -0
- package/lib/cjs/src/internal/device-model/model/DeviceModel.stub.js.map +7 -0
- package/lib/cjs/src/internal/device-model/model/DeviceModel.test.js +2 -0
- package/lib/cjs/src/internal/device-model/model/DeviceModel.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/data/ApduResponseConst.js +2 -0
- package/lib/cjs/src/internal/device-session/data/ApduResponseConst.js.map +7 -0
- package/lib/cjs/src/internal/device-session/data/DeviceSessionRefresherConst.js +2 -0
- package/lib/cjs/src/internal/device-session/data/DeviceSessionRefresherConst.js.map +7 -0
- package/lib/cjs/src/internal/device-session/data/FramerConst.js +2 -0
- package/lib/cjs/src/internal/device-session/data/FramerConst.js.map +7 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js +2 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionModule.js.map +7 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js +2 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionModule.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js +2 -0
- package/lib/cjs/src/internal/device-session/di/deviceSessionTypes.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSession.js +2 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js +2 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js +2 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +2 -0
- package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/Errors.js +2 -0
- package/lib/cjs/src/internal/device-session/model/Errors.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/Frame.js +2 -0
- package/lib/cjs/src/internal/device-session/model/Frame.js.map +7 -0
- package/lib/cjs/src/internal/device-session/model/FrameHeader.js +2 -0
- package/lib/cjs/src/internal/device-session/model/FrameHeader.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/ApduReceiverService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/ApduReceiverService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/ApduSenderService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/ApduSenderService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.stub.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.stub.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.test.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.stub.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.stub.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js +2 -0
- package/lib/cjs/src/internal/device-session/service/DeviceSessionService.js.map +7 -0
- package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js +2 -0
- package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +7 -0
- package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseState.test.js +2 -0
- package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseState.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.js +2 -0
- package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.js.map +7 -0
- package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +2 -0
- package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/device-session/utils/FramerUtils.js +2 -0
- package/lib/cjs/src/internal/device-session/utils/FramerUtils.js.map +7 -0
- package/lib/cjs/src/internal/device-session/utils/FramerUtils.test.js +2 -0
- package/lib/cjs/src/internal/device-session/utils/FramerUtils.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/di/discoveryModule.js +2 -0
- package/lib/cjs/src/internal/discovery/di/discoveryModule.js.map +7 -0
- package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +2 -0
- package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/di/discoveryTypes.js +2 -0
- package/lib/cjs/src/internal/discovery/di/discoveryTypes.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +7 -0
- package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +2 -0
- package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/di/loggerModule.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/di/loggerModule.test.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/di/loggerTypes.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/di/loggerTypes.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/model/LogPublisherOptions.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/model/LogPublisherOptions.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/service/LoggerPublisherService.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/service/LoggerPublisherService.js.map +7 -0
- package/lib/cjs/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js +2 -0
- package/lib/cjs/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +2 -0
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +2 -0
- package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +2 -0
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js +2 -0
- package/lib/cjs/src/internal/manager-api/data/ManagerApiDto.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +2 -0
- package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +2 -0
- package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +2 -0
- package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js +2 -0
- package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/model/Const.js +2 -0
- package/lib/cjs/src/internal/manager-api/model/Const.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/model/Errors.js +2 -0
- package/lib/cjs/src/internal/manager-api/model/Errors.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/model/ManagerApiType.js +2 -0
- package/lib/cjs/src/internal/manager-api/model/ManagerApiType.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +2 -0
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +2 -0
- package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +7 -0
- package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js +2 -0
- package/lib/cjs/src/internal/manager-api/service/ManagerApiService.js.map +7 -0
- package/lib/cjs/src/internal/send/di/sendModule.js +2 -0
- package/lib/cjs/src/internal/send/di/sendModule.js.map +7 -0
- package/lib/cjs/src/internal/send/di/sendModule.test.js +2 -0
- package/lib/cjs/src/internal/send/di/sendModule.test.js.map +7 -0
- package/lib/cjs/src/internal/send/di/sendTypes.js +2 -0
- package/lib/cjs/src/internal/send/di/sendTypes.js.map +7 -0
- package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js +2 -0
- package/lib/cjs/src/internal/send/use-case/SendApduUseCase.js.map +7 -0
- package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +2 -0
- package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/di/bleDiTypes.js +2 -0
- package/lib/cjs/src/internal/transport/ble/di/bleDiTypes.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/di/bleModule.js +2 -0
- package/lib/cjs/src/internal/transport/ble/di/bleModule.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/di/bleModule.test.js +2 -0
- package/lib/cjs/src/internal/transport/ble/di/bleModule.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/model/BleDevice.stub.js +2 -0
- package/lib/cjs/src/internal/transport/ble/model/BleDevice.stub.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/model/BleDeviceInfos.js +2 -0
- package/lib/cjs/src/internal/transport/ble/model/BleDeviceInfos.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.js +2 -0
- package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js +2 -0
- package/lib/cjs/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.js +2 -0
- package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.test.js +2 -0
- package/lib/cjs/src/internal/transport/ble/transport/BleDeviceConnection.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.js +2 -0
- package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.test.js +2 -0
- package/lib/cjs/src/internal/transport/ble/transport/WebBleTransport.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js +2 -0
- package/lib/cjs/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js.map +7 -0
- package/lib/cjs/src/internal/transport/data/TransportDataSource.js +2 -0
- package/lib/cjs/src/internal/transport/data/TransportDataSource.js.map +7 -0
- package/lib/cjs/src/internal/transport/di/transportDiTypes.js +2 -0
- package/lib/cjs/src/internal/transport/di/transportDiTypes.js.map +7 -0
- package/lib/cjs/src/internal/transport/di/transportModule.js +2 -0
- package/lib/cjs/src/internal/transport/di/transportModule.js.map +7 -0
- package/lib/cjs/src/internal/transport/mockserver/MockserverTransport.js +2 -0
- package/lib/cjs/src/internal/transport/mockserver/MockserverTransport.js.map +7 -0
- package/lib/cjs/src/internal/transport/model/DeviceConnection.js +2 -0
- package/lib/cjs/src/internal/transport/model/DeviceConnection.js.map +7 -0
- package/lib/cjs/src/internal/transport/model/Errors.js +2 -0
- package/lib/cjs/src/internal/transport/model/Errors.js.map +7 -0
- package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.js +2 -0
- package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.js.map +7 -0
- package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.stub.js +2 -0
- package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.stub.js.map +7 -0
- package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.test.js +2 -0
- package/lib/cjs/src/internal/transport/model/InternalConnectedDevice.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/model/InternalDiscoveredDevice.js +2 -0
- package/lib/cjs/src/internal/transport/model/InternalDiscoveredDevice.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/data/UsbHidConfig.js +2 -0
- package/lib/cjs/src/internal/transport/usb/data/UsbHidConfig.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/di/usbDiTypes.js +2 -0
- package/lib/cjs/src/internal/transport/usb/di/usbDiTypes.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/di/usbModule.js +2 -0
- package/lib/cjs/src/internal/transport/usb/di/usbModule.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/di/usbModule.test.js +2 -0
- package/lib/cjs/src/internal/transport/usb/di/usbModule.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/model/HIDDevice.stub.js +2 -0
- package/lib/cjs/src/internal/transport/usb/model/HIDDevice.stub.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js +2 -0
- package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js +2 -0
- package/lib/cjs/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.js +2 -0
- package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js +2 -0
- package/lib/cjs/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.js +2 -0
- package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.test.js +2 -0
- package/lib/cjs/src/internal/transport/usb/transport/WebUsbHidTransport.test.js.map +7 -0
- package/lib/cjs/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js +2 -0
- package/lib/cjs/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js.map +7 -0
- package/lib/esm/index.js +1 -26507
- package/lib/esm/index.js.map +4 -4
- package/lib/esm/package.json +64 -0
- package/lib/esm/src/api/DeviceManagementKit.js +2 -0
- package/lib/esm/src/api/DeviceManagementKit.js.map +7 -0
- package/lib/esm/src/api/DeviceManagementKit.test.js +2 -0
- package/lib/esm/src/api/DeviceManagementKit.test.js.map +7 -0
- package/lib/esm/src/api/DeviceManagementKitBuilder.js +2 -0
- package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +7 -0
- package/lib/esm/src/api/DeviceManagementKitBuilder.test.js +2 -0
- package/lib/esm/src/api/DeviceManagementKitBuilder.test.js.map +7 -0
- package/lib/esm/src/api/DmkConfig.js +1 -0
- package/lib/esm/src/api/DmkConfig.js.map +7 -0
- package/lib/esm/src/api/Error.js +2 -0
- package/lib/esm/src/api/Error.js.map +7 -0
- package/lib/esm/src/api/apdu/model/Apdu.js +2 -0
- package/lib/esm/src/api/apdu/model/Apdu.js.map +7 -0
- package/lib/esm/src/api/apdu/model/Apdu.test.js +2 -0
- package/lib/esm/src/api/apdu/model/Apdu.test.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ApduBuilder.js +2 -0
- package/lib/esm/src/api/apdu/utils/ApduBuilder.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ApduBuilder.test.js +2 -0
- package/lib/esm/src/api/apdu/utils/ApduBuilder.test.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ApduParser.js +2 -0
- package/lib/esm/src/api/apdu/utils/ApduParser.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ApduParser.test.js +2 -0
- package/lib/esm/src/api/apdu/utils/ApduParser.test.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/AppBuilderError.js +2 -0
- package/lib/esm/src/api/apdu/utils/AppBuilderError.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js +2 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js +2 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayParser.js +2 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayParser.js.map +7 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayParser.test.js +2 -0
- package/lib/esm/src/api/apdu/utils/ByteArrayParser.test.js.map +7 -0
- package/lib/esm/src/api/command/Command.js +1 -0
- package/lib/esm/src/api/command/Command.js.map +7 -0
- package/lib/esm/src/api/command/Errors.js +2 -0
- package/lib/esm/src/api/command/Errors.js.map +7 -0
- package/lib/esm/src/api/command/di/commandModule.js +2 -0
- package/lib/esm/src/api/command/di/commandModule.js.map +7 -0
- package/lib/esm/src/api/command/di/commandModule.test.js +2 -0
- package/lib/esm/src/api/command/di/commandModule.test.js.map +7 -0
- package/lib/esm/src/api/command/di/commandTypes.js +2 -0
- package/lib/esm/src/api/command/di/commandTypes.js.map +7 -0
- package/lib/esm/src/api/command/model/CommandResult.js +2 -0
- package/lib/esm/src/api/command/model/CommandResult.js.map +7 -0
- package/lib/esm/src/api/command/model/CommandResult.test.js +2 -0
- package/lib/esm/src/api/command/model/CommandResult.test.js.map +7 -0
- package/lib/esm/src/api/command/os/CloseAppCommand.js +2 -0
- package/lib/esm/src/api/command/os/CloseAppCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/CloseAppCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/CloseAppCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js +2 -0
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/GetAppAndVersionCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js +2 -0
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/GetBatteryStatusCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/GetOsVersionCommand.js +2 -0
- package/lib/esm/src/api/command/os/GetOsVersionCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/GetOsVersionCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/ListAppsCommand.js +2 -0
- package/lib/esm/src/api/command/os/ListAppsCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/ListAppsCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/ListAppsCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/OpenAppCommand.js +2 -0
- package/lib/esm/src/api/command/os/OpenAppCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/OpenAppCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/OpenAppCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/use-case/SendCommandUseCase.js +2 -0
- package/lib/esm/src/api/command/use-case/SendCommandUseCase.js.map +7 -0
- package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +2 -0
- package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +7 -0
- package/lib/esm/src/api/command/utils/CommandErrors.js +2 -0
- package/lib/esm/src/api/command/utils/CommandErrors.js.map +7 -0
- package/lib/esm/src/api/command/utils/CommandUtils.js +2 -0
- package/lib/esm/src/api/command/utils/CommandUtils.js.map +7 -0
- package/lib/esm/src/api/command/utils/CommandUtils.test.js +2 -0
- package/lib/esm/src/api/command/utils/CommandUtils.test.js.map +7 -0
- package/lib/esm/src/api/command/utils/GlobalCommandError.js +2 -0
- package/lib/esm/src/api/command/utils/GlobalCommandError.js.map +7 -0
- package/lib/esm/src/api/command/utils/GlobalCommandError.test.js +2 -0
- package/lib/esm/src/api/command/utils/GlobalCommandError.test.js.map +7 -0
- package/lib/esm/src/api/device/DeviceModel.js +2 -0
- package/lib/esm/src/api/device/DeviceModel.js.map +7 -0
- package/lib/esm/src/api/device/DeviceStatus.js +2 -0
- package/lib/esm/src/api/device/DeviceStatus.js.map +7 -0
- package/lib/esm/src/api/device-action/DeviceAction.js +1 -0
- package/lib/esm/src/api/device-action/DeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/__test-utils__/data.js +2 -0
- package/lib/esm/src/api/device-action/__test-utils__/data.js.map +7 -0
- package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +2 -0
- package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +7 -0
- package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +2 -0
- package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +7 -0
- package/lib/esm/src/api/device-action/__test-utils__/testDeviceActionStates.js +2 -0
- package/lib/esm/src/api/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
- package/lib/esm/src/api/device-action/di/deviceActionModule.js +2 -0
- package/lib/esm/src/api/device-action/di/deviceActionModule.js.map +7 -0
- package/lib/esm/src/api/device-action/di/deviceActionModule.test.js +2 -0
- package/lib/esm/src/api/device-action/di/deviceActionModule.test.js.map +7 -0
- package/lib/esm/src/api/device-action/di/deviceActionTypes.js +2 -0
- package/lib/esm/src/api/device-action/di/deviceActionTypes.js.map +7 -0
- package/lib/esm/src/api/device-action/model/DeviceActionState.js +2 -0
- package/lib/esm/src/api/device-action/model/DeviceActionState.js.map +7 -0
- package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +2 -0
- package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +7 -0
- package/lib/esm/src/api/device-action/os/Const.js +2 -0
- package/lib/esm/src/api/device-action/os/Const.js.map +7 -0
- package/lib/esm/src/api/device-action/os/Errors.js +2 -0
- package/lib/esm/src/api/device-action/os/Errors.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GetDeviceStatus/types.js +1 -0
- package/lib/esm/src/api/device-action/os/GetDeviceStatus/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/GoToDashboard/types.js +1 -0
- package/lib/esm/src/api/device-action/os/GoToDashboard/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListApps/types.js +1 -0
- package/lib/esm/src/api/device-action/os/ListApps/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/types.js +1 -0
- package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/types.js +1 -0
- package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/types.js.map +7 -0
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js +1 -0
- package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.js.map +7 -0
- package/lib/esm/src/api/device-action/use-case/ExecuteDeviceActionUseCase.js +2 -0
- package/lib/esm/src/api/device-action/use-case/ExecuteDeviceActionUseCase.js.map +7 -0
- package/lib/esm/src/api/device-action/xstate-utils/StateMachineTypes.js +1 -0
- package/lib/esm/src/api/device-action/xstate-utils/StateMachineTypes.js.map +7 -0
- package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-session/ApduResponse.js +2 -0
- package/lib/esm/src/api/device-session/ApduResponse.js.map +7 -0
- package/lib/esm/src/api/device-session/ApduResponse.stub.js +2 -0
- package/lib/esm/src/api/device-session/ApduResponse.stub.js.map +7 -0
- package/lib/esm/src/api/device-session/DeviceSessionState.js +2 -0
- package/lib/esm/src/api/device-session/DeviceSessionState.js.map +7 -0
- package/lib/esm/src/api/device-session/types.js +1 -0
- package/lib/esm/src/api/device-session/types.js.map +7 -0
- package/lib/esm/src/api/discovery/ConnectionType.js +1 -0
- package/lib/esm/src/api/discovery/ConnectionType.js.map +7 -0
- package/lib/esm/src/api/index.js +2 -0
- package/lib/esm/src/api/index.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/__mocks__/ConsoleLogger.js +2 -0
- package/lib/esm/src/api/logger-subscriber/__mocks__/ConsoleLogger.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/model/LogLevel.js +2 -0
- package/lib/esm/src/api/logger-subscriber/model/LogLevel.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/model/LogSubscriberOptions.js +1 -0
- package/lib/esm/src/api/logger-subscriber/model/LogSubscriberOptions.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js +2 -0
- package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.test.js +2 -0
- package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.test.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/service/LoggerSubscriberService.js +1 -0
- package/lib/esm/src/api/logger-subscriber/service/LoggerSubscriberService.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.js +2 -0
- package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.js.map +7 -0
- package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +2 -0
- package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +7 -0
- package/lib/esm/src/api/transport/model/ConnectedDevice.js +2 -0
- package/lib/esm/src/api/transport/model/ConnectedDevice.js.map +7 -0
- package/lib/esm/src/api/transport/model/DiscoveredDevice.js +1 -0
- package/lib/esm/src/api/transport/model/DiscoveredDevice.js.map +7 -0
- package/lib/esm/src/api/transport/model/Transport.js +1 -0
- package/lib/esm/src/api/transport/model/Transport.js.map +7 -0
- package/lib/esm/src/api/transport/model/TransportIdentifier.js +2 -0
- package/lib/esm/src/api/transport/model/TransportIdentifier.js.map +7 -0
- package/lib/esm/src/api/types.js +1 -0
- package/lib/esm/src/api/types.js.map +7 -0
- package/lib/esm/src/api/utils/Base64String.js +2 -0
- package/lib/esm/src/api/utils/Base64String.js.map +7 -0
- package/lib/esm/src/api/utils/Base64String.test.js +2 -0
- package/lib/esm/src/api/utils/Base64String.test.js.map +7 -0
- package/lib/esm/src/api/utils/HexaString.js +2 -0
- package/lib/esm/src/api/utils/HexaString.js.map +7 -0
- package/lib/esm/src/api/utils/HexaString.test.js +2 -0
- package/lib/esm/src/api/utils/HexaString.test.js.map +7 -0
- package/lib/esm/src/di.js +2 -0
- package/lib/esm/src/di.js.map +7 -0
- package/lib/esm/src/di.stub.js +2 -0
- package/lib/esm/src/di.stub.js.map +7 -0
- package/lib/esm/src/index.js +2 -0
- package/lib/esm/src/index.js.map +7 -0
- package/lib/esm/src/internal/config/data/ConfigDataSource.js +1 -0
- package/lib/esm/src/internal/config/data/ConfigDataSource.js.map +7 -0
- package/lib/esm/src/internal/config/data/Dto.js +1 -0
- package/lib/esm/src/internal/config/data/Dto.js.map +7 -0
- package/lib/esm/src/internal/config/data/LocalConfigDataSource.js +2 -0
- package/lib/esm/src/internal/config/data/LocalConfigDataSource.js.map +7 -0
- package/lib/esm/src/internal/config/data/LocalConfigDataSource.stub.js +2 -0
- package/lib/esm/src/internal/config/data/LocalConfigDataSource.stub.js.map +7 -0
- package/lib/esm/src/internal/config/data/LocalConfigDataSource.test.js +2 -0
- package/lib/esm/src/internal/config/data/LocalConfigDataSource.test.js.map +7 -0
- package/lib/esm/src/internal/config/data/RemoteConfigDataSource.js +2 -0
- package/lib/esm/src/internal/config/data/RemoteConfigDataSource.js.map +7 -0
- package/lib/esm/src/internal/config/data/RemoteConfigDataSource.stub.js +2 -0
- package/lib/esm/src/internal/config/data/RemoteConfigDataSource.stub.js.map +7 -0
- package/lib/esm/src/internal/config/data/RemoteConfigDataSource.test.js +2 -0
- package/lib/esm/src/internal/config/data/RemoteConfigDataSource.test.js.map +7 -0
- package/lib/esm/src/internal/config/data/__mocks__/LocalConfigDataSource.js +2 -0
- package/lib/esm/src/internal/config/data/__mocks__/LocalConfigDataSource.js.map +7 -0
- package/lib/esm/src/internal/config/data/__mocks__/RemoteConfigDataSource.js +2 -0
- package/lib/esm/src/internal/config/data/__mocks__/RemoteConfigDataSource.js.map +7 -0
- package/lib/esm/src/internal/config/di/configModule.js +2 -0
- package/lib/esm/src/internal/config/di/configModule.js.map +7 -0
- package/lib/esm/src/internal/config/di/configModule.test.js +2 -0
- package/lib/esm/src/internal/config/di/configModule.test.js.map +7 -0
- package/lib/esm/src/internal/config/di/configTypes.js +2 -0
- package/lib/esm/src/internal/config/di/configTypes.js.map +7 -0
- package/lib/esm/src/internal/config/model/Config.js +2 -0
- package/lib/esm/src/internal/config/model/Config.js.map +7 -0
- package/lib/esm/src/internal/config/model/Errors.js +2 -0
- package/lib/esm/src/internal/config/model/Errors.js.map +7 -0
- package/lib/esm/src/internal/config/service/ConfigService.js +1 -0
- package/lib/esm/src/internal/config/service/ConfigService.js.map +7 -0
- package/lib/esm/src/internal/config/service/DefaultConfigService.js +2 -0
- package/lib/esm/src/internal/config/service/DefaultConfigService.js.map +7 -0
- package/lib/esm/src/internal/config/service/DefaultConfigService.test.js +2 -0
- package/lib/esm/src/internal/config/service/DefaultConfigService.test.js.map +7 -0
- package/lib/esm/src/internal/config/use-case/GetDmkVersionUseCase.js +2 -0
- package/lib/esm/src/internal/config/use-case/GetDmkVersionUseCase.js.map +7 -0
- package/lib/esm/src/internal/config/use-case/GetDmkVersionUseCase.test.js +2 -0
- package/lib/esm/src/internal/config/use-case/GetDmkVersionUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/device-model/data/DeviceModelDataSource.js +1 -0
- package/lib/esm/src/internal/device-model/data/DeviceModelDataSource.js.map +7 -0
- package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.js +2 -0
- package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.js.map +7 -0
- package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.test.js +2 -0
- package/lib/esm/src/internal/device-model/data/StaticDeviceModelDataSource.test.js.map +7 -0
- package/lib/esm/src/internal/device-model/di/deviceModelModule.js +2 -0
- package/lib/esm/src/internal/device-model/di/deviceModelModule.js.map +7 -0
- package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js +2 -0
- package/lib/esm/src/internal/device-model/di/deviceModelModule.test.js.map +7 -0
- package/lib/esm/src/internal/device-model/di/deviceModelTypes.js +2 -0
- package/lib/esm/src/internal/device-model/di/deviceModelTypes.js.map +7 -0
- package/lib/esm/src/internal/device-model/model/DeviceModel.js +2 -0
- package/lib/esm/src/internal/device-model/model/DeviceModel.js.map +7 -0
- package/lib/esm/src/internal/device-model/model/DeviceModel.stub.js +2 -0
- package/lib/esm/src/internal/device-model/model/DeviceModel.stub.js.map +7 -0
- package/lib/esm/src/internal/device-model/model/DeviceModel.test.js +2 -0
- package/lib/esm/src/internal/device-model/model/DeviceModel.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/data/ApduResponseConst.js +2 -0
- package/lib/esm/src/internal/device-session/data/ApduResponseConst.js.map +7 -0
- package/lib/esm/src/internal/device-session/data/DeviceSessionRefresherConst.js +2 -0
- package/lib/esm/src/internal/device-session/data/DeviceSessionRefresherConst.js.map +7 -0
- package/lib/esm/src/internal/device-session/data/FramerConst.js +2 -0
- package/lib/esm/src/internal/device-session/data/FramerConst.js.map +7 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionModule.js +2 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionModule.js.map +7 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js +2 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionModule.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js +2 -0
- package/lib/esm/src/internal/device-session/di/deviceSessionTypes.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/DeviceSession.js +2 -0
- package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js +2 -0
- package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js +2 -0
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +2 -0
- package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/Errors.js +2 -0
- package/lib/esm/src/internal/device-session/model/Errors.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/Frame.js +2 -0
- package/lib/esm/src/internal/device-session/model/Frame.js.map +7 -0
- package/lib/esm/src/internal/device-session/model/FrameHeader.js +2 -0
- package/lib/esm/src/internal/device-session/model/FrameHeader.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/ApduReceiverService.js +1 -0
- package/lib/esm/src/internal/device-session/service/ApduReceiverService.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/ApduSenderService.js +1 -0
- package/lib/esm/src/internal/device-session/service/ApduSenderService.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.stub.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.stub.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.test.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.stub.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.stub.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +2 -0
- package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/service/DeviceSessionService.js +1 -0
- package/lib/esm/src/internal/device-session/service/DeviceSessionService.js.map +7 -0
- package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js +2 -0
- package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.js.map +7 -0
- package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseState.test.js +2 -0
- package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseState.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.js +2 -0
- package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.js.map +7 -0
- package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +2 -0
- package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/device-session/utils/FramerUtils.js +2 -0
- package/lib/esm/src/internal/device-session/utils/FramerUtils.js.map +7 -0
- package/lib/esm/src/internal/device-session/utils/FramerUtils.test.js +2 -0
- package/lib/esm/src/internal/device-session/utils/FramerUtils.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/di/discoveryModule.js +2 -0
- package/lib/esm/src/internal/discovery/di/discoveryModule.js.map +7 -0
- package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +2 -0
- package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/di/discoveryTypes.js +2 -0
- package/lib/esm/src/internal/discovery/di/discoveryTypes.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.js.map +7 -0
- package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +2 -0
- package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/di/loggerModule.js +2 -0
- package/lib/esm/src/internal/logger-publisher/di/loggerModule.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js +2 -0
- package/lib/esm/src/internal/logger-publisher/di/loggerModule.test.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/di/loggerTypes.js +2 -0
- package/lib/esm/src/internal/logger-publisher/di/loggerTypes.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/model/LogPublisherOptions.js +1 -0
- package/lib/esm/src/internal/logger-publisher/model/LogPublisherOptions.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.js +2 -0
- package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js +2 -0
- package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/service/LoggerPublisherService.js +1 -0
- package/lib/esm/src/internal/logger-publisher/service/LoggerPublisherService.js.map +7 -0
- package/lib/esm/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js +2 -0
- package/lib/esm/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.js.map +7 -0
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +2 -0
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +7 -0
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +2 -0
- package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +7 -0
- package/lib/esm/src/internal/manager-api/data/ManagerApiDataSource.js +1 -0
- package/lib/esm/src/internal/manager-api/data/ManagerApiDataSource.js.map +7 -0
- package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js +2 -0
- package/lib/esm/src/internal/manager-api/data/ManagerApiDto.js.map +7 -0
- package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +2 -0
- package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +7 -0
- package/lib/esm/src/internal/manager-api/di/managerApiModule.js +2 -0
- package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +7 -0
- package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +2 -0
- package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +7 -0
- package/lib/esm/src/internal/manager-api/di/managerApiTypes.js +2 -0
- package/lib/esm/src/internal/manager-api/di/managerApiTypes.js.map +7 -0
- package/lib/esm/src/internal/manager-api/model/Const.js +2 -0
- package/lib/esm/src/internal/manager-api/model/Const.js.map +7 -0
- package/lib/esm/src/internal/manager-api/model/Errors.js +2 -0
- package/lib/esm/src/internal/manager-api/model/Errors.js.map +7 -0
- package/lib/esm/src/internal/manager-api/model/ManagerApiType.js +2 -0
- package/lib/esm/src/internal/manager-api/model/ManagerApiType.js.map +7 -0
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +2 -0
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +7 -0
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +2 -0
- package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +7 -0
- package/lib/esm/src/internal/manager-api/service/ManagerApiService.js +1 -0
- package/lib/esm/src/internal/manager-api/service/ManagerApiService.js.map +7 -0
- package/lib/esm/src/internal/send/di/sendModule.js +2 -0
- package/lib/esm/src/internal/send/di/sendModule.js.map +7 -0
- package/lib/esm/src/internal/send/di/sendModule.test.js +2 -0
- package/lib/esm/src/internal/send/di/sendModule.test.js.map +7 -0
- package/lib/esm/src/internal/send/di/sendTypes.js +2 -0
- package/lib/esm/src/internal/send/di/sendTypes.js.map +7 -0
- package/lib/esm/src/internal/send/use-case/SendApduUseCase.js +2 -0
- package/lib/esm/src/internal/send/use-case/SendApduUseCase.js.map +7 -0
- package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +2 -0
- package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/di/bleDiTypes.js +2 -0
- package/lib/esm/src/internal/transport/ble/di/bleDiTypes.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/di/bleModule.js +2 -0
- package/lib/esm/src/internal/transport/ble/di/bleModule.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/di/bleModule.test.js +2 -0
- package/lib/esm/src/internal/transport/ble/di/bleModule.test.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/model/BleDevice.stub.js +2 -0
- package/lib/esm/src/internal/transport/ble/model/BleDevice.stub.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/model/BleDeviceInfos.js +2 -0
- package/lib/esm/src/internal/transport/ble/model/BleDeviceInfos.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.js +2 -0
- package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js +2 -0
- package/lib/esm/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.js +2 -0
- package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.test.js +2 -0
- package/lib/esm/src/internal/transport/ble/transport/BleDeviceConnection.test.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.js +2 -0
- package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.test.js +2 -0
- package/lib/esm/src/internal/transport/ble/transport/WebBleTransport.test.js.map +7 -0
- package/lib/esm/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js +2 -0
- package/lib/esm/src/internal/transport/ble/transport/__mocks__/WebBleTransport.js.map +7 -0
- package/lib/esm/src/internal/transport/data/TransportDataSource.js +2 -0
- package/lib/esm/src/internal/transport/data/TransportDataSource.js.map +7 -0
- package/lib/esm/src/internal/transport/di/transportDiTypes.js +2 -0
- package/lib/esm/src/internal/transport/di/transportDiTypes.js.map +7 -0
- package/lib/esm/src/internal/transport/di/transportModule.js +2 -0
- package/lib/esm/src/internal/transport/di/transportModule.js.map +7 -0
- package/lib/esm/src/internal/transport/mockserver/MockserverTransport.js +2 -0
- package/lib/esm/src/internal/transport/mockserver/MockserverTransport.js.map +7 -0
- package/lib/esm/src/internal/transport/model/DeviceConnection.js +1 -0
- package/lib/esm/src/internal/transport/model/DeviceConnection.js.map +7 -0
- package/lib/esm/src/internal/transport/model/Errors.js +2 -0
- package/lib/esm/src/internal/transport/model/Errors.js.map +7 -0
- package/lib/esm/src/internal/transport/model/InternalConnectedDevice.js +2 -0
- package/lib/esm/src/internal/transport/model/InternalConnectedDevice.js.map +7 -0
- package/lib/esm/src/internal/transport/model/InternalConnectedDevice.stub.js +2 -0
- package/lib/esm/src/internal/transport/model/InternalConnectedDevice.stub.js.map +7 -0
- package/lib/esm/src/internal/transport/model/InternalConnectedDevice.test.js +2 -0
- package/lib/esm/src/internal/transport/model/InternalConnectedDevice.test.js.map +7 -0
- package/lib/esm/src/internal/transport/model/InternalDiscoveredDevice.js +1 -0
- package/lib/esm/src/internal/transport/model/InternalDiscoveredDevice.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/data/UsbHidConfig.js +2 -0
- package/lib/esm/src/internal/transport/usb/data/UsbHidConfig.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/di/usbDiTypes.js +2 -0
- package/lib/esm/src/internal/transport/usb/di/usbDiTypes.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/di/usbModule.js +2 -0
- package/lib/esm/src/internal/transport/usb/di/usbModule.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/di/usbModule.test.js +2 -0
- package/lib/esm/src/internal/transport/usb/di/usbModule.test.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/model/HIDDevice.stub.js +2 -0
- package/lib/esm/src/internal/transport/usb/model/HIDDevice.stub.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js +2 -0
- package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js +2 -0
- package/lib/esm/src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.stub.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.js +2 -0
- package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js +2 -0
- package/lib/esm/src/internal/transport/usb/transport/UsbHidDeviceConnection.test.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.js +2 -0
- package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.test.js +2 -0
- package/lib/esm/src/internal/transport/usb/transport/WebUsbHidTransport.test.js.map +7 -0
- package/lib/esm/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js +2 -0
- package/lib/esm/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.js.map +7 -0
- package/lib/types/src/api/{DeviceSdk.d.ts → DeviceManagementKit.d.ts} +38 -23
- package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -0
- package/lib/types/src/api/DeviceManagementKit.test.d.ts +2 -0
- package/lib/types/src/api/DeviceManagementKit.test.d.ts.map +1 -0
- package/lib/types/src/api/DeviceManagementKitBuilder.d.ts +35 -0
- package/lib/types/src/api/DeviceManagementKitBuilder.d.ts.map +1 -0
- package/lib/types/src/api/DeviceManagementKitBuilder.test.d.ts +2 -0
- package/lib/types/src/api/DeviceManagementKitBuilder.test.d.ts.map +1 -0
- package/lib/types/src/api/DmkConfig.d.ts +5 -0
- package/lib/types/src/api/DmkConfig.d.ts.map +1 -0
- package/lib/types/src/api/Error.d.ts +2 -2
- package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts +1 -1
- package/lib/types/src/api/apdu/utils/ApduBuilder.d.ts.map +1 -1
- package/lib/types/src/api/apdu/utils/ApduParser.d.ts +2 -2
- package/lib/types/src/api/apdu/utils/ApduParser.d.ts.map +1 -1
- package/lib/types/src/api/apdu/utils/AppBuilderError.d.ts +5 -5
- package/lib/types/src/api/apdu/utils/AppBuilderError.d.ts.map +1 -1
- package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts +1 -1
- package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
- package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts +1 -1
- package/lib/types/src/api/apdu/utils/ByteArrayParser.d.ts.map +1 -1
- package/lib/types/src/api/command/Command.d.ts +4 -4
- package/lib/types/src/api/command/Command.d.ts.map +1 -1
- package/lib/types/src/api/command/Errors.d.ts +6 -6
- package/lib/types/src/api/command/Errors.d.ts.map +1 -1
- package/lib/types/src/api/command/model/CommandResult.d.ts +3 -3
- package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
- package/lib/types/src/api/command/os/CloseAppCommand.d.ts +4 -4
- package/lib/types/src/api/command/os/CloseAppCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts +4 -4
- package/lib/types/src/api/command/os/GetAppAndVersionCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts +4 -4
- package/lib/types/src/api/command/os/GetBatteryStatusCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts +4 -4
- package/lib/types/src/api/command/os/GetOsVersionCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/ListAppsCommand.d.ts +5 -5
- package/lib/types/src/api/command/os/ListAppsCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/os/OpenAppCommand.d.ts +5 -5
- package/lib/types/src/api/command/os/OpenAppCommand.d.ts.map +1 -1
- package/lib/types/src/api/command/utils/CommandErrors.d.ts +1 -1
- package/lib/types/src/api/command/utils/CommandErrors.d.ts.map +1 -1
- package/lib/types/src/api/command/utils/CommandUtils.d.ts +1 -1
- package/lib/types/src/api/command/utils/CommandUtils.d.ts.map +1 -1
- package/lib/types/src/api/command/utils/GlobalCommandError.d.ts +4 -4
- package/lib/types/src/api/command/utils/GlobalCommandError.d.ts.map +1 -1
- package/lib/types/src/api/device-action/DeviceAction.d.ts +8 -8
- package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts +1 -1
- package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts +4 -4
- package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
- package/lib/types/src/api/device-action/__test-utils__/testDeviceActionStates.d.ts +4 -4
- package/lib/types/src/api/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/Errors.d.ts +4 -4
- package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts +5 -5
- package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/GetDeviceStatus/types.d.ts +6 -6
- package/lib/types/src/api/device-action/os/GetDeviceStatus/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts +5 -5
- package/lib/types/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts +5 -5
- package/lib/types/src/api/device-action/os/GoToDashboard/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/ListApps/ListAppsDeviceAction.d.ts +4 -4
- package/lib/types/src/api/device-action/os/ListApps/ListAppsDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/ListApps/types.d.ts +6 -6
- package/lib/types/src/api/device-action/os/ListApps/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts +9 -9
- package/lib/types/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/ListAppsWithMetadata/types.d.ts +8 -8
- package/lib/types/src/api/device-action/os/ListAppsWithMetadata/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts +7 -9
- package/lib/types/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts +7 -6
- package/lib/types/src/api/device-action/os/OpenAppDeviceAction/types.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts +6 -6
- package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts +3 -3
- package/lib/types/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/src/api/device-action/use-case/ExecuteDeviceActionUseCase.d.ts +3 -3
- package/lib/types/src/api/device-action/xstate-utils/StateMachineTypes.d.ts +1 -1
- package/lib/types/src/api/device-action/xstate-utils/StateMachineTypes.d.ts.map +1 -1
- package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts +6 -6
- package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
- package/lib/types/src/api/device-session/ApduResponse.stub.d.ts +1 -1
- package/lib/types/src/api/device-session/ApduResponse.stub.d.ts.map +1 -1
- package/lib/types/src/api/device-session/DeviceSessionState.d.ts +4 -4
- package/lib/types/src/api/device-session/DeviceSessionState.d.ts.map +1 -1
- package/lib/types/src/api/index.d.ts +3 -3
- package/lib/types/src/api/index.d.ts.map +1 -1
- package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts +2 -2
- package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts.map +1 -1
- package/lib/types/src/api/logger-subscriber/service/LoggerSubscriberService.d.ts +9 -4
- package/lib/types/src/api/logger-subscriber/service/LoggerSubscriberService.d.ts.map +1 -1
- package/lib/types/src/api/logger-subscriber/service/WebLogsExporterLogger.d.ts +2 -2
- package/lib/types/src/api/logger-subscriber/service/WebLogsExporterLogger.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/ConnectedDevice.d.ts +7 -4
- package/lib/types/src/api/transport/model/ConnectedDevice.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts +2 -2
- package/lib/types/src/api/transport/model/DiscoveredDevice.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/Transport.d.ts +10 -9
- package/lib/types/src/api/transport/model/Transport.d.ts.map +1 -1
- package/lib/types/src/api/transport/model/TransportIdentifier.d.ts +1 -0
- package/lib/types/src/api/transport/model/TransportIdentifier.d.ts.map +1 -1
- package/lib/types/src/api/types.d.ts +1 -1
- package/lib/types/src/api/types.d.ts.map +1 -1
- package/lib/types/src/di.d.ts +5 -5
- package/lib/types/src/di.d.ts.map +1 -1
- package/lib/types/src/internal/config/data/ConfigDataSource.d.ts +3 -3
- package/lib/types/src/internal/config/data/ConfigDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/config/data/__mocks__/LocalConfigDataSource.d.ts +1 -1
- package/lib/types/src/internal/config/data/__mocks__/LocalConfigDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/config/data/__mocks__/RemoteConfigDataSource.d.ts +1 -1
- package/lib/types/src/internal/config/data/__mocks__/RemoteConfigDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/config/di/configTypes.d.ts +1 -1
- package/lib/types/src/internal/config/service/ConfigService.d.ts +2 -2
- package/lib/types/src/internal/config/service/ConfigService.d.ts.map +1 -1
- package/lib/types/src/internal/config/service/DefaultConfigService.d.ts +1 -1
- package/lib/types/src/internal/config/use-case/GetDmkVersionUseCase.d.ts +12 -0
- package/lib/types/src/internal/config/use-case/{GetSdkVersionUseCase.d.ts.map → GetDmkVersionUseCase.d.ts.map} +1 -1
- package/lib/types/src/internal/config/use-case/GetDmkVersionUseCase.test.d.ts +2 -0
- package/lib/types/src/internal/config/use-case/GetDmkVersionUseCase.test.d.ts.map +1 -0
- package/lib/types/src/internal/device-model/data/DeviceModelDataSource.d.ts +5 -2
- package/lib/types/src/internal/device-model/data/DeviceModelDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/device-model/data/StaticDeviceModelDataSource.d.ts +3 -0
- package/lib/types/src/internal/device-model/data/StaticDeviceModelDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/device-model/model/DeviceModel.stub.d.ts +1 -1
- package/lib/types/src/internal/device-model/model/DeviceModel.stub.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/data/DeviceSessionRefresherConst.d.ts +2 -0
- package/lib/types/src/internal/device-session/data/DeviceSessionRefresherConst.d.ts.map +1 -0
- package/lib/types/src/internal/device-session/di/deviceSessionModule.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts +0 -1
- package/lib/types/src/internal/device-session/di/deviceSessionTypes.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +11 -11
- package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts +2 -2
- package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts +28 -4
- package/lib/types/src/internal/device-session/model/DeviceSessionRefresher.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/Errors.d.ts +6 -6
- package/lib/types/src/internal/device-session/model/Errors.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/Frame.d.ts +1 -1
- package/lib/types/src/internal/device-session/model/Frame.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/model/FrameHeader.d.ts +1 -1
- package/lib/types/src/internal/device-session/model/FrameHeader.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/ApduReceiverService.d.ts +4 -4
- package/lib/types/src/internal/device-session/service/ApduReceiverService.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/ApduSenderService.d.ts +1 -1
- package/lib/types/src/internal/device-session/service/ApduSenderService.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.stub.d.ts +3 -3
- package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.stub.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/DefaultApduSenderService.stub.d.ts +3 -3
- package/lib/types/src/internal/device-session/service/DefaultApduSenderService.stub.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts +4 -1
- package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts +7 -5
- package/lib/types/src/internal/device-session/service/DeviceSessionService.d.ts.map +1 -1
- package/lib/types/src/internal/device-session/use-case/CloseSessionsUseState.test.d.ts +2 -0
- package/lib/types/src/internal/device-session/use-case/CloseSessionsUseState.test.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/di/discoveryModule.d.ts.map +1 -1
- package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts +3 -0
- package/lib/types/src/internal/discovery/di/discoveryTypes.d.ts.map +1 -1
- package/lib/types/src/internal/discovery/use-case/DisconnectUseCase.d.ts +1 -1
- package/lib/types/src/internal/discovery/use-case/GetConnectedDeviceUseCase.d.ts.map +1 -1
- package/lib/types/src/internal/{device-session/use-case/ListDeviceSessionsUseCase.d.ts → discovery/use-case/ListConnectedDevicesUseCase.d.ts} +5 -5
- package/lib/types/src/internal/discovery/use-case/ListConnectedDevicesUseCase.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.d.ts +2 -0
- package/lib/types/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.d.ts +14 -0
- package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.d.ts +2 -0
- package/lib/types/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.d.ts +13 -0
- package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.d.ts.map +1 -0
- package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.d.ts +2 -0
- package/lib/types/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.d.ts.map +1 -0
- package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts +1 -1
- package/lib/types/src/internal/logger-publisher/di/loggerModule.d.ts.map +1 -1
- package/lib/types/src/internal/logger-publisher/service/LoggerPublisherService.d.ts +2 -2
- package/lib/types/src/internal/logger-publisher/service/LoggerPublisherService.d.ts.map +1 -1
- package/lib/types/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.d.ts +1 -1
- package/lib/types/src/internal/logger-publisher/service/__mocks__/DefaultLoggerService.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +2 -2
- package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +3 -3
- package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +1 -1
- package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts +2 -2
- package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts +1 -1
- package/lib/types/src/internal/manager-api/model/Errors.d.ts +2 -2
- package/lib/types/src/internal/manager-api/model/Errors.d.ts.map +1 -1
- package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts +4 -4
- package/lib/types/src/internal/manager-api/service/ManagerApiService.d.ts.map +1 -1
- package/lib/types/src/internal/send/use-case/SendApduUseCase.d.ts +1 -1
- package/lib/types/src/internal/transport/ble/di/bleDiTypes.d.ts +4 -0
- package/lib/types/src/internal/transport/ble/di/bleDiTypes.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/di/bleModule.d.ts +3 -0
- package/lib/types/src/internal/transport/ble/di/bleModule.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/di/bleModule.test.d.ts +2 -0
- package/lib/types/src/internal/transport/ble/di/bleModule.test.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/model/BleDevice.stub.d.ts +3 -0
- package/lib/types/src/internal/transport/ble/model/BleDevice.stub.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/model/BleDeviceInfos.d.ts +10 -0
- package/lib/types/src/internal/transport/ble/model/BleDeviceInfos.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.d.ts +13 -0
- package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.d.ts +3 -0
- package/lib/types/src/internal/transport/ble/service/BleDeviceConnectionFactory.stub.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.d.ts +104 -0
- package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.test.d.ts +2 -0
- package/lib/types/src/internal/transport/ble/transport/BleDeviceConnection.test.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/transport/WebBleTransport.d.ts +97 -0
- package/lib/types/src/internal/transport/ble/transport/WebBleTransport.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/transport/WebBleTransport.test.d.ts +2 -0
- package/lib/types/src/internal/transport/ble/transport/WebBleTransport.test.d.ts.map +1 -0
- package/lib/types/src/internal/transport/ble/transport/__mocks__/WebBleTransport.d.ts +14 -0
- package/lib/types/src/internal/transport/ble/transport/__mocks__/WebBleTransport.d.ts.map +1 -0
- package/lib/types/src/internal/transport/data/TransportDataSource.d.ts +2 -2
- package/lib/types/src/internal/transport/data/TransportDataSource.d.ts.map +1 -1
- package/lib/types/src/internal/transport/di/transportDiTypes.d.ts +1 -1
- package/lib/types/src/internal/transport/di/transportModule.d.ts +4 -4
- package/lib/types/src/internal/transport/di/transportModule.d.ts.map +1 -1
- package/lib/types/src/internal/transport/mockserver/MockserverTransport.d.ts +6 -5
- package/lib/types/src/internal/transport/mockserver/MockserverTransport.d.ts.map +1 -1
- package/lib/types/src/internal/transport/model/DeviceConnection.d.ts +5 -5
- package/lib/types/src/internal/transport/model/DeviceConnection.d.ts.map +1 -1
- package/lib/types/src/internal/transport/model/Errors.d.ts +34 -14
- package/lib/types/src/internal/transport/model/Errors.d.ts.map +1 -1
- package/lib/types/src/internal/transport/model/InternalConnectedDevice.d.ts +5 -5
- package/lib/types/src/internal/transport/model/InternalConnectedDevice.d.ts.map +1 -1
- package/lib/types/src/internal/transport/model/InternalConnectedDevice.stub.d.ts +1 -1
- package/lib/types/src/internal/transport/model/InternalConnectedDevice.stub.d.ts.map +1 -1
- package/lib/types/src/internal/transport/model/InternalDiscoveredDevice.d.ts +3 -3
- package/lib/types/src/internal/transport/model/InternalDiscoveredDevice.d.ts.map +1 -1
- package/lib/types/src/internal/transport/usb/transport/UsbHidDeviceConnection.d.ts +2 -2
- package/lib/types/src/internal/transport/usb/transport/WebUsbHidTransport.d.ts +27 -33
- package/lib/types/src/internal/transport/usb/transport/WebUsbHidTransport.d.ts.map +1 -1
- package/lib/types/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.d.ts +2 -1
- package/lib/types/src/internal/transport/usb/transport/__mocks__/WebUsbHidTransport.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +17 -13
- package/lib/types/src/api/DeviceSdk.d.ts.map +0 -1
- package/lib/types/src/api/DeviceSdk.test.d.ts +0 -2
- package/lib/types/src/api/DeviceSdk.test.d.ts.map +0 -1
- package/lib/types/src/api/DeviceSdkBuilder.d.ts +0 -35
- package/lib/types/src/api/DeviceSdkBuilder.d.ts.map +0 -1
- package/lib/types/src/api/DeviceSdkBuilder.test.d.ts +0 -2
- package/lib/types/src/api/DeviceSdkBuilder.test.d.ts.map +0 -1
- package/lib/types/src/api/SdkConfig.d.ts +0 -5
- package/lib/types/src/api/SdkConfig.d.ts.map +0 -1
- package/lib/types/src/internal/config/use-case/GetSdkVersionUseCase.d.ts +0 -12
- package/lib/types/src/internal/config/use-case/GetSdkVersionUseCase.test.d.ts +0 -2
- package/lib/types/src/internal/config/use-case/GetSdkVersionUseCase.test.d.ts.map +0 -1
- package/lib/types/src/internal/device-session/use-case/ListDeviceSessionsUseCase.d.ts.map +0 -1
- package/lib/types/src/internal/device-session/use-case/ListDeviceSessionsUseCase.test.d.ts +0 -2
- package/lib/types/src/internal/device-session/use-case/ListDeviceSessionsUseCase.test.d.ts.map +0 -1
package/lib/esm/index.js.map
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"sources": ["../../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/internal/constants.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/internal/debug.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/internal/re.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/internal/parse-options.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/internal/identifiers.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/classes/semver.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/parse.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/valid.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/clean.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/inc.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/diff.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/major.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/minor.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/patch.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/prerelease.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/compare.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/rcompare.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/compare-loose.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/compare-build.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/sort.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/rsort.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/gt.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/lt.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/eq.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/neq.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/gte.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/lte.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/cmp.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/coerce.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/internal/lrucache.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/classes/range.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/classes/comparator.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/functions/satisfies.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/to-comparators.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/max-satisfying.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/min-satisfying.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/min-version.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/valid.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/outside.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/gtr.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/ltr.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/intersects.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/simplify.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/ranges/subset.js", "../../../../node_modules/.pnpm/semver@7.6.3/node_modules/semver/index.js", "../../../../node_modules/.pnpm/xstate@5.18.2/node_modules/xstate/dev/dist/xstate-dev.esm.js", "../../../../node_modules/.pnpm/xstate@5.18.2/node_modules/xstate/dist/raise-0f7cf128.esm.js", "../../../../node_modules/.pnpm/xstate@5.18.2/node_modules/xstate/actors/dist/xstate-actors.esm.js", "../../../../node_modules/.pnpm/xstate@5.18.2/node_modules/xstate/dist/log-15d0f775.esm.js", "../../../../node_modules/.pnpm/xstate@5.18.2/node_modules/xstate/dist/xstate.esm.js", "../../../../node_modules/.pnpm/fast-safe-stringify@2.1.1/node_modules/fast-safe-stringify/index.js", "../../../../node_modules/.pnpm/safe-stable-stringify@2.4.3/node_modules/safe-stable-stringify/index.js", "../../../../node_modules/.pnpm/partysocket@0.0.25/node_modules/partysocket/dist/index.js", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/double-indexed-kv.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/registry.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/class-registry.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/util.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/custom-transformer-registry.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/is.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/pathstringifier.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/transformer.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/accessDeep.ts", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/plainer.ts", "../../../../node_modules/.pnpm/is-what@4.1.16/node_modules/is-what/dist/cjs/index.cjs", "../../../../node_modules/.pnpm/copy-anything@3.0.5/node_modules/copy-anything/dist/cjs/index.cjs", "../../../../node_modules/.pnpm/superjson@1.13.3/node_modules/superjson/src/index.ts", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/rng.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/regex.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/validate.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/stringify.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/v1.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/parse.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/v35.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/md5.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/v3.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/native.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/v4.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/sha1.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/v5.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/nil.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/version.js", "../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/commonjs-browser/index.js", "../../../../node_modules/.pnpm/isomorphic-ws@5.0.0_ws@8.17.1/node_modules/isomorphic-ws/browser.js", "../../../../node_modules/.pnpm/@statelyai+inspect@0.4.0_ws@8.17.1_xstate@5.18.2/node_modules/@statelyai/inspect/dist/index.js", "../../src/index.ts", "../../src/api/apdu/model/Apdu.ts", "../../src/api/utils/HexaString.ts", "../../src/api/apdu/utils/AppBuilderError.ts", "../../src/api/apdu/utils/ByteArrayBuilder.ts", "../../src/api/apdu/utils/ApduBuilder.ts", "../../src/api/apdu/utils/ByteArrayParser.ts", "../../src/api/apdu/utils/ApduParser.ts", "../../src/api/command/model/CommandResult.ts", "../../src/api/command/utils/CommandUtils.ts", "../../src/api/Error.ts", "../../src/api/command/utils/CommandErrors.ts", "../../src/api/command/utils/GlobalCommandError.ts", "../../src/api/command/os/CloseAppCommand.ts", "../../src/api/command/Errors.ts", "../../src/api/command/os/GetAppAndVersionCommand.ts", "../../src/api/command/os/GetBatteryStatusCommand.ts", "../../src/api/device/DeviceModel.ts", "../../src/api/command/os/GetOsVersionCommand.ts", "../../src/api/command/os/ListAppsCommand.ts", "../../src/api/command/os/OpenAppCommand.ts", "../../src/api/device/DeviceStatus.ts", "../../src/api/device-session/ApduResponse.ts", "../../src/api/command/di/commandTypes.ts", "../../src/internal/config/di/configTypes.ts", "../../src/internal/device-session/di/deviceSessionTypes.ts", "../../src/internal/discovery/di/discoveryTypes.ts", "../../src/internal/send/di/sendTypes.ts", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/constants/metadata_keys.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/constants/literal_types.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/id.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/bindings/binding.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/constants/error_msgs.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/metadata_reader.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/bindings/binding_count.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/exceptions.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/serialization.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/context.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/metadata.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/plan.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/annotation/lazy_service_identifier.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/queryable_string.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/target.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/reflection_utils.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/request.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/planning/planner.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/async.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/scope/scope.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/factory_type.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/binding_utils.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/resolution/instantiation.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/resolution/resolver.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/constraint_helpers.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/binding_when_syntax.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/binding_on_syntax.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/binding_when_on_syntax.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/binding_in_syntax.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/binding_in_when_on_syntax.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/syntax/binding_to_syntax.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/container/container_snapshot.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/clonable.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/container/lookup.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/container/module_activation_store.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/container/container.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/container/container_module.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/utils/js.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/annotation/decorator_utils.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/annotation/injectable.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/annotation/inject_base.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/annotation/inject.js", "../../../../node_modules/.pnpm/inversify@6.0.2/node_modules/inversify/es/annotation/multi_inject.js", "../../src/internal/logger-publisher/di/loggerTypes.ts", "../../src/api/command/use-case/SendCommandUseCase.ts", "../../src/di.stub.ts", "../../src/api/command/di/commandModule.ts", "../../src/api/device-action/use-case/ExecuteDeviceActionUseCase.ts", "../../src/api/device-action/di/deviceActionTypes.ts", "../../src/api/device-action/di/deviceActionModule.ts", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/Maybe.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/Either.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/Function.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/NonEmptyList.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/Codec.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/Tuple.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/EitherAsync.js", "../../../../node_modules/.pnpm/purify-ts@2.1.0/node_modules/purify-ts/esm/MaybeAsync.js", "../../src/internal/config/model/Config.ts", "../../src/internal/config/model/Errors.ts", "../../package.json", "../../src/internal/config/data/LocalConfigDataSource.ts", "../../src/internal/config/data/LocalConfigDataSource.stub.ts", "../../src/internal/config/data/RemoteConfigDataSource.ts", "../../src/internal/config/data/RemoteConfigDataSource.stub.ts", "../../src/internal/config/service/DefaultConfigService.ts", "../../src/internal/config/use-case/GetSdkVersionUseCase.ts", "../../src/internal/config/di/configModule.ts", "../../src/internal/device-model/model/DeviceModel.ts", "../../src/internal/device-model/data/StaticDeviceModelDataSource.ts", "../../src/internal/device-model/di/deviceModelTypes.ts", "../../src/internal/device-model/di/deviceModelModule.ts", "../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/stringify.js", "../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/rng.js", "../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/native.js", "../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/v4.js", "../../src/internal/device-session/data/ApduResponseConst.ts", "../../src/internal/device-session/data/FramerConst.ts", "../../src/internal/device-session/model/Errors.ts", "../../src/internal/device-session/model/Frame.ts", "../../src/internal/device-session/utils/FramerUtils.ts", "../../src/internal/device-session/model/FrameHeader.ts", "../../src/internal/device-session/service/DefaultApduReceiverService.ts", "../../src/internal/device-session/service/DefaultApduSenderService.ts", "../../src/internal/device-session/service/DefaultDeviceSessionService.ts", "../../src/internal/device-session/use-case/CloseSessionsUseCase.ts", "../../src/internal/device-session/use-case/GetDeviceSessionStateUseCase.ts", "../../src/internal/device-session/use-case/ListDeviceSessionsUseCase.ts", "../../src/internal/device-session/di/deviceSessionModule.ts", "../../../../node_modules/.pnpm/tslib@2.7.0/node_modules/tslib/tslib.es6.mjs", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isFunction.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/createErrorClass.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/arrRemove.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/Subscription.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/config.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/noop.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/NotificationFactories.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/errorContext.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/Subscriber.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/symbol/observable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/identity.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/pipe.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/Observable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/lift.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/Subject.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/BehaviorSubject.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/ReplaySubject.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/Action.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/Scheduler.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduler/async.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isScheduler.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/args.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isArrayLike.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isPromise.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isInteropObservable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/symbol/iterator.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isIterable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/observable/innerFrom.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/executeSchedule.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/observeOn.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/subscribeOn.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/scheduled/scheduled.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/observable/from.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/observable/of.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/util/isDate.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/timeout.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/map.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/mergeInternals.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/mergeMap.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/observable/timer.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/observable/interval.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/filter.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/share.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/switchMap.ts", "../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/src/internal/operators/tap.ts", "../../src/api/device-session/DeviceSessionState.ts", "../../src/internal/device-session/model/DeviceSessionRefresher.ts", "../../src/internal/device-session/model/DeviceSession.ts", "../../src/internal/manager-api/di/managerApiTypes.ts", "../../src/internal/transport/di/transportDiTypes.ts", "../../src/internal/transport/model/Errors.ts", "../../src/internal/discovery/use-case/ConnectUseCase.ts", "../../src/internal/discovery/use-case/DisconnectUseCase.ts", "../../src/api/transport/model/ConnectedDevice.ts", "../../src/internal/discovery/use-case/GetConnectedDeviceUseCase.ts", "../../src/internal/discovery/use-case/StartDiscoveringUseCase.ts", "../../src/internal/discovery/use-case/StopDiscoveringUseCase.ts", "../../src/internal/discovery/di/discoveryModule.ts", "../../src/api/logger-subscriber/model/LogLevel.ts", "../../src/internal/logger-publisher/service/DefaultLoggerPublisherService.ts", "../../src/internal/logger-publisher/di/loggerModule.ts", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/bind.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/utils.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/AxiosError.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/null.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/toFormData.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/buildURL.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/InterceptorManager.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/defaults/transitional.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/platform/browser/index.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/platform/common/utils.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/platform/index.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/formDataToJSON.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/defaults/index.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/parseHeaders.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/AxiosHeaders.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/transformData.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/cancel/isCancel.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/cancel/CanceledError.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/settle.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/parseProtocol.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/speedometer.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/throttle.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/progressEventReducer.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/cookies.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/combineURLs.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/buildFullPath.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/mergeConfig.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/resolveConfig.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/adapters/xhr.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/composeSignals.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/trackStream.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/adapters/fetch.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/adapters/adapters.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/dispatchRequest.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/env/data.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/validator.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/core/Axios.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/cancel/CancelToken.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/spread.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/isAxiosError.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/helpers/HttpStatusCode.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/lib/axios.js", "../../../../node_modules/.pnpm/axios@1.7.7/node_modules/axios/index.js", "../../src/internal/manager-api/model/Errors.ts", "../../src/internal/manager-api/data/AxiosManagerApiDataSource.ts", "../../src/internal/manager-api/service/DefaultManagerApiService.ts", "../../src/internal/manager-api/di/managerApiModule.ts", "../../src/internal/manager-api/model/Const.ts", "../../src/internal/send/use-case/SendApduUseCase.ts", "../../src/internal/send/di/sendModule.ts", "../../src/api/transport/model/TransportIdentifier.ts", "../../../transport-mock/src/service/ConnectivityService.ts", "../../../transport-mock/src/service/DiscoveryService.ts", "../../../transport-mock/src/service/MockService.ts", "../../../transport-mock/src/service/SendService.ts", "../../../transport-mock/src/DefaultHttpClient.ts", "../../../transport-mock/src/MockClient.ts", "../../../transport-mock/src/model/CommandResponse.ts", "../../../transport-mock/src/model/Device.ts", "../../../transport-mock/src/model/Mock.ts", "../../../transport-mock/src/model/Session.ts", "../../src/internal/transport/mockserver/MockserverTransport.ts", "../../../../node_modules/.pnpm/tslib@1.14.1/node_modules/tslib/tslib.es6.js", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/env.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/node.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/global.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/is.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/flags.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/logger.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/object.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/misc.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/syncpromise.ts", "../../../../node_modules/.pnpm/@sentry+utils@6.19.7/node_modules/@sentry/src/time.ts", "../../../../node_modules/.pnpm/@sentry+hub@6.19.7/node_modules/@sentry/src/scope.ts", "../../../../node_modules/.pnpm/@sentry+hub@6.19.7/node_modules/@sentry/src/session.ts", "../../../../node_modules/.pnpm/@sentry+hub@6.19.7/node_modules/@sentry/src/flags.ts", "../../../../node_modules/.pnpm/@sentry+hub@6.19.7/node_modules/@sentry/src/hub.ts", "../../../../node_modules/.pnpm/@sentry+minimal@6.19.7/node_modules/@sentry/src/index.ts", "../../src/internal/transport/model/InternalConnectedDevice.ts", "../../src/internal/transport/usb/data/UsbHidConfig.ts", "../../src/internal/transport/usb/di/usbDiTypes.ts", "../../src/internal/transport/usb/transport/WebUsbHidTransport.ts", "../../src/internal/transport/data/TransportDataSource.ts", "../../src/internal/transport/di/transportModule.ts", "../../src/internal/transport/usb/transport/UsbHidDeviceConnection.ts", "../../src/internal/transport/usb/service/UsbHidDeviceConnectionFactory.ts", "../../src/internal/transport/usb/di/usbModule.ts", "../../src/di.ts", "../../src/api/DeviceSdk.ts", "../../src/api/DeviceSdkBuilder.ts", "../../src/api/logger-subscriber/service/ConsoleLogger.ts", "../../src/api/logger-subscriber/service/WebLogsExporterLogger.ts", "../../src/api/device-action/model/DeviceActionState.ts", "../../src/api/device-action/model/UserInteractionRequired.ts", "../../src/api/device-action/os/Errors.ts", "../../src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.ts", "../../src/api/device-action/os/Const.ts", "../../src/api/device-action/xstate-utils/XStateDeviceAction.ts", "../../src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.ts", "../../src/api/device-action/os/ListApps/ListAppsDeviceAction.ts", "../../src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.ts", "../../src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.ts", "../../src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.ts", "../../src/api/utils/Base64String.ts"],
|
4
|
-
"sourcesContent": ["/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 \u00A7 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n}\nfunction getDevTools() {\n const w = getGlobal();\n if (!!w.__xstate__) {\n return w.__xstate__;\n }\n return undefined;\n}\nfunction registerService(service) {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n}\nconst devToolsAdapter = service => {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n};\n\nexport { devToolsAdapter, getGlobal, registerService };\n", "import { devToolsAdapter } from '../dev/dist/xstate-dev.esm.js';\n\nclass Mailbox {\n constructor(_process) {\n this._process = _process;\n this._active = false;\n this._current = null;\n this._last = null;\n }\n start() {\n this._active = true;\n this.flush();\n }\n clear() {\n // we can't set _current to null because we might be currently processing\n // and enqueue following clear shouldnt start processing the enqueued item immediately\n if (this._current) {\n this._current.next = null;\n this._last = this._current;\n }\n }\n enqueue(event) {\n const enqueued = {\n value: event,\n next: null\n };\n if (this._current) {\n this._last.next = enqueued;\n this._last = enqueued;\n return;\n }\n this._current = enqueued;\n this._last = enqueued;\n if (this._active) {\n this.flush();\n }\n }\n flush() {\n while (this._current) {\n // atm the given _process is responsible for implementing proper try/catch handling\n // we assume here that this won't throw in a way that can affect this mailbox\n const consumed = this._current;\n this._process(consumed.value);\n this._current = consumed.next;\n }\n this._last = null;\n }\n}\n\nconst STATE_DELIMITER = '.';\nconst TARGETLESS_KEY = '';\nconst NULL_EVENT = '';\nconst STATE_IDENTIFIER = '#';\nconst WILDCARD = '*';\nconst XSTATE_INIT = 'xstate.init';\nconst XSTATE_ERROR = 'xstate.error';\nconst XSTATE_STOP = 'xstate.stop';\n\n/**\n * Returns an event that represents an implicit event that is sent after the\n * specified `delay`.\n *\n * @param delayRef The delay in milliseconds\n * @param id The state node ID where this event is handled\n */\nfunction createAfterEvent(delayRef, id) {\n return {\n type: `xstate.after.${delayRef}.${id}`\n };\n}\n\n/**\n * Returns an event that represents that a final state node has been reached in\n * the parent state node.\n *\n * @param id The final state node's parent state node `id`\n * @param output The data to pass into the event\n */\nfunction createDoneStateEvent(id, output) {\n return {\n type: `xstate.done.state.${id}`,\n output\n };\n}\n\n/**\n * Returns an event that represents that an invoked service has terminated.\n *\n * An invoked service is terminated when it has reached a top-level final state\n * node, but not when it is canceled.\n *\n * @param invokeId The invoked service ID\n * @param output The data to pass into the event\n */\nfunction createDoneActorEvent(invokeId, output) {\n return {\n type: `xstate.done.actor.${invokeId}`,\n output,\n actorId: invokeId\n };\n}\nfunction createErrorActorEvent(id, error) {\n return {\n type: `xstate.error.actor.${id}`,\n error,\n actorId: id\n };\n}\nfunction createInitEvent(input) {\n return {\n type: XSTATE_INIT,\n input\n };\n}\n\n/**\n * This function makes sure that unhandled errors are thrown in a separate\n * macrotask. It allows those errors to be detected by global error handlers and\n * reported to bug tracking services without interrupting our own stack of\n * execution.\n *\n * @param err Error to be thrown\n */\nfunction reportUnhandledError(err) {\n setTimeout(() => {\n throw err;\n });\n}\n\nconst symbolObservable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n\nfunction matchesState(parentStateId, childStateId) {\n const parentStateValue = toStateValue(parentStateId);\n const childStateValue = toStateValue(childStateId);\n if (typeof childStateValue === 'string') {\n if (typeof parentStateValue === 'string') {\n return childStateValue === parentStateValue;\n }\n\n // Parent more specific than child\n return false;\n }\n if (typeof parentStateValue === 'string') {\n return parentStateValue in childStateValue;\n }\n return Object.keys(parentStateValue).every(key => {\n if (!(key in childStateValue)) {\n return false;\n }\n return matchesState(parentStateValue[key], childStateValue[key]);\n });\n}\nfunction toStatePath(stateId) {\n if (isArray(stateId)) {\n return stateId;\n }\n let result = [];\n let segment = '';\n for (let i = 0; i < stateId.length; i++) {\n const char = stateId.charCodeAt(i);\n switch (char) {\n // \\\n case 92:\n // consume the next character\n segment += stateId[i + 1];\n // and skip over it\n i++;\n continue;\n // .\n case 46:\n result.push(segment);\n segment = '';\n continue;\n }\n segment += stateId[i];\n }\n result.push(segment);\n return result;\n}\nfunction toStateValue(stateValue) {\n if (isMachineSnapshot(stateValue)) {\n return stateValue.value;\n }\n if (typeof stateValue !== 'string') {\n return stateValue;\n }\n const statePath = toStatePath(stateValue);\n return pathToStateValue(statePath);\n}\nfunction pathToStateValue(statePath) {\n if (statePath.length === 1) {\n return statePath[0];\n }\n const value = {};\n let marker = value;\n for (let i = 0; i < statePath.length - 1; i++) {\n if (i === statePath.length - 2) {\n marker[statePath[i]] = statePath[i + 1];\n } else {\n const previous = marker;\n marker = {};\n previous[statePath[i]] = marker;\n }\n }\n return value;\n}\nfunction mapValues(collection, iteratee) {\n const result = {};\n const collectionKeys = Object.keys(collection);\n for (let i = 0; i < collectionKeys.length; i++) {\n const key = collectionKeys[i];\n result[key] = iteratee(collection[key], key, collection, i);\n }\n return result;\n}\nfunction toArrayStrict(value) {\n if (isArray(value)) {\n return value;\n }\n return [value];\n}\nfunction toArray(value) {\n if (value === undefined) {\n return [];\n }\n return toArrayStrict(value);\n}\nfunction resolveOutput(mapper, context, event, self) {\n if (typeof mapper === 'function') {\n return mapper({\n context,\n event,\n self\n });\n }\n return mapper;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isErrorActorEvent(event) {\n return event.type.startsWith('xstate.error.actor');\n}\nfunction toTransitionConfigArray(configLike) {\n return toArrayStrict(configLike).map(transitionLike => {\n if (typeof transitionLike === 'undefined' || typeof transitionLike === 'string') {\n return {\n target: transitionLike\n };\n }\n return transitionLike;\n });\n}\nfunction normalizeTarget(target) {\n if (target === undefined || target === TARGETLESS_KEY) {\n return undefined;\n }\n return toArray(target);\n}\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === 'object';\n const self = isObserver ? nextHandler : undefined;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n };\n}\nfunction createInvokeId(stateNodeId, index) {\n return `${index}.${stateNodeId}`;\n}\nfunction resolveReferencedActor(machine, src) {\n const match = src.match(/^xstate\\.invoke\\.(\\d+)\\.(.*)/);\n if (!match) {\n return machine.implementations.actors[src];\n }\n const [, indexStr, nodeId] = match;\n const node = machine.getStateNodeById(nodeId);\n const invokeConfig = node.config.invoke;\n return (Array.isArray(invokeConfig) ? invokeConfig[indexStr] : invokeConfig).src;\n}\nfunction getAllOwnEventDescriptors(snapshot) {\n return [...new Set([...snapshot._nodes.flatMap(sn => sn.ownEvents)])];\n}\n\nfunction createScheduledEventId(actorRef, id) {\n return `${actorRef.sessionId}.${id}`;\n}\nlet idCounter = 0;\nfunction createSystem(rootActor, options) {\n const children = new Map();\n const keyedActors = new Map();\n const reverseKeyedActors = new WeakMap();\n const inspectionObservers = new Set();\n const timerMap = {};\n const {\n clock,\n logger\n } = options;\n const scheduler = {\n schedule: (source, target, event, delay, id = Math.random().toString(36).slice(2)) => {\n const scheduledEvent = {\n source,\n target,\n event,\n delay,\n id,\n startedAt: Date.now()\n };\n const scheduledEventId = createScheduledEventId(source, id);\n system._snapshot._scheduledEvents[scheduledEventId] = scheduledEvent;\n const timeout = clock.setTimeout(() => {\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n system._relay(source, target, event);\n }, delay);\n timerMap[scheduledEventId] = timeout;\n },\n cancel: (source, id) => {\n const scheduledEventId = createScheduledEventId(source, id);\n const timeout = timerMap[scheduledEventId];\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n if (timeout !== undefined) {\n clock.clearTimeout(timeout);\n }\n },\n cancelAll: actorRef => {\n for (const scheduledEventId in system._snapshot._scheduledEvents) {\n const scheduledEvent = system._snapshot._scheduledEvents[scheduledEventId];\n if (scheduledEvent.source === actorRef) {\n scheduler.cancel(actorRef, scheduledEvent.id);\n }\n }\n }\n };\n const sendInspectionEvent = event => {\n if (!inspectionObservers.size) {\n return;\n }\n const resolvedInspectionEvent = {\n ...event,\n rootId: rootActor.sessionId\n };\n inspectionObservers.forEach(observer => observer.next?.(resolvedInspectionEvent));\n };\n const system = {\n _snapshot: {\n _scheduledEvents: (options?.snapshot && options.snapshot.scheduler) ?? {}\n },\n _bookId: () => `x:${idCounter++}`,\n _register: (sessionId, actorRef) => {\n children.set(sessionId, actorRef);\n return sessionId;\n },\n _unregister: actorRef => {\n children.delete(actorRef.sessionId);\n const systemId = reverseKeyedActors.get(actorRef);\n if (systemId !== undefined) {\n keyedActors.delete(systemId);\n reverseKeyedActors.delete(actorRef);\n }\n },\n get: systemId => {\n return keyedActors.get(systemId);\n },\n _set: (systemId, actorRef) => {\n const existing = keyedActors.get(systemId);\n if (existing && existing !== actorRef) {\n throw new Error(`Actor with system ID '${systemId}' already exists.`);\n }\n keyedActors.set(systemId, actorRef);\n reverseKeyedActors.set(actorRef, systemId);\n },\n inspect: observerOrFn => {\n const observer = toObserver(observerOrFn);\n inspectionObservers.add(observer);\n return {\n unsubscribe() {\n inspectionObservers.delete(observer);\n }\n };\n },\n _sendInspectionEvent: sendInspectionEvent,\n _relay: (source, target, event) => {\n system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: source,\n actorRef: target,\n event\n });\n target._send(event);\n },\n scheduler,\n getSnapshot: () => {\n return {\n _scheduledEvents: {\n ...system._snapshot._scheduledEvents\n }\n };\n },\n start: () => {\n const scheduledEvents = system._snapshot._scheduledEvents;\n system._snapshot._scheduledEvents = {};\n for (const scheduledId in scheduledEvents) {\n const {\n source,\n target,\n event,\n delay,\n id\n } = scheduledEvents[scheduledId];\n scheduler.schedule(source, target, event, delay, id);\n }\n },\n _clock: clock,\n _logger: logger\n };\n return system;\n}\n\nconst $$ACTOR_TYPE = 1;\n\n// those values are currently used by @xstate/react directly so it's important to keep the assigned values in sync\nlet ProcessingStatus = /*#__PURE__*/function (ProcessingStatus) {\n ProcessingStatus[ProcessingStatus[\"NotStarted\"] = 0] = \"NotStarted\";\n ProcessingStatus[ProcessingStatus[\"Running\"] = 1] = \"Running\";\n ProcessingStatus[ProcessingStatus[\"Stopped\"] = 2] = \"Stopped\";\n return ProcessingStatus;\n}({});\nconst defaultOptions = {\n clock: {\n setTimeout: (fn, ms) => {\n return setTimeout(fn, ms);\n },\n clearTimeout: id => {\n return clearTimeout(id);\n }\n },\n logger: console.log.bind(console),\n devTools: false\n};\n\n/**\n * An Actor is a running process that can receive events, send events and change\n * its behavior based on the events it receives, which can cause effects outside\n * of the actor. When you run a state machine, it becomes an actor.\n */\nclass Actor {\n /**\n * Creates a new actor instance for the given logic with the provided options,\n * if any.\n *\n * @param logic The logic to create an actor from\n * @param options Actor options\n */\n constructor(logic, options) {\n this.logic = logic;\n /** The current internal state of the actor. */\n this._snapshot = void 0;\n /**\n * The clock that is responsible for setting and clearing timeouts, such as\n * delayed events and transitions.\n */\n this.clock = void 0;\n this.options = void 0;\n /** The unique identifier for this actor relative to its parent. */\n this.id = void 0;\n this.mailbox = new Mailbox(this._process.bind(this));\n this.observers = new Set();\n this.eventListeners = new Map();\n this.logger = void 0;\n /** @internal */\n this._processingStatus = ProcessingStatus.NotStarted;\n // Actor Ref\n this._parent = void 0;\n /** @internal */\n this._syncSnapshot = void 0;\n this.ref = void 0;\n // TODO: add typings for system\n this._actorScope = void 0;\n this._systemId = void 0;\n /** The globally unique process ID for this invocation. */\n this.sessionId = void 0;\n /** The system to which this actor belongs. */\n this.system = void 0;\n this._doneEvent = void 0;\n this.src = void 0;\n // array of functions to defer\n this._deferred = [];\n const resolvedOptions = {\n ...defaultOptions,\n ...options\n };\n const {\n clock,\n logger,\n parent,\n syncSnapshot,\n id,\n systemId,\n inspect\n } = resolvedOptions;\n this.system = parent ? parent.system : createSystem(this, {\n clock,\n logger\n });\n if (inspect && !parent) {\n // Always inspect at the system-level\n this.system.inspect(toObserver(inspect));\n }\n this.sessionId = this.system._bookId();\n this.id = id ?? this.sessionId;\n this.logger = options?.logger ?? this.system._logger;\n this.clock = options?.clock ?? this.system._clock;\n this._parent = parent;\n this._syncSnapshot = syncSnapshot;\n this.options = resolvedOptions;\n this.src = resolvedOptions.src ?? logic;\n this.ref = this;\n this._actorScope = {\n self: this,\n id: this.id,\n sessionId: this.sessionId,\n logger: this.logger,\n defer: fn => {\n this._deferred.push(fn);\n },\n system: this.system,\n stopChild: child => {\n if (child._parent !== this) {\n throw new Error(`Cannot stop child actor ${child.id} of ${this.id} because it is not a child`);\n }\n child._stop();\n },\n emit: emittedEvent => {\n const listeners = this.eventListeners.get(emittedEvent.type);\n const wildcardListener = this.eventListeners.get('*');\n if (!listeners && !wildcardListener) {\n return;\n }\n const allListeners = new Set([...(listeners ? listeners.values() : []), ...(wildcardListener ? wildcardListener.values() : [])]);\n for (const handler of Array.from(allListeners)) {\n handler(emittedEvent);\n }\n }\n };\n\n // Ensure that the send method is bound to this Actor instance\n // if destructured\n this.send = this.send.bind(this);\n this.system._sendInspectionEvent({\n type: '@xstate.actor',\n actorRef: this\n });\n if (systemId) {\n this._systemId = systemId;\n this.system._set(systemId, this);\n }\n this._initState(options?.snapshot ?? options?.state);\n if (systemId && this._snapshot.status !== 'active') {\n this.system._unregister(this);\n }\n }\n _initState(persistedState) {\n try {\n this._snapshot = persistedState ? this.logic.restoreSnapshot ? this.logic.restoreSnapshot(persistedState, this._actorScope) : persistedState : this.logic.getInitialSnapshot(this._actorScope, this.options?.input);\n } catch (err) {\n // if we get here then it means that we assign a value to this._snapshot that is not of the correct type\n // we can't get the true `TSnapshot & { status: 'error'; }`, it's impossible\n // so right now this is a lie of sorts\n this._snapshot = {\n status: 'error',\n output: undefined,\n error: err\n };\n }\n }\n update(snapshot, event) {\n // Update state\n this._snapshot = snapshot;\n\n // Execute deferred effects\n let deferredFn;\n while (deferredFn = this._deferred.shift()) {\n try {\n deferredFn();\n } catch (err) {\n // this error can only be caught when executing *initial* actions\n // it's the only time when we call actions provided by the user through those deferreds\n // when the actor is already running we always execute them synchronously while transitioning\n // no \"builtin deferred\" should actually throw an error since they are either safe\n // or the control flow is passed through the mailbox and errors should be caught by the `_process` used by the mailbox\n this._deferred.length = 0;\n this._snapshot = {\n ...snapshot,\n status: 'error',\n error: err\n };\n }\n }\n switch (this._snapshot.status) {\n case 'active':\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n case 'done':\n // next observers are meant to be notified about done snapshots\n // this can be seen as something that is different from how observable work\n // but with observables `complete` callback is called without any arguments\n // it's more ergonomic for XState to treat a done snapshot as a \"next\" value\n // and the completion event as something that is separate,\n // something that merely follows emitting that done snapshot\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this._stopProcedure();\n this._complete();\n this._doneEvent = createDoneActorEvent(this.id, this._snapshot.output);\n if (this._parent) {\n this.system._relay(this, this._parent, this._doneEvent);\n }\n break;\n case 'error':\n this._error(this._snapshot.error);\n break;\n }\n this.system._sendInspectionEvent({\n type: '@xstate.snapshot',\n actorRef: this,\n event,\n snapshot\n });\n }\n\n /**\n * Subscribe an observer to an actor\u2019s snapshot values.\n *\n * @remarks\n * The observer will receive the actor\u2019s snapshot value when it is emitted.\n * The observer can be:\n *\n * - A plain function that receives the latest snapshot, or\n * - An observer object whose `.next(snapshot)` method receives the latest\n * snapshot\n *\n * @example\n *\n * ```ts\n * // Observer as a plain function\n * const subscription = actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n * ```\n *\n * @example\n *\n * ```ts\n * // Observer as an object\n * const subscription = actor.subscribe({\n * next(snapshot) {\n * console.log(snapshot);\n * },\n * error(err) {\n * // ...\n * },\n * complete() {\n * // ...\n * }\n * });\n * ```\n *\n * The return value of `actor.subscribe(observer)` is a subscription object\n * that has an `.unsubscribe()` method. You can call\n * `subscription.unsubscribe()` to unsubscribe the observer:\n *\n * @example\n *\n * ```ts\n * const subscription = actor.subscribe((snapshot) => {\n * // ...\n * });\n *\n * // Unsubscribe the observer\n * subscription.unsubscribe();\n * ```\n *\n * When the actor is stopped, all of its observers will automatically be\n * unsubscribed.\n *\n * @param observer - Either a plain function that receives the latest\n * snapshot, or an observer object whose `.next(snapshot)` method receives\n * the latest snapshot\n */\n\n subscribe(nextListenerOrObserver, errorListener, completeListener) {\n const observer = toObserver(nextListenerOrObserver, errorListener, completeListener);\n if (this._processingStatus !== ProcessingStatus.Stopped) {\n this.observers.add(observer);\n } else {\n switch (this._snapshot.status) {\n case 'done':\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n break;\n case 'error':\n {\n const err = this._snapshot.error;\n if (!observer.error) {\n reportUnhandledError(err);\n } else {\n try {\n observer.error(err);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n }\n }\n }\n return {\n unsubscribe: () => {\n this.observers.delete(observer);\n }\n };\n }\n on(type, handler) {\n let listeners = this.eventListeners.get(type);\n if (!listeners) {\n listeners = new Set();\n this.eventListeners.set(type, listeners);\n }\n const wrappedHandler = handler.bind(undefined);\n listeners.add(wrappedHandler);\n return {\n unsubscribe: () => {\n listeners.delete(wrappedHandler);\n }\n };\n }\n\n /** Starts the Actor from the initial state */\n start() {\n if (this._processingStatus === ProcessingStatus.Running) {\n // Do not restart the service if it is already started\n return this;\n }\n if (this._syncSnapshot) {\n this.subscribe({\n next: snapshot => {\n if (snapshot.status === 'active') {\n this.system._relay(this, this._parent, {\n type: `xstate.snapshot.${this.id}`,\n snapshot\n });\n }\n },\n error: () => {}\n });\n }\n this.system._register(this.sessionId, this);\n if (this._systemId) {\n this.system._set(this._systemId, this);\n }\n this._processingStatus = ProcessingStatus.Running;\n\n // TODO: this isn't correct when rehydrating\n const initEvent = createInitEvent(this.options.input);\n this.system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: this._parent,\n actorRef: this,\n event: initEvent\n });\n const status = this._snapshot.status;\n switch (status) {\n case 'done':\n // a state machine can be \"done\" upon initialization (it could reach a final state using initial microsteps)\n // we still need to complete observers, flush deferreds etc\n this.update(this._snapshot, initEvent);\n // TODO: rethink cleanup of observers, mailbox, etc\n return this;\n case 'error':\n this._error(this._snapshot.error);\n return this;\n }\n if (!this._parent) {\n this.system.start();\n }\n if (this.logic.start) {\n try {\n this.logic.start(this._snapshot, this._actorScope);\n } catch (err) {\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return this;\n }\n }\n\n // TODO: this notifies all subscribers but usually this is redundant\n // there is no real change happening here\n // we need to rethink if this needs to be refactored\n this.update(this._snapshot, initEvent);\n if (this.options.devTools) {\n this.attachDevTools();\n }\n this.mailbox.start();\n return this;\n }\n _process(event) {\n let nextState;\n let caughtError;\n try {\n nextState = this.logic.transition(this._snapshot, event, this._actorScope);\n } catch (err) {\n // we wrap it in a box so we can rethrow it later even if falsy value gets caught here\n caughtError = {\n err\n };\n }\n if (caughtError) {\n const {\n err\n } = caughtError;\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return;\n }\n this.update(nextState, event);\n if (event.type === XSTATE_STOP) {\n this._stopProcedure();\n this._complete();\n }\n }\n _stop() {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return this;\n }\n this.mailbox.clear();\n if (this._processingStatus === ProcessingStatus.NotStarted) {\n this._processingStatus = ProcessingStatus.Stopped;\n return this;\n }\n this.mailbox.enqueue({\n type: XSTATE_STOP\n });\n return this;\n }\n\n /** Stops the Actor and unsubscribe all listeners. */\n stop() {\n if (this._parent) {\n throw new Error('A non-root actor cannot be stopped directly.');\n }\n return this._stop();\n }\n _complete() {\n for (const observer of this.observers) {\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this.observers.clear();\n }\n _reportError(err) {\n if (!this.observers.size) {\n if (!this._parent) {\n reportUnhandledError(err);\n }\n return;\n }\n let reportError = false;\n for (const observer of this.observers) {\n const errorListener = observer.error;\n reportError ||= !errorListener;\n try {\n errorListener?.(err);\n } catch (err2) {\n reportUnhandledError(err2);\n }\n }\n this.observers.clear();\n if (reportError) {\n reportUnhandledError(err);\n }\n }\n _error(err) {\n this._stopProcedure();\n this._reportError(err);\n if (this._parent) {\n this.system._relay(this, this._parent, createErrorActorEvent(this.id, err));\n }\n }\n // TODO: atm children don't belong entirely to the actor so\n // in a way - it's not even super aware of them\n // so we can't stop them from here but we really should!\n // right now, they are being stopped within the machine's transition\n // but that could throw and leave us with \"orphaned\" active actors\n _stopProcedure() {\n if (this._processingStatus !== ProcessingStatus.Running) {\n // Actor already stopped; do nothing\n return this;\n }\n\n // Cancel all delayed events\n this.system.scheduler.cancelAll(this);\n\n // TODO: mailbox.reset\n this.mailbox.clear();\n // TODO: after `stop` we must prepare ourselves for receiving events again\n // events sent *after* stop signal must be queued\n // it seems like this should be the common behavior for all of our consumers\n // so perhaps this should be unified somehow for all of them\n this.mailbox = new Mailbox(this._process.bind(this));\n this._processingStatus = ProcessingStatus.Stopped;\n this.system._unregister(this);\n return this;\n }\n\n /** @internal */\n _send(event) {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n this.mailbox.enqueue(event);\n }\n\n /**\n * Sends an event to the running Actor to trigger a transition.\n *\n * @param event The event to send\n */\n send(event) {\n this.system._relay(undefined, this, event);\n }\n attachDevTools() {\n const {\n devTools\n } = this.options;\n if (devTools) {\n const resolvedDevToolsAdapter = typeof devTools === 'function' ? devTools : devToolsAdapter;\n resolvedDevToolsAdapter(this);\n }\n }\n toJSON() {\n return {\n xstate$$type: $$ACTOR_TYPE,\n id: this.id\n };\n }\n\n /**\n * Obtain the internal state of the actor, which can be persisted.\n *\n * @remarks\n * The internal state can be persisted from any actor, not only machines.\n *\n * Note that the persisted state is not the same as the snapshot from\n * {@link Actor.getSnapshot}. Persisted state represents the internal state of\n * the actor, while snapshots represent the actor's last emitted value.\n *\n * Can be restored with {@link ActorOptions.state}\n * @see https://stately.ai/docs/persistence\n */\n\n getPersistedSnapshot(options) {\n return this.logic.getPersistedSnapshot(this._snapshot, options);\n }\n [symbolObservable]() {\n return this;\n }\n\n /**\n * Read an actor\u2019s snapshot synchronously.\n *\n * @remarks\n * The snapshot represent an actor's last emitted value.\n *\n * When an actor receives an event, its internal state may change. An actor\n * may emit a snapshot when a state transition occurs.\n *\n * Note that some actors, such as callback actors generated with\n * `fromCallback`, will not emit snapshots.\n * @see {@link Actor.subscribe} to subscribe to an actor\u2019s snapshot values.\n * @see {@link Actor.getPersistedSnapshot} to persist the internal state of an actor (which is more than just a snapshot).\n */\n getSnapshot() {\n return this._snapshot;\n }\n}\n/**\n * Creates a new actor instance for the given actor logic with the provided\n * options, if any.\n *\n * @remarks\n * When you create an actor from actor logic via `createActor(logic)`, you\n * implicitly create an actor system where the created actor is the root actor.\n * Any actors spawned from this root actor and its descendants are part of that\n * actor system.\n * @example\n *\n * ```ts\n * import { createActor } from 'xstate';\n * import { someActorLogic } from './someActorLogic.ts';\n *\n * // Creating the actor, which implicitly creates an actor system with itself as the root actor\n * const actor = createActor(someActorLogic);\n *\n * actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n *\n * // Actors must be started by calling `actor.start()`, which will also start the actor system.\n * actor.start();\n *\n * // Actors can receive events\n * actor.send({ type: 'someEvent' });\n *\n * // You can stop root actors by calling `actor.stop()`, which will also stop the actor system and all actors in that system.\n * actor.stop();\n * ```\n *\n * @param logic - The actor logic to create an actor from. For a state machine\n * actor logic creator, see {@link createMachine}. Other actor logic creators\n * include {@link fromCallback}, {@link fromEventObservable},\n * {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.\n * @param options - Actor options\n */\nfunction createActor(logic, ...[options]) {\n return new Actor(logic, options);\n}\n\n/**\n * Creates a new Interpreter instance for the given machine with the provided\n * options, if any.\n *\n * @deprecated Use `createActor` instead\n * @alias\n */\nconst interpret = createActor;\n\n/**\n * @deprecated Use `Actor` instead.\n * @alias\n */\n\nfunction resolveCancel(_, snapshot, actionArgs, actionParams, {\n sendId\n}) {\n const resolvedSendId = typeof sendId === 'function' ? sendId(actionArgs, actionParams) : sendId;\n return [snapshot, resolvedSendId];\n}\nfunction executeCancel(actorScope, resolvedSendId) {\n actorScope.defer(() => {\n actorScope.system.scheduler.cancel(actorScope.self, resolvedSendId);\n });\n}\n/**\n * Cancels a delayed `sendTo(...)` action that is waiting to be executed. The\n * canceled `sendTo(...)` action will not send its event or execute, unless the\n * `delay` has already elapsed before `cancel(...)` is called.\n *\n * @example\n *\n * ```ts\n * import { createMachine, sendTo, cancel } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * sendEvent: {\n * actions: sendTo(\n * 'some-actor',\n * { type: 'someEvent' },\n * {\n * id: 'some-id',\n * delay: 1000\n * }\n * )\n * },\n * cancelEvent: {\n * actions: cancel('some-id')\n * }\n * }\n * });\n * ```\n *\n * @param sendId The `id` of the `sendTo(...)` action to cancel.\n */\nfunction cancel(sendId) {\n function cancel(args, params) {\n }\n cancel.type = 'xstate.cancel';\n cancel.sendId = sendId;\n cancel.resolve = resolveCancel;\n cancel.execute = executeCancel;\n return cancel;\n}\n\nfunction resolveSpawn(actorScope, snapshot, actionArgs, _actionParams, {\n id,\n systemId,\n src,\n input,\n syncSnapshot\n}) {\n const logic = typeof src === 'string' ? resolveReferencedActor(snapshot.machine, src) : src;\n const resolvedId = typeof id === 'function' ? id(actionArgs) : id;\n let actorRef;\n if (logic) {\n actorRef = createActor(logic, {\n id: resolvedId,\n src,\n parent: actorScope.self,\n syncSnapshot,\n systemId,\n input: typeof input === 'function' ? input({\n context: snapshot.context,\n event: actionArgs.event,\n self: actorScope.self\n }) : input\n });\n }\n return [cloneMachineSnapshot(snapshot, {\n children: {\n ...snapshot.children,\n [resolvedId]: actorRef\n }\n }), {\n id,\n actorRef\n }];\n}\nfunction executeSpawn(actorScope, {\n id,\n actorRef\n}) {\n if (!actorRef) {\n return;\n }\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n}\nfunction spawnChild(...[src, {\n id,\n systemId,\n input,\n syncSnapshot = false\n} = {}]) {\n function spawnChild(args, params) {\n }\n spawnChild.type = 'snapshot.spawnChild';\n spawnChild.id = id;\n spawnChild.systemId = systemId;\n spawnChild.src = src;\n spawnChild.input = input;\n spawnChild.syncSnapshot = syncSnapshot;\n spawnChild.resolve = resolveSpawn;\n spawnChild.execute = executeSpawn;\n return spawnChild;\n}\n\nfunction resolveStop(_, snapshot, args, actionParams, {\n actorRef\n}) {\n const actorRefOrString = typeof actorRef === 'function' ? actorRef(args, actionParams) : actorRef;\n const resolvedActorRef = typeof actorRefOrString === 'string' ? snapshot.children[actorRefOrString] : actorRefOrString;\n let children = snapshot.children;\n if (resolvedActorRef) {\n children = {\n ...children\n };\n delete children[resolvedActorRef.id];\n }\n return [cloneMachineSnapshot(snapshot, {\n children\n }), resolvedActorRef];\n}\nfunction executeStop(actorScope, actorRef) {\n if (!actorRef) {\n return;\n }\n\n // we need to eagerly unregister it here so a new actor with the same systemId can be registered immediately\n // since we defer actual stopping of the actor but we don't defer actor creations (and we can't do that)\n // this could throw on `systemId` collision, for example, when dealing with reentering transitions\n actorScope.system._unregister(actorRef);\n\n // this allows us to prevent an actor from being started if it gets stopped within the same macrostep\n // this can happen, for example, when the invoking state is being exited immediately by an always transition\n if (actorRef._processingStatus !== ProcessingStatus.Running) {\n actorScope.stopChild(actorRef);\n return;\n }\n // stopping a child enqueues a stop event in the child actor's mailbox\n // we need for all of the already enqueued events to be processed before we stop the child\n // the parent itself might want to send some events to a child (for example from exit actions on the invoking state)\n // and we don't want to ignore those events\n actorScope.defer(() => {\n actorScope.stopChild(actorRef);\n });\n}\n/**\n * Stops a child actor.\n *\n * @param actorRef The actor to stop.\n */\nfunction stopChild(actorRef) {\n function stop(args, params) {\n }\n stop.type = 'xstate.stopChild';\n stop.actorRef = actorRef;\n stop.resolve = resolveStop;\n stop.execute = executeStop;\n return stop;\n}\n\n/**\n * Stops a child actor.\n *\n * @deprecated Use `stopChild(...)` instead\n * @alias\n */\nconst stop = stopChild;\n\nfunction checkStateIn(snapshot, _, {\n stateValue\n}) {\n if (typeof stateValue === 'string' && isStateId(stateValue)) {\n const target = snapshot.machine.getStateNodeById(stateValue);\n return snapshot._nodes.some(sn => sn === target);\n }\n return snapshot.matches(stateValue);\n}\nfunction stateIn(stateValue) {\n function stateIn(args, params) {\n return false;\n }\n stateIn.check = checkStateIn;\n stateIn.stateValue = stateValue;\n return stateIn;\n}\nfunction checkNot(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return !evaluateGuard(guards[0], context, event, snapshot);\n}\n\n/**\n * Higher-order guard that evaluates to `true` if the `guard` passed to it\n * evaluates to `false`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, not } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => false\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: not('someNamedGuard'),\n * actions: () => {\n * // will be executed if guard in `not(...)`\n * // evaluates to `false`\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard\n */\nfunction not(guard) {\n function not(args, params) {\n return false;\n }\n not.check = checkNot;\n not.guards = [guard];\n return not;\n}\nfunction checkAnd(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.every(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if all `guards` passed to it\n * evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, and } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: and([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if all guards in `and(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction and(guards) {\n function and(args, params) {\n return false;\n }\n and.check = checkAnd;\n and.guards = guards;\n return and;\n}\nfunction checkOr(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.some(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if any of the `guards` passed to\n * it evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, or } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: or([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if any of the guards in `or(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction or(guards) {\n function or(args, params) {\n return false;\n }\n or.check = checkOr;\n or.guards = guards;\n return or;\n}\n\n// TODO: throw on cycles (depth check should be enough)\nfunction evaluateGuard(guard, context, event, snapshot) {\n const {\n machine\n } = snapshot;\n const isInline = typeof guard === 'function';\n const resolved = isInline ? guard : machine.implementations.guards[typeof guard === 'string' ? guard : guard.type];\n if (!isInline && !resolved) {\n throw new Error(`Guard '${typeof guard === 'string' ? guard : guard.type}' is not implemented.'.`);\n }\n if (typeof resolved !== 'function') {\n return evaluateGuard(resolved, context, event, snapshot);\n }\n const guardArgs = {\n context,\n event\n };\n const guardParams = isInline || typeof guard === 'string' ? undefined : 'params' in guard ? typeof guard.params === 'function' ? guard.params({\n context,\n event\n }) : guard.params : undefined;\n if (!('check' in resolved)) {\n // the existing type of `.guards` assumes non-nullable `TExpressionGuard`\n // inline guards expect `TExpressionGuard` to be set to `undefined`\n // it's fine to cast this here, our logic makes sure that we call those 2 \"variants\" correctly\n return resolved(guardArgs, guardParams);\n }\n const builtinGuard = resolved;\n return builtinGuard.check(snapshot, guardArgs, resolved // this holds all params\n );\n}\n\nconst isAtomicStateNode = stateNode => stateNode.type === 'atomic' || stateNode.type === 'final';\nfunction getChildren(stateNode) {\n return Object.values(stateNode.states).filter(sn => sn.type !== 'history');\n}\nfunction getProperAncestors(stateNode, toStateNode) {\n const ancestors = [];\n if (toStateNode === stateNode) {\n return ancestors;\n }\n\n // add all ancestors\n let m = stateNode.parent;\n while (m && m !== toStateNode) {\n ancestors.push(m);\n m = m.parent;\n }\n return ancestors;\n}\nfunction getAllStateNodes(stateNodes) {\n const nodeSet = new Set(stateNodes);\n const adjList = getAdjList(nodeSet);\n\n // add descendants\n for (const s of nodeSet) {\n // if previously active, add existing child nodes\n if (s.type === 'compound' && (!adjList.get(s) || !adjList.get(s).length)) {\n getInitialStateNodesWithTheirAncestors(s).forEach(sn => nodeSet.add(sn));\n } else {\n if (s.type === 'parallel') {\n for (const child of getChildren(s)) {\n if (child.type === 'history') {\n continue;\n }\n if (!nodeSet.has(child)) {\n const initialStates = getInitialStateNodesWithTheirAncestors(child);\n for (const initialStateNode of initialStates) {\n nodeSet.add(initialStateNode);\n }\n }\n }\n }\n }\n }\n\n // add all ancestors\n for (const s of nodeSet) {\n let m = s.parent;\n while (m) {\n nodeSet.add(m);\n m = m.parent;\n }\n }\n return nodeSet;\n}\nfunction getValueFromAdj(baseNode, adjList) {\n const childStateNodes = adjList.get(baseNode);\n if (!childStateNodes) {\n return {}; // todo: fix?\n }\n if (baseNode.type === 'compound') {\n const childStateNode = childStateNodes[0];\n if (childStateNode) {\n if (isAtomicStateNode(childStateNode)) {\n return childStateNode.key;\n }\n } else {\n return {};\n }\n }\n const stateValue = {};\n for (const childStateNode of childStateNodes) {\n stateValue[childStateNode.key] = getValueFromAdj(childStateNode, adjList);\n }\n return stateValue;\n}\nfunction getAdjList(stateNodes) {\n const adjList = new Map();\n for (const s of stateNodes) {\n if (!adjList.has(s)) {\n adjList.set(s, []);\n }\n if (s.parent) {\n if (!adjList.has(s.parent)) {\n adjList.set(s.parent, []);\n }\n adjList.get(s.parent).push(s);\n }\n }\n return adjList;\n}\nfunction getStateValue(rootNode, stateNodes) {\n const config = getAllStateNodes(stateNodes);\n return getValueFromAdj(rootNode, getAdjList(config));\n}\nfunction isInFinalState(stateNodeSet, stateNode) {\n if (stateNode.type === 'compound') {\n return getChildren(stateNode).some(s => s.type === 'final' && stateNodeSet.has(s));\n }\n if (stateNode.type === 'parallel') {\n return getChildren(stateNode).every(sn => isInFinalState(stateNodeSet, sn));\n }\n return stateNode.type === 'final';\n}\nconst isStateId = str => str[0] === STATE_IDENTIFIER;\nfunction getCandidates(stateNode, receivedEventType) {\n const candidates = stateNode.transitions.get(receivedEventType) || [...stateNode.transitions.keys()].filter(eventDescriptor => {\n // check if transition is a wildcard transition,\n // which matches any non-transient events\n if (eventDescriptor === WILDCARD) {\n return true;\n }\n if (!eventDescriptor.endsWith('.*')) {\n return false;\n }\n const partialEventTokens = eventDescriptor.split('.');\n const eventTokens = receivedEventType.split('.');\n for (let tokenIndex = 0; tokenIndex < partialEventTokens.length; tokenIndex++) {\n const partialEventToken = partialEventTokens[tokenIndex];\n const eventToken = eventTokens[tokenIndex];\n if (partialEventToken === '*') {\n const isLastToken = tokenIndex === partialEventTokens.length - 1;\n return isLastToken;\n }\n if (partialEventToken !== eventToken) {\n return false;\n }\n }\n return true;\n }).sort((a, b) => b.length - a.length).flatMap(key => stateNode.transitions.get(key));\n return candidates;\n}\n\n/** All delayed transitions from the config. */\nfunction getDelayedTransitions(stateNode) {\n const afterConfig = stateNode.config.after;\n if (!afterConfig) {\n return [];\n }\n const mutateEntryExit = (delay, i) => {\n const afterEvent = createAfterEvent(delay, stateNode.id);\n const eventType = afterEvent.type;\n stateNode.entry.push(raise(afterEvent, {\n id: eventType,\n delay\n }));\n stateNode.exit.push(cancel(eventType));\n return eventType;\n };\n const delayedTransitions = Object.keys(afterConfig).flatMap((delay, i) => {\n const configTransition = afterConfig[delay];\n const resolvedTransition = typeof configTransition === 'string' ? {\n target: configTransition\n } : configTransition;\n const resolvedDelay = Number.isNaN(+delay) ? delay : +delay;\n const eventType = mutateEntryExit(resolvedDelay);\n return toArray(resolvedTransition).map(transition => ({\n ...transition,\n event: eventType,\n delay: resolvedDelay\n }));\n });\n return delayedTransitions.map(delayedTransition => {\n const {\n delay\n } = delayedTransition;\n return {\n ...formatTransition(stateNode, delayedTransition.event, delayedTransition),\n delay\n };\n });\n}\nfunction formatTransition(stateNode, descriptor, transitionConfig) {\n const normalizedTarget = normalizeTarget(transitionConfig.target);\n const reenter = transitionConfig.reenter ?? false;\n const target = resolveTarget(stateNode, normalizedTarget);\n const transition = {\n ...transitionConfig,\n actions: toArray(transitionConfig.actions),\n guard: transitionConfig.guard,\n target,\n source: stateNode,\n reenter,\n eventType: descriptor,\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: target ? target.map(t => `#${t.id}`) : undefined\n })\n };\n return transition;\n}\nfunction formatTransitions(stateNode) {\n const transitions = new Map();\n if (stateNode.config.on) {\n for (const descriptor of Object.keys(stateNode.config.on)) {\n if (descriptor === NULL_EVENT) {\n throw new Error('Null events (\"\") cannot be specified as a transition key. Use `always: { ... }` instead.');\n }\n const transitionsConfig = stateNode.config.on[descriptor];\n transitions.set(descriptor, toTransitionConfigArray(transitionsConfig).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n if (stateNode.config.onDone) {\n const descriptor = `xstate.done.state.${stateNode.id}`;\n transitions.set(descriptor, toTransitionConfigArray(stateNode.config.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n for (const invokeDef of stateNode.invoke) {\n if (invokeDef.onDone) {\n const descriptor = `xstate.done.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onError) {\n const descriptor = `xstate.error.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onError).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onSnapshot) {\n const descriptor = `xstate.snapshot.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onSnapshot).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n for (const delayedTransition of stateNode.after) {\n let existing = transitions.get(delayedTransition.eventType);\n if (!existing) {\n existing = [];\n transitions.set(delayedTransition.eventType, existing);\n }\n existing.push(delayedTransition);\n }\n return transitions;\n}\nfunction formatInitialTransition(stateNode, _target) {\n const resolvedTarget = typeof _target === 'string' ? stateNode.states[_target] : _target ? stateNode.states[_target.target] : undefined;\n if (!resolvedTarget && _target) {\n throw new Error(`Initial state node \"${_target}\" not found on parent state node #${stateNode.id}`);\n }\n const transition = {\n source: stateNode,\n actions: !_target || typeof _target === 'string' ? [] : toArray(_target.actions),\n eventType: null,\n reenter: false,\n target: resolvedTarget ? [resolvedTarget] : [],\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: resolvedTarget ? [`#${resolvedTarget.id}`] : []\n })\n };\n return transition;\n}\nfunction resolveTarget(stateNode, targets) {\n if (targets === undefined) {\n // an undefined target signals that the state node should not transition from that state when receiving that event\n return undefined;\n }\n return targets.map(target => {\n if (typeof target !== 'string') {\n return target;\n }\n if (isStateId(target)) {\n return stateNode.machine.getStateNodeById(target);\n }\n const isInternalTarget = target[0] === STATE_DELIMITER;\n // If internal target is defined on machine,\n // do not include machine key on target\n if (isInternalTarget && !stateNode.parent) {\n return getStateNodeByPath(stateNode, target.slice(1));\n }\n const resolvedTarget = isInternalTarget ? stateNode.key + target : target;\n if (stateNode.parent) {\n try {\n const targetStateNode = getStateNodeByPath(stateNode.parent, resolvedTarget);\n return targetStateNode;\n } catch (err) {\n throw new Error(`Invalid transition definition for state node '${stateNode.id}':\\n${err.message}`);\n }\n } else {\n throw new Error(`Invalid target: \"${target}\" is not a valid target from the root node. Did you mean \".${target}\"?`);\n }\n });\n}\nfunction resolveHistoryDefaultTransition(stateNode) {\n const normalizedTarget = normalizeTarget(stateNode.config.target);\n if (!normalizedTarget) {\n return stateNode.parent.initial;\n }\n return {\n target: normalizedTarget.map(t => typeof t === 'string' ? getStateNodeByPath(stateNode.parent, t) : t)\n };\n}\nfunction isHistoryNode(stateNode) {\n return stateNode.type === 'history';\n}\nfunction getInitialStateNodesWithTheirAncestors(stateNode) {\n const states = getInitialStateNodes(stateNode);\n for (const initialState of states) {\n for (const ancestor of getProperAncestors(initialState, stateNode)) {\n states.add(ancestor);\n }\n }\n return states;\n}\nfunction getInitialStateNodes(stateNode) {\n const set = new Set();\n function iter(descStateNode) {\n if (set.has(descStateNode)) {\n return;\n }\n set.add(descStateNode);\n if (descStateNode.type === 'compound') {\n iter(descStateNode.initial.target[0]);\n } else if (descStateNode.type === 'parallel') {\n for (const child of getChildren(descStateNode)) {\n iter(child);\n }\n }\n }\n iter(stateNode);\n return set;\n}\n/** Returns the child state node from its relative `stateKey`, or throws. */\nfunction getStateNode(stateNode, stateKey) {\n if (isStateId(stateKey)) {\n return stateNode.machine.getStateNodeById(stateKey);\n }\n if (!stateNode.states) {\n throw new Error(`Unable to retrieve child state '${stateKey}' from '${stateNode.id}'; no child states exist.`);\n }\n const result = stateNode.states[stateKey];\n if (!result) {\n throw new Error(`Child state '${stateKey}' does not exist on '${stateNode.id}'`);\n }\n return result;\n}\n\n/**\n * Returns the relative state node from the given `statePath`, or throws.\n *\n * @param statePath The string or string array relative path to the state node.\n */\nfunction getStateNodeByPath(stateNode, statePath) {\n if (typeof statePath === 'string' && isStateId(statePath)) {\n try {\n return stateNode.machine.getStateNodeById(statePath);\n } catch (e) {\n // try individual paths\n // throw e;\n }\n }\n const arrayStatePath = toStatePath(statePath).slice();\n let currentStateNode = stateNode;\n while (arrayStatePath.length) {\n const key = arrayStatePath.shift();\n if (!key.length) {\n break;\n }\n currentStateNode = getStateNode(currentStateNode, key);\n }\n return currentStateNode;\n}\n\n/**\n * Returns the state nodes represented by the current state value.\n *\n * @param stateValue The state value or State instance\n */\nfunction getStateNodes(stateNode, stateValue) {\n if (typeof stateValue === 'string') {\n const childStateNode = stateNode.states[stateValue];\n if (!childStateNode) {\n throw new Error(`State '${stateValue}' does not exist on '${stateNode.id}'`);\n }\n return [stateNode, childStateNode];\n }\n const childStateKeys = Object.keys(stateValue);\n const childStateNodes = childStateKeys.map(subStateKey => getStateNode(stateNode, subStateKey)).filter(Boolean);\n return [stateNode.machine.root, stateNode].concat(childStateNodes, childStateKeys.reduce((allSubStateNodes, subStateKey) => {\n const subStateNode = getStateNode(stateNode, subStateKey);\n if (!subStateNode) {\n return allSubStateNodes;\n }\n const subStateNodes = getStateNodes(subStateNode, stateValue[subStateKey]);\n return allSubStateNodes.concat(subStateNodes);\n }, []));\n}\nfunction transitionAtomicNode(stateNode, stateValue, snapshot, event) {\n const childStateNode = getStateNode(stateNode, stateValue);\n const next = childStateNode.next(snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionCompoundNode(stateNode, stateValue, snapshot, event) {\n const subStateKeys = Object.keys(stateValue);\n const childStateNode = getStateNode(stateNode, subStateKeys[0]);\n const next = transitionNode(childStateNode, stateValue[subStateKeys[0]], snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionParallelNode(stateNode, stateValue, snapshot, event) {\n const allInnerTransitions = [];\n for (const subStateKey of Object.keys(stateValue)) {\n const subStateValue = stateValue[subStateKey];\n if (!subStateValue) {\n continue;\n }\n const subStateNode = getStateNode(stateNode, subStateKey);\n const innerTransitions = transitionNode(subStateNode, subStateValue, snapshot, event);\n if (innerTransitions) {\n allInnerTransitions.push(...innerTransitions);\n }\n }\n if (!allInnerTransitions.length) {\n return stateNode.next(snapshot, event);\n }\n return allInnerTransitions;\n}\nfunction transitionNode(stateNode, stateValue, snapshot, event) {\n // leaf node\n if (typeof stateValue === 'string') {\n return transitionAtomicNode(stateNode, stateValue, snapshot, event);\n }\n\n // compound node\n if (Object.keys(stateValue).length === 1) {\n return transitionCompoundNode(stateNode, stateValue, snapshot, event);\n }\n\n // parallel node\n return transitionParallelNode(stateNode, stateValue, snapshot, event);\n}\nfunction getHistoryNodes(stateNode) {\n return Object.keys(stateNode.states).map(key => stateNode.states[key]).filter(sn => sn.type === 'history');\n}\nfunction isDescendant(childStateNode, parentStateNode) {\n let marker = childStateNode;\n while (marker.parent && marker.parent !== parentStateNode) {\n marker = marker.parent;\n }\n return marker.parent === parentStateNode;\n}\nfunction hasIntersection(s1, s2) {\n const set1 = new Set(s1);\n const set2 = new Set(s2);\n for (const item of set1) {\n if (set2.has(item)) {\n return true;\n }\n }\n for (const item of set2) {\n if (set1.has(item)) {\n return true;\n }\n }\n return false;\n}\nfunction removeConflictingTransitions(enabledTransitions, stateNodeSet, historyValue) {\n const filteredTransitions = new Set();\n for (const t1 of enabledTransitions) {\n let t1Preempted = false;\n const transitionsToRemove = new Set();\n for (const t2 of filteredTransitions) {\n if (hasIntersection(computeExitSet([t1], stateNodeSet, historyValue), computeExitSet([t2], stateNodeSet, historyValue))) {\n if (isDescendant(t1.source, t2.source)) {\n transitionsToRemove.add(t2);\n } else {\n t1Preempted = true;\n break;\n }\n }\n }\n if (!t1Preempted) {\n for (const t3 of transitionsToRemove) {\n filteredTransitions.delete(t3);\n }\n filteredTransitions.add(t1);\n }\n }\n return Array.from(filteredTransitions);\n}\nfunction findLeastCommonAncestor(stateNodes) {\n const [head, ...tail] = stateNodes;\n for (const ancestor of getProperAncestors(head, undefined)) {\n if (tail.every(sn => isDescendant(sn, ancestor))) {\n return ancestor;\n }\n }\n}\nfunction getEffectiveTargetStates(transition, historyValue) {\n if (!transition.target) {\n return [];\n }\n const targets = new Set();\n for (const targetNode of transition.target) {\n if (isHistoryNode(targetNode)) {\n if (historyValue[targetNode.id]) {\n for (const node of historyValue[targetNode.id]) {\n targets.add(node);\n }\n } else {\n for (const node of getEffectiveTargetStates(resolveHistoryDefaultTransition(targetNode), historyValue)) {\n targets.add(node);\n }\n }\n } else {\n targets.add(targetNode);\n }\n }\n return [...targets];\n}\nfunction getTransitionDomain(transition, historyValue) {\n const targetStates = getEffectiveTargetStates(transition, historyValue);\n if (!targetStates) {\n return;\n }\n if (!transition.reenter && targetStates.every(target => target === transition.source || isDescendant(target, transition.source))) {\n return transition.source;\n }\n const lca = findLeastCommonAncestor(targetStates.concat(transition.source));\n if (lca) {\n return lca;\n }\n\n // at this point we know that it's a root transition since LCA couldn't be found\n if (transition.reenter) {\n return;\n }\n return transition.source.machine.root;\n}\nfunction computeExitSet(transitions, stateNodeSet, historyValue) {\n const statesToExit = new Set();\n for (const t of transitions) {\n if (t.target?.length) {\n const domain = getTransitionDomain(t, historyValue);\n if (t.reenter && t.source === domain) {\n statesToExit.add(domain);\n }\n for (const stateNode of stateNodeSet) {\n if (isDescendant(stateNode, domain)) {\n statesToExit.add(stateNode);\n }\n }\n }\n }\n return [...statesToExit];\n}\nfunction areStateNodeCollectionsEqual(prevStateNodes, nextStateNodeSet) {\n if (prevStateNodes.length !== nextStateNodeSet.size) {\n return false;\n }\n for (const node of prevStateNodes) {\n if (!nextStateNodeSet.has(node)) {\n return false;\n }\n }\n return true;\n}\n\n/** https://www.w3.org/TR/scxml/#microstepProcedure */\nfunction microstep(transitions, currentSnapshot, actorScope, event, isInitial, internalQueue) {\n if (!transitions.length) {\n return currentSnapshot;\n }\n const mutStateNodeSet = new Set(currentSnapshot._nodes);\n let historyValue = currentSnapshot.historyValue;\n const filteredTransitions = removeConflictingTransitions(transitions, mutStateNodeSet, historyValue);\n let nextState = currentSnapshot;\n\n // Exit states\n if (!isInitial) {\n [nextState, historyValue] = exitStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, historyValue, internalQueue);\n }\n\n // Execute transition content\n nextState = resolveActionsAndContext(nextState, event, actorScope, filteredTransitions.flatMap(t => t.actions), internalQueue);\n\n // Enter states\n nextState = enterStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial);\n const nextStateNodes = [...mutStateNodeSet];\n if (nextState.status === 'done') {\n nextState = resolveActionsAndContext(nextState, event, actorScope, nextStateNodes.sort((a, b) => b.order - a.order).flatMap(state => state.exit), internalQueue);\n }\n try {\n if (historyValue === currentSnapshot.historyValue && areStateNodeCollectionsEqual(currentSnapshot._nodes, mutStateNodeSet)) {\n return nextState;\n }\n return cloneMachineSnapshot(nextState, {\n _nodes: nextStateNodes,\n historyValue\n });\n } catch (e) {\n // TODO: Refactor this once proper error handling is implemented.\n // See https://github.com/statelyai/rfcs/pull/4\n throw e;\n }\n}\nfunction getMachineOutput(snapshot, event, actorScope, rootNode, rootCompletionNode) {\n if (rootNode.output === undefined) {\n return;\n }\n const doneStateEvent = createDoneStateEvent(rootCompletionNode.id, rootCompletionNode.output !== undefined && rootCompletionNode.parent ? resolveOutput(rootCompletionNode.output, snapshot.context, event, actorScope.self) : undefined);\n return resolveOutput(rootNode.output, snapshot.context, doneStateEvent, actorScope.self);\n}\nfunction enterStates(currentSnapshot, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial) {\n let nextSnapshot = currentSnapshot;\n const statesToEnter = new Set();\n // those are states that were directly targeted or indirectly targeted by the explicit target\n // in other words, those are states for which initial actions should be executed\n // when we target `#deep_child` initial actions of its ancestors shouldn't be executed\n const statesForDefaultEntry = new Set();\n computeEntrySet(filteredTransitions, historyValue, statesForDefaultEntry, statesToEnter);\n\n // In the initial state, the root state node is \"entered\".\n if (isInitial) {\n statesForDefaultEntry.add(currentSnapshot.machine.root);\n }\n const completedNodes = new Set();\n for (const stateNodeToEnter of [...statesToEnter].sort((a, b) => a.order - b.order)) {\n mutStateNodeSet.add(stateNodeToEnter);\n const actions = [];\n\n // Add entry actions\n actions.push(...stateNodeToEnter.entry);\n for (const invokeDef of stateNodeToEnter.invoke) {\n actions.push(spawnChild(invokeDef.src, {\n ...invokeDef,\n syncSnapshot: !!invokeDef.onSnapshot\n }));\n }\n if (statesForDefaultEntry.has(stateNodeToEnter)) {\n const initialActions = stateNodeToEnter.initial.actions;\n actions.push(...initialActions);\n }\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, actions, internalQueue, stateNodeToEnter.invoke.map(invokeDef => invokeDef.id));\n if (stateNodeToEnter.type === 'final') {\n const parent = stateNodeToEnter.parent;\n let ancestorMarker = parent?.type === 'parallel' ? parent : parent?.parent;\n let rootCompletionNode = ancestorMarker || stateNodeToEnter;\n if (parent?.type === 'compound') {\n internalQueue.push(createDoneStateEvent(parent.id, stateNodeToEnter.output !== undefined ? resolveOutput(stateNodeToEnter.output, nextSnapshot.context, event, actorScope.self) : undefined));\n }\n while (ancestorMarker?.type === 'parallel' && !completedNodes.has(ancestorMarker) && isInFinalState(mutStateNodeSet, ancestorMarker)) {\n completedNodes.add(ancestorMarker);\n internalQueue.push(createDoneStateEvent(ancestorMarker.id));\n rootCompletionNode = ancestorMarker;\n ancestorMarker = ancestorMarker.parent;\n }\n if (ancestorMarker) {\n continue;\n }\n nextSnapshot = cloneMachineSnapshot(nextSnapshot, {\n status: 'done',\n output: getMachineOutput(nextSnapshot, event, actorScope, nextSnapshot.machine.root, rootCompletionNode)\n });\n }\n }\n return nextSnapshot;\n}\nfunction computeEntrySet(transitions, historyValue, statesForDefaultEntry, statesToEnter) {\n for (const t of transitions) {\n const domain = getTransitionDomain(t, historyValue);\n for (const s of t.target || []) {\n if (!isHistoryNode(s) && (\n // if the target is different than the source then it will *definitely* be entered\n t.source !== s ||\n // we know that the domain can't lie within the source\n // if it's different than the source then it's outside of it and it means that the target has to be entered as well\n t.source !== domain ||\n // reentering transitions always enter the target, even if it's the source itself\n t.reenter)) {\n statesToEnter.add(s);\n statesForDefaultEntry.add(s);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n const targetStates = getEffectiveTargetStates(t, historyValue);\n for (const s of targetStates) {\n const ancestors = getProperAncestors(s, domain);\n if (domain?.type === 'parallel') {\n ancestors.push(domain);\n }\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, !t.source.parent && t.reenter ? undefined : domain);\n }\n }\n}\nfunction addDescendantStatesToEnter(stateNode, historyValue, statesForDefaultEntry, statesToEnter) {\n if (isHistoryNode(stateNode)) {\n if (historyValue[stateNode.id]) {\n const historyStateNodes = historyValue[stateNode.id];\n for (const s of historyStateNodes) {\n statesToEnter.add(s);\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyStateNodes) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n } else {\n const historyDefaultTransition = resolveHistoryDefaultTransition(stateNode);\n for (const s of historyDefaultTransition.target) {\n statesToEnter.add(s);\n if (historyDefaultTransition === stateNode.parent?.initial) {\n statesForDefaultEntry.add(stateNode.parent);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyDefaultTransition.target) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n }\n } else {\n if (stateNode.type === 'compound') {\n const [initialState] = stateNode.initial.target;\n if (!isHistoryNode(initialState)) {\n statesToEnter.add(initialState);\n statesForDefaultEntry.add(initialState);\n }\n addDescendantStatesToEnter(initialState, historyValue, statesForDefaultEntry, statesToEnter);\n addProperAncestorStatesToEnter(initialState, stateNode, statesToEnter, historyValue, statesForDefaultEntry);\n } else {\n if (stateNode.type === 'parallel') {\n for (const child of getChildren(stateNode).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n if (!isHistoryNode(child)) {\n statesToEnter.add(child);\n statesForDefaultEntry.add(child);\n }\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n }\n}\nfunction addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, reentrancyDomain) {\n for (const anc of ancestors) {\n if (!reentrancyDomain || isDescendant(anc, reentrancyDomain)) {\n statesToEnter.add(anc);\n }\n if (anc.type === 'parallel') {\n for (const child of getChildren(anc).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n statesToEnter.add(child);\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n}\nfunction addProperAncestorStatesToEnter(stateNode, toStateNode, statesToEnter, historyValue, statesForDefaultEntry) {\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, getProperAncestors(stateNode, toStateNode));\n}\nfunction exitStates(currentSnapshot, event, actorScope, transitions, mutStateNodeSet, historyValue, internalQueue) {\n let nextSnapshot = currentSnapshot;\n const statesToExit = computeExitSet(transitions, mutStateNodeSet, historyValue);\n statesToExit.sort((a, b) => b.order - a.order);\n let changedHistory;\n\n // From SCXML algorithm: https://www.w3.org/TR/scxml/#exitStates\n for (const exitStateNode of statesToExit) {\n for (const historyNode of getHistoryNodes(exitStateNode)) {\n let predicate;\n if (historyNode.history === 'deep') {\n predicate = sn => isAtomicStateNode(sn) && isDescendant(sn, exitStateNode);\n } else {\n predicate = sn => {\n return sn.parent === exitStateNode;\n };\n }\n changedHistory ??= {\n ...historyValue\n };\n changedHistory[historyNode.id] = Array.from(mutStateNodeSet).filter(predicate);\n }\n }\n for (const s of statesToExit) {\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, [...s.exit, ...s.invoke.map(def => stopChild(def.id))], internalQueue);\n mutStateNodeSet.delete(s);\n }\n return [nextSnapshot, changedHistory || historyValue];\n}\nlet executingCustomAction = false;\nfunction resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, extra, retries) {\n const {\n machine\n } = currentSnapshot;\n let intermediateSnapshot = currentSnapshot;\n for (const action of actions) {\n const isInline = typeof action === 'function';\n const resolvedAction = isInline ? action :\n // the existing type of `.actions` assumes non-nullable `TExpressionAction`\n // it's fine to cast this here to get a common type and lack of errors in the rest of the code\n // our logic below makes sure that we call those 2 \"variants\" correctly\n machine.implementations.actions[typeof action === 'string' ? action : action.type];\n if (!resolvedAction) {\n continue;\n }\n const actionArgs = {\n context: intermediateSnapshot.context,\n event,\n self: actorScope.self,\n system: actorScope.system\n };\n const actionParams = isInline || typeof action === 'string' ? undefined : 'params' in action ? typeof action.params === 'function' ? action.params({\n context: intermediateSnapshot.context,\n event\n }) : action.params : undefined;\n function executeAction() {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.action',\n actorRef: actorScope.self,\n action: {\n type: typeof action === 'string' ? action : typeof action === 'object' ? action.type : action.name || '(anonymous)',\n params: actionParams\n }\n });\n try {\n executingCustomAction = resolvedAction;\n resolvedAction(actionArgs, actionParams);\n } finally {\n executingCustomAction = false;\n }\n }\n if (!('resolve' in resolvedAction)) {\n if (actorScope.self._processingStatus === ProcessingStatus.Running) {\n executeAction();\n } else {\n actorScope.defer(() => {\n executeAction();\n });\n }\n continue;\n }\n const builtinAction = resolvedAction;\n const [nextState, params, actions] = builtinAction.resolve(actorScope, intermediateSnapshot, actionArgs, actionParams, resolvedAction,\n // this holds all params\n extra);\n intermediateSnapshot = nextState;\n if ('retryResolve' in builtinAction) {\n retries?.push([builtinAction, params]);\n }\n if ('execute' in builtinAction) {\n if (actorScope.self._processingStatus === ProcessingStatus.Running) {\n builtinAction.execute(actorScope, params);\n } else {\n actorScope.defer(builtinAction.execute.bind(null, actorScope, params));\n }\n }\n if (actions) {\n intermediateSnapshot = resolveAndExecuteActionsWithContext(intermediateSnapshot, event, actorScope, actions, extra, retries);\n }\n }\n return intermediateSnapshot;\n}\nfunction resolveActionsAndContext(currentSnapshot, event, actorScope, actions, internalQueue, deferredActorIds) {\n const retries = deferredActorIds ? [] : undefined;\n const nextState = resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, {\n internalQueue,\n deferredActorIds\n }, retries);\n retries?.forEach(([builtinAction, params]) => {\n builtinAction.retryResolve(actorScope, nextState, params);\n });\n return nextState;\n}\nfunction macrostep(snapshot, event, actorScope, internalQueue = []) {\n let nextSnapshot = snapshot;\n const microstates = [];\n function addMicrostate(microstate, event, transitions) {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.microstep',\n actorRef: actorScope.self,\n event,\n snapshot: microstate,\n _transitions: transitions\n });\n microstates.push(microstate);\n }\n\n // Handle stop event\n if (event.type === XSTATE_STOP) {\n nextSnapshot = cloneMachineSnapshot(stopChildren(nextSnapshot, event, actorScope), {\n status: 'stopped'\n });\n addMicrostate(nextSnapshot, event, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n let nextEvent = event;\n\n // Assume the state is at rest (no raised events)\n // Determine the next state based on the next microstep\n if (nextEvent.type !== XSTATE_INIT) {\n const currentEvent = nextEvent;\n const isErr = isErrorActorEvent(currentEvent);\n const transitions = selectTransitions(currentEvent, nextSnapshot);\n if (isErr && !transitions.length) {\n // TODO: we should likely only allow transitions selected by very explicit descriptors\n // `*` shouldn't be matched, likely `xstate.error.*` shouldnt be either\n // similarly `xstate.error.actor.*` and `xstate.error.actor.todo.*` have to be considered too\n nextSnapshot = cloneMachineSnapshot(snapshot, {\n status: 'error',\n error: currentEvent.error\n });\n addMicrostate(nextSnapshot, currentEvent, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n nextSnapshot = microstep(transitions, snapshot, actorScope, nextEvent, false,\n // isInitial\n internalQueue);\n addMicrostate(nextSnapshot, currentEvent, transitions);\n }\n let shouldSelectEventlessTransitions = true;\n while (nextSnapshot.status === 'active') {\n let enabledTransitions = shouldSelectEventlessTransitions ? selectEventlessTransitions(nextSnapshot, nextEvent) : [];\n\n // eventless transitions should always be selected after selecting *regular* transitions\n // by assigning `undefined` to `previousState` we ensure that `shouldSelectEventlessTransitions` gets always computed to true in such a case\n const previousState = enabledTransitions.length ? nextSnapshot : undefined;\n if (!enabledTransitions.length) {\n if (!internalQueue.length) {\n break;\n }\n nextEvent = internalQueue.shift();\n enabledTransitions = selectTransitions(nextEvent, nextSnapshot);\n }\n nextSnapshot = microstep(enabledTransitions, nextSnapshot, actorScope, nextEvent, false, internalQueue);\n shouldSelectEventlessTransitions = nextSnapshot !== previousState;\n addMicrostate(nextSnapshot, nextEvent, enabledTransitions);\n }\n if (nextSnapshot.status !== 'active') {\n stopChildren(nextSnapshot, nextEvent, actorScope);\n }\n return {\n snapshot: nextSnapshot,\n microstates\n };\n}\nfunction stopChildren(nextState, event, actorScope) {\n return resolveActionsAndContext(nextState, event, actorScope, Object.values(nextState.children).map(child => stopChild(child)), []);\n}\nfunction selectTransitions(event, nextState) {\n return nextState.machine.getTransitionData(nextState, event);\n}\nfunction selectEventlessTransitions(nextState, event) {\n const enabledTransitionSet = new Set();\n const atomicStates = nextState._nodes.filter(isAtomicStateNode);\n for (const stateNode of atomicStates) {\n loop: for (const s of [stateNode].concat(getProperAncestors(stateNode, undefined))) {\n if (!s.always) {\n continue;\n }\n for (const transition of s.always) {\n if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, event, nextState)) {\n enabledTransitionSet.add(transition);\n break loop;\n }\n }\n }\n }\n return removeConflictingTransitions(Array.from(enabledTransitionSet), new Set(nextState._nodes), nextState.historyValue);\n}\n\n/**\n * Resolves a partial state value with its full representation in the state\n * node's machine.\n *\n * @param stateValue The partial state value to resolve.\n */\nfunction resolveStateValue(rootNode, stateValue) {\n const allStateNodes = getAllStateNodes(getStateNodes(rootNode, stateValue));\n return getStateValue(rootNode, [...allStateNodes]);\n}\n\nfunction isMachineSnapshot(value) {\n return !!value && typeof value === 'object' && 'machine' in value && 'value' in value;\n}\nconst machineSnapshotMatches = function matches(testValue) {\n return matchesState(testValue, this.value);\n};\nconst machineSnapshotHasTag = function hasTag(tag) {\n return this.tags.has(tag);\n};\nconst machineSnapshotCan = function can(event) {\n const transitionData = this.machine.getTransitionData(this, event);\n return !!transitionData?.length &&\n // Check that at least one transition is not forbidden\n transitionData.some(t => t.target !== undefined || t.actions.length);\n};\nconst machineSnapshotToJSON = function toJSON() {\n const {\n _nodes: nodes,\n tags,\n machine,\n getMeta,\n toJSON,\n can,\n hasTag,\n matches,\n ...jsonValues\n } = this;\n return {\n ...jsonValues,\n tags: Array.from(tags)\n };\n};\nconst machineSnapshotGetMeta = function getMeta() {\n return this._nodes.reduce((acc, stateNode) => {\n if (stateNode.meta !== undefined) {\n acc[stateNode.id] = stateNode.meta;\n }\n return acc;\n }, {});\n};\nfunction createMachineSnapshot(config, machine) {\n return {\n status: config.status,\n output: config.output,\n error: config.error,\n machine,\n context: config.context,\n _nodes: config._nodes,\n value: getStateValue(machine.root, config._nodes),\n tags: new Set(config._nodes.flatMap(sn => sn.tags)),\n children: config.children,\n historyValue: config.historyValue || {},\n matches: machineSnapshotMatches,\n hasTag: machineSnapshotHasTag,\n can: machineSnapshotCan,\n getMeta: machineSnapshotGetMeta,\n toJSON: machineSnapshotToJSON\n };\n}\nfunction cloneMachineSnapshot(snapshot, config = {}) {\n return createMachineSnapshot({\n ...snapshot,\n ...config\n }, snapshot.machine);\n}\nfunction getPersistedSnapshot(snapshot, options) {\n const {\n _nodes: nodes,\n tags,\n machine,\n children,\n context,\n can,\n hasTag,\n matches,\n getMeta,\n toJSON,\n ...jsonValues\n } = snapshot;\n const childrenJson = {};\n for (const id in children) {\n const child = children[id];\n childrenJson[id] = {\n snapshot: child.getPersistedSnapshot(options),\n src: child.src,\n systemId: child._systemId,\n syncSnapshot: child._syncSnapshot\n };\n }\n const persisted = {\n ...jsonValues,\n context: persistContext(context),\n children: childrenJson\n };\n return persisted;\n}\nfunction persistContext(contextPart) {\n let copy;\n for (const key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('sessionId' in value && 'send' in value && 'ref' in value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = {\n xstate$$type: $$ACTOR_TYPE,\n id: value.id\n };\n } else {\n const result = persistContext(value);\n if (result !== value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = result;\n }\n }\n }\n }\n return copy ?? contextPart;\n}\n\nfunction resolveRaise(_, snapshot, args, actionParams, {\n event: eventOrExpr,\n id,\n delay\n}, {\n internalQueue\n}) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(`Only event objects may be used with raise; use raise({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n if (typeof resolvedDelay !== 'number') {\n internalQueue.push(resolvedEvent);\n }\n return [snapshot, {\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }];\n}\nfunction executeRaise(actorScope, params) {\n const {\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.defer(() => {\n const self = actorScope.self;\n actorScope.system.scheduler.schedule(self, self, event, delay, id);\n });\n return;\n }\n}\n/**\n * Raises an event. This places the event in the internal event queue, so that\n * the event is immediately consumed by the machine in the current step.\n *\n * @param eventType The event to raise.\n */\nfunction raise(eventOrExpr, options) {\n function raise(args, params) {\n }\n raise.type = 'xstate.raise';\n raise.event = eventOrExpr;\n raise.id = options?.id;\n raise.delay = options?.delay;\n raise.resolve = resolveRaise;\n raise.execute = executeRaise;\n return raise;\n}\n\nexport { $$ACTOR_TYPE as $, createActor as A, Actor as B, interpret as C, and as D, not as E, or as F, stateIn as G, isMachineSnapshot as H, getAllOwnEventDescriptors as I, matchesState as J, pathToStateValue as K, toObserver as L, cancel as M, NULL_EVENT as N, raise as O, spawnChild as P, stop as Q, stopChild as R, STATE_DELIMITER as S, ProcessingStatus as T, cloneMachineSnapshot as U, XSTATE_ERROR as V, createErrorActorEvent as W, XSTATE_STOP as X, toTransitionConfigArray as a, formatTransition as b, createInvokeId as c, formatInitialTransition as d, evaluateGuard as e, formatTransitions as f, getDelayedTransitions as g, getCandidates as h, getAllStateNodes as i, getStateNodes as j, createMachineSnapshot as k, isInFinalState as l, mapValues as m, macrostep as n, transitionNode as o, resolveActionsAndContext as p, createInitEvent as q, resolveStateValue as r, microstep as s, toArray as t, getInitialStateNodes as u, toStatePath as v, isStateId as w, getStateNodeByPath as x, getPersistedSnapshot as y, resolveReferencedActor as z };\n", "import { X as XSTATE_STOP, A as createActor } from '../../dist/raise-0f7cf128.esm.js';\nimport '../../dev/dist/xstate-dev.esm.js';\n\n/**\n * Represents an actor created by `fromTransition`.\n *\n * The type of `self` within the actor's logic.\n *\n * @example\n *\n * ```ts\n * import {\n * fromTransition,\n * createActor,\n * type AnyActorSystem\n * } from 'xstate';\n *\n * //* The actor's stored context.\n * type Context = {\n * // The current count.\n * count: number;\n * // The amount to increase `count` by.\n * step: number;\n * };\n * // The events the actor receives.\n * type Event = { type: 'increment' };\n * // The actor's input.\n * type Input = { step?: number };\n *\n * // Actor logic that increments `count` by `step` when it receives an event of\n * // type `increment`.\n * const logic = fromTransition<Context, Event, AnyActorSystem, Input>(\n * (state, event, actorScope) => {\n * actorScope.self;\n * // ^? TransitionActorRef<Context, Event>\n *\n * if (event.type === 'increment') {\n * return {\n * ...state,\n * count: state.count + state.step\n * };\n * }\n * return state;\n * },\n * ({ input, self }) => {\n * self;\n * // ^? TransitionActorRef<Context, Event>\n *\n * return {\n * count: 0,\n * step: input.step ?? 1\n * };\n * }\n * );\n *\n * const actor = createActor(logic, { input: { step: 10 } });\n * // ^? TransitionActorRef<Context, Event>\n * ```\n *\n * @see {@link fromTransition}\n */\n\n/**\n * Returns actor logic given a transition function and its initial state.\n *\n * A \u201Ctransition function\u201D is a function that takes the current `state` and\n * received `event` object as arguments, and returns the next state, similar to\n * a reducer.\n *\n * Actors created from transition logic (\u201Ctransition actors\u201D) can:\n *\n * - Receive events\n * - Emit snapshots of its state\n *\n * The transition function\u2019s `state` is used as its transition actor\u2019s\n * `context`.\n *\n * Note that the \"state\" for a transition function is provided by the initial\n * state argument, and is not the same as the State object of an actor or a\n * state within a machine configuration.\n *\n * @example\n *\n * ```ts\n * const transitionLogic = fromTransition(\n * (state, event) => {\n * if (event.type === 'increment') {\n * return {\n * ...state,\n * count: state.count + 1\n * };\n * }\n * return state;\n * },\n * { count: 0 }\n * );\n *\n * const transitionActor = createActor(transitionLogic);\n * transitionActor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n * transitionActor.start();\n * // => {\n * // status: 'active',\n * // context: { count: 0 },\n * // ...\n * // }\n *\n * transitionActor.send({ type: 'increment' });\n * // => {\n * // status: 'active',\n * // context: { count: 1 },\n * // ...\n * // }\n * ```\n *\n * @param transition The transition function used to describe the transition\n * logic. It should return the next state given the current state and event.\n * It receives the following arguments:\n *\n * - `state` - the current state.\n * - `event` - the received event.\n * - `actorScope` - the actor scope object, with properties like `self` and\n * `system`.\n *\n * @param initialContext The initial state of the transition function, either an\n * object representing the state, or a function which returns a state object.\n * If a function, it will receive as its only argument an object with the\n * following properties:\n *\n * - `input` - the `input` provided to its parent transition actor.\n * - `self` - a reference to its parent transition actor.\n *\n * @returns Actor logic\n * @see {@link https://stately.ai/docs/input | Input docs} for more information about how input is passed\n */\nfunction fromTransition(transition, initialContext) {\n return {\n config: transition,\n transition: (snapshot, event, actorScope) => {\n return {\n ...snapshot,\n context: transition(snapshot.context, event, actorScope)\n };\n },\n getInitialSnapshot: (_, input) => {\n return {\n status: 'active',\n output: undefined,\n error: undefined,\n context: typeof initialContext === 'function' ? initialContext({\n input\n }) : initialContext\n };\n },\n getPersistedSnapshot: snapshot => snapshot,\n restoreSnapshot: snapshot => snapshot\n };\n}\n\nconst instanceStates = /* #__PURE__ */new WeakMap();\n\n/**\n * Represents an actor created by `fromCallback`.\n *\n * The type of `self` within the actor's logic.\n *\n * @example\n *\n * ```ts\n * import { fromCallback, createActor } from 'xstate';\n *\n * // The events the actor receives.\n * type Event = { type: 'someEvent' };\n * // The actor's input.\n * type Input = { name: string };\n *\n * // Actor logic that logs whenever it receives an event of type `someEvent`.\n * const logic = fromCallback<Event, Input>(({ self, input, receive }) => {\n * self;\n * // ^? CallbackActorRef<Event, Input>\n *\n * receive((event) => {\n * if (event.type === 'someEvent') {\n * console.log(`${input.name}: received \"someEvent\" event`);\n * // logs 'myActor: received \"someEvent\" event'\n * }\n * });\n * });\n *\n * const actor = createActor(logic, { input: { name: 'myActor' } });\n * // ^? CallbackActorRef<Event, Input>\n * ```\n *\n * @see {@link fromCallback}\n */\n\n/**\n * An actor logic creator which returns callback logic as defined by a callback\n * function.\n *\n * @remarks\n * Useful for subscription-based or other free-form logic that can send events\n * back to the parent actor.\n *\n * Actors created from callback logic (\u201Ccallback actors\u201D) can:\n *\n * - Receive events via the `receive` function\n * - Send events to the parent actor via the `sendBack` function\n *\n * Callback actors are a bit different from other actors in that they:\n *\n * - Do not work with `onDone`\n * - Do not produce a snapshot using `.getSnapshot()`\n * - Do not emit values when used with `.subscribe()`\n * - Can not be stopped with `.stop()`\n *\n * @example\n *\n * ```typescript\n * const callbackLogic = fromCallback(({ sendBack, receive }) => {\n * let lockStatus = 'unlocked';\n *\n * const handler = (event) => {\n * if (lockStatus === 'locked') {\n * return;\n * }\n * sendBack(event);\n * };\n *\n * receive((event) => {\n * if (event.type === 'lock') {\n * lockStatus = 'locked';\n * } else if (event.type === 'unlock') {\n * lockStatus = 'unlocked';\n * }\n * });\n *\n * document.body.addEventListener('click', handler);\n *\n * return () => {\n * document.body.removeEventListener('click', handler);\n * };\n * });\n * ```\n *\n * @param callback - The callback function used to describe the callback logic\n * The callback function is passed an object with the following properties:\n *\n * - `receive` - A function that can send events back to the parent actor; the\n * listener is then called whenever events are received by the callback\n * actor\n * - `sendBack` - A function that can send events back to the parent actor\n * - `input` - Data that was provided to the callback actor\n * - `self` - The parent actor of the callback actor\n * - `system` - The actor system to which the callback actor belongs The callback\n * function can (optionally) return a cleanup function, which is called\n * when the actor is stopped.\n *\n * @returns Callback logic\n * @see {@link CallbackLogicFunction} for more information about the callback function and its object argument\n * @see {@link https://stately.ai/docs/input | Input docs} for more information about how input is passed\n */\nfunction fromCallback(callback) {\n const logic = {\n config: callback,\n start: (state, actorScope) => {\n const {\n self,\n system,\n emit\n } = actorScope;\n const callbackState = {\n receivers: undefined,\n dispose: undefined\n };\n instanceStates.set(self, callbackState);\n callbackState.dispose = callback({\n input: state.input,\n system,\n self,\n sendBack: event => {\n if (self.getSnapshot().status === 'stopped') {\n return;\n }\n if (self._parent) {\n system._relay(self, self._parent, event);\n }\n },\n receive: listener => {\n callbackState.receivers ??= new Set();\n callbackState.receivers.add(listener);\n },\n emit\n });\n },\n transition: (state, event, actorScope) => {\n const callbackState = instanceStates.get(actorScope.self);\n if (event.type === XSTATE_STOP) {\n state = {\n ...state,\n status: 'stopped',\n error: undefined\n };\n callbackState.dispose?.();\n return state;\n }\n callbackState.receivers?.forEach(receiver => receiver(event));\n return state;\n },\n getInitialSnapshot: (_, input) => {\n return {\n status: 'active',\n output: undefined,\n error: undefined,\n input\n };\n },\n getPersistedSnapshot: snapshot => snapshot,\n restoreSnapshot: snapshot => snapshot\n };\n return logic;\n}\n\nconst XSTATE_OBSERVABLE_NEXT = 'xstate.observable.next';\nconst XSTATE_OBSERVABLE_ERROR = 'xstate.observable.error';\nconst XSTATE_OBSERVABLE_COMPLETE = 'xstate.observable.complete';\n\n/**\n * Represents an actor created by `fromObservable` or `fromEventObservable`.\n *\n * The type of `self` within the actor's logic.\n *\n * @example\n *\n * ```ts\n * import { fromObservable, createActor } from 'xstate';\n * import { interval } from 'rxjs';\n *\n * // The type of the value observed by the actor's logic.\n * type Context = number;\n * // The actor's input.\n * type Input = { period?: number };\n *\n * // Actor logic that observes a number incremented every `input.period`\n * // milliseconds (default: 1_000).\n * const logic = fromObservable<Context, Input>(({ input, self }) => {\n * self;\n * // ^? ObservableActorRef<Event, Input>\n *\n * return interval(input.period ?? 1_000);\n * });\n *\n * const actor = createActor(logic, { input: { period: 2_000 } });\n * // ^? ObservableActorRef<Event, Input>\n * ```\n *\n * @see {@link fromObservable}\n * @see {@link fromEventObservable}\n */\n\n/**\n * Observable actor logic is described by an observable stream of values. Actors\n * created from observable logic (\u201Cobservable actors\u201D) can:\n *\n * - Emit snapshots of the observable\u2019s emitted value\n *\n * The observable\u2019s emitted value is used as its observable actor\u2019s `context`.\n *\n * Sending events to observable actors will have no effect.\n *\n * @example\n *\n * ```ts\n * import { fromObservable, createActor } from 'xstate';\n * import { interval } from 'rxjs';\n *\n * const logic = fromObservable((obj) => interval(1000));\n *\n * const actor = createActor(logic);\n *\n * actor.subscribe((snapshot) => {\n * console.log(snapshot.context);\n * });\n *\n * actor.start();\n * // At every second:\n * // Logs 0\n * // Logs 1\n * // Logs 2\n * // ...\n * ```\n *\n * @param observableCreator A function that creates an observable. It receives\n * one argument, an object with the following properties:\n *\n * - `input` - Data that was provided to the observable actor\n * - `self` - The parent actor\n * - `system` - The actor system to which the observable actor belongs\n *\n * It should return a {@link Subscribable}, which is compatible with an RxJS\n * Observable, although RxJS is not required to create them.\n * @see {@link https://rxjs.dev} for documentation on RxJS Observable and observable creators.\n * @see {@link Subscribable} interface in XState, which is based on and compatible with RxJS Observable.\n */\nfunction fromObservable(observableCreator) {\n // TODO: add event types\n const logic = {\n config: observableCreator,\n transition: (snapshot, event) => {\n if (snapshot.status !== 'active') {\n return snapshot;\n }\n switch (event.type) {\n case XSTATE_OBSERVABLE_NEXT:\n {\n const newSnapshot = {\n ...snapshot,\n context: event.data\n };\n return newSnapshot;\n }\n case XSTATE_OBSERVABLE_ERROR:\n return {\n ...snapshot,\n status: 'error',\n error: event.data,\n input: undefined,\n _subscription: undefined\n };\n case XSTATE_OBSERVABLE_COMPLETE:\n return {\n ...snapshot,\n status: 'done',\n input: undefined,\n _subscription: undefined\n };\n case XSTATE_STOP:\n snapshot._subscription.unsubscribe();\n return {\n ...snapshot,\n status: 'stopped',\n input: undefined,\n _subscription: undefined\n };\n default:\n return snapshot;\n }\n },\n getInitialSnapshot: (_, input) => {\n return {\n status: 'active',\n output: undefined,\n error: undefined,\n context: undefined,\n input,\n _subscription: undefined\n };\n },\n start: (state, {\n self,\n system,\n emit\n }) => {\n if (state.status === 'done') {\n // Do not restart a completed observable\n return;\n }\n state._subscription = observableCreator({\n input: state.input,\n system,\n self,\n emit\n }).subscribe({\n next: value => {\n system._relay(self, self, {\n type: XSTATE_OBSERVABLE_NEXT,\n data: value\n });\n },\n error: err => {\n system._relay(self, self, {\n type: XSTATE_OBSERVABLE_ERROR,\n data: err\n });\n },\n complete: () => {\n system._relay(self, self, {\n type: XSTATE_OBSERVABLE_COMPLETE\n });\n }\n });\n },\n getPersistedSnapshot: ({\n _subscription,\n ...state\n }) => state,\n restoreSnapshot: state => ({\n ...state,\n _subscription: undefined\n })\n };\n return logic;\n}\n\n/**\n * Creates event observable logic that listens to an observable that delivers\n * event objects.\n *\n * Event observable actor logic is described by an observable stream of\n * {@link https://stately.ai/docs/transitions#event-objects | event objects}.\n * Actors created from event observable logic (\u201Cevent observable actors\u201D) can:\n *\n * - Implicitly send events to its parent actor\n * - Emit snapshots of its emitted event objects\n *\n * Sending events to event observable actors will have no effect.\n *\n * @example\n *\n * ```ts\n * import {\n * fromEventObservable,\n * Subscribable,\n * EventObject,\n * createMachine,\n * createActor\n * } from 'xstate';\n * import { fromEvent } from 'rxjs';\n *\n * const mouseClickLogic = fromEventObservable(\n * () => fromEvent(document.body, 'click') as Subscribable<EventObject>\n * );\n *\n * const canvasMachine = createMachine({\n * invoke: {\n * // Will send mouse `click` events to the canvas actor\n * src: mouseClickLogic\n * }\n * });\n *\n * const canvasActor = createActor(canvasMachine);\n * canvasActor.start();\n * ```\n *\n * @param lazyObservable A function that creates an observable that delivers\n * event objects. It receives one argument, an object with the following\n * properties:\n *\n * - `input` - Data that was provided to the event observable actor\n * - `self` - The parent actor\n * - `system` - The actor system to which the event observable actor belongs.\n *\n * It should return a {@link Subscribable}, which is compatible with an RxJS\n * Observable, although RxJS is not required to create them.\n */\nfunction fromEventObservable(lazyObservable) {\n // TODO: event types\n const logic = {\n config: lazyObservable,\n transition: (state, event) => {\n if (state.status !== 'active') {\n return state;\n }\n switch (event.type) {\n case XSTATE_OBSERVABLE_ERROR:\n return {\n ...state,\n status: 'error',\n error: event.data,\n input: undefined,\n _subscription: undefined\n };\n case XSTATE_OBSERVABLE_COMPLETE:\n return {\n ...state,\n status: 'done',\n input: undefined,\n _subscription: undefined\n };\n case XSTATE_STOP:\n state._subscription.unsubscribe();\n return {\n ...state,\n status: 'stopped',\n input: undefined,\n _subscription: undefined\n };\n default:\n return state;\n }\n },\n getInitialSnapshot: (_, input) => {\n return {\n status: 'active',\n output: undefined,\n error: undefined,\n context: undefined,\n input,\n _subscription: undefined\n };\n },\n start: (state, {\n self,\n system,\n emit\n }) => {\n if (state.status === 'done') {\n // Do not restart a completed observable\n return;\n }\n state._subscription = lazyObservable({\n input: state.input,\n system,\n self,\n emit\n }).subscribe({\n next: value => {\n if (self._parent) {\n system._relay(self, self._parent, value);\n }\n },\n error: err => {\n system._relay(self, self, {\n type: XSTATE_OBSERVABLE_ERROR,\n data: err\n });\n },\n complete: () => {\n system._relay(self, self, {\n type: XSTATE_OBSERVABLE_COMPLETE\n });\n }\n });\n },\n getPersistedSnapshot: ({\n _subscription,\n ...snapshot\n }) => snapshot,\n restoreSnapshot: snapshot => ({\n ...snapshot,\n _subscription: undefined\n })\n };\n return logic;\n}\n\nconst XSTATE_PROMISE_RESOLVE = 'xstate.promise.resolve';\nconst XSTATE_PROMISE_REJECT = 'xstate.promise.reject';\n\n/**\n * Represents an actor created by `fromPromise`.\n *\n * The type of `self` within the actor's logic.\n *\n * @example\n *\n * ```ts\n * import { fromPromise, createActor } from 'xstate';\n *\n * // The actor's resolved output\n * type Output = string;\n * // The actor's input.\n * type Input = { message: string };\n *\n * // Actor logic that fetches the url of an image of a cat saying `input.message`.\n * const logic = fromPromise<Output, Input>(async ({ input, self }) => {\n * self;\n * // ^? PromiseActorRef<Output, Input>\n *\n * const data = await fetch(\n * `https://cataas.com/cat/says/${input.message}`\n * );\n * const url = await data.json();\n * return url;\n * });\n *\n * const actor = createActor(logic, { input: { message: 'hello world' } });\n * // ^? PromiseActorRef<Output, Input>\n * ```\n *\n * @see {@link fromPromise}\n */\n\nconst controllerMap = new WeakMap();\n\n/**\n * An actor logic creator which returns promise logic as defined by an async\n * process that resolves or rejects after some time.\n *\n * Actors created from promise actor logic (\u201Cpromise actors\u201D) can:\n *\n * - Emit the resolved value of the promise\n * - Output the resolved value of the promise\n *\n * Sending events to promise actors will have no effect.\n *\n * @example\n *\n * ```ts\n * const promiseLogic = fromPromise(async () => {\n * const result = await fetch('https://example.com/...').then((data) =>\n * data.json()\n * );\n *\n * return result;\n * });\n *\n * const promiseActor = createActor(promiseLogic);\n * promiseActor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n * promiseActor.start();\n * // => {\n * // output: undefined,\n * // status: 'active'\n * // ...\n * // }\n *\n * // After promise resolves\n * // => {\n * // output: { ... },\n * // status: 'done',\n * // ...\n * // }\n * ```\n *\n * @param promiseCreator A function which returns a Promise, and accepts an\n * object with the following properties:\n *\n * - `input` - Data that was provided to the promise actor\n * - `self` - The parent actor of the promise actor\n * - `system` - The actor system to which the promise actor belongs\n *\n * @see {@link https://stately.ai/docs/input | Input docs} for more information about how input is passed\n */\nfunction fromPromise(promiseCreator) {\n const logic = {\n config: promiseCreator,\n transition: (state, event, scope) => {\n if (state.status !== 'active') {\n return state;\n }\n switch (event.type) {\n case XSTATE_PROMISE_RESOLVE:\n {\n const resolvedValue = event.data;\n return {\n ...state,\n status: 'done',\n output: resolvedValue,\n input: undefined\n };\n }\n case XSTATE_PROMISE_REJECT:\n return {\n ...state,\n status: 'error',\n error: event.data,\n input: undefined\n };\n case XSTATE_STOP:\n {\n controllerMap.get(scope.self)?.abort();\n return {\n ...state,\n status: 'stopped',\n input: undefined\n };\n }\n default:\n return state;\n }\n },\n start: (state, {\n self,\n system,\n emit\n }) => {\n // TODO: determine how to allow customizing this so that promises\n // can be restarted if necessary\n if (state.status !== 'active') {\n return;\n }\n const controller = new AbortController();\n controllerMap.set(self, controller);\n const resolvedPromise = Promise.resolve(promiseCreator({\n input: state.input,\n system,\n self,\n signal: controller.signal,\n emit\n }));\n resolvedPromise.then(response => {\n if (self.getSnapshot().status !== 'active') {\n return;\n }\n controllerMap.delete(self);\n system._relay(self, self, {\n type: XSTATE_PROMISE_RESOLVE,\n data: response\n });\n }, errorData => {\n if (self.getSnapshot().status !== 'active') {\n return;\n }\n controllerMap.delete(self);\n system._relay(self, self, {\n type: XSTATE_PROMISE_REJECT,\n data: errorData\n });\n });\n },\n getInitialSnapshot: (_, input) => {\n return {\n status: 'active',\n output: undefined,\n error: undefined,\n input\n };\n },\n getPersistedSnapshot: snapshot => snapshot,\n restoreSnapshot: snapshot => snapshot\n };\n return logic;\n}\n\nconst emptyLogic = fromTransition(_ => undefined, undefined);\nfunction createEmptyActor() {\n return createActor(emptyLogic);\n}\n\nexport { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition };\n", "import { T as ProcessingStatus, z as resolveReferencedActor, A as createActor, U as cloneMachineSnapshot, V as XSTATE_ERROR, W as createErrorActorEvent, e as evaluateGuard, M as cancel, O as raise, P as spawnChild, R as stopChild } from './raise-0f7cf128.esm.js';\n\nfunction createSpawner(actorScope, {\n machine,\n context\n}, event, spawnedChildren) {\n const spawn = (src, options = {}) => {\n const {\n systemId,\n input\n } = options;\n if (typeof src === 'string') {\n const logic = resolveReferencedActor(machine, src);\n if (!logic) {\n throw new Error(`Actor logic '${src}' not implemented in machine '${machine.id}'`);\n }\n const actorRef = createActor(logic, {\n id: options.id,\n parent: actorScope.self,\n syncSnapshot: options.syncSnapshot,\n input: typeof input === 'function' ? input({\n context,\n event,\n self: actorScope.self\n }) : input,\n src,\n systemId\n });\n spawnedChildren[actorRef.id] = actorRef;\n return actorRef;\n } else {\n const actorRef = createActor(src, {\n id: options.id,\n parent: actorScope.self,\n syncSnapshot: options.syncSnapshot,\n input: options.input,\n src,\n systemId\n });\n return actorRef;\n }\n };\n return (src, options) => {\n const actorRef = spawn(src, options); // TODO: fix types\n spawnedChildren[actorRef.id] = actorRef;\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n return actorRef;\n };\n}\n\nfunction resolveAssign(actorScope, snapshot, actionArgs, actionParams, {\n assignment\n}) {\n if (!snapshot.context) {\n throw new Error('Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.');\n }\n const spawnedChildren = {};\n const assignArgs = {\n context: snapshot.context,\n event: actionArgs.event,\n spawn: createSpawner(actorScope, snapshot, actionArgs.event, spawnedChildren),\n self: actorScope.self,\n system: actorScope.system\n };\n let partialUpdate = {};\n if (typeof assignment === 'function') {\n partialUpdate = assignment(assignArgs, actionParams);\n } else {\n for (const key of Object.keys(assignment)) {\n const propAssignment = assignment[key];\n partialUpdate[key] = typeof propAssignment === 'function' ? propAssignment(assignArgs, actionParams) : propAssignment;\n }\n }\n const updatedContext = Object.assign({}, snapshot.context, partialUpdate);\n return [cloneMachineSnapshot(snapshot, {\n context: updatedContext,\n children: Object.keys(spawnedChildren).length ? {\n ...snapshot.children,\n ...spawnedChildren\n } : snapshot.children\n })];\n}\n/**\n * Updates the current context of the machine.\n *\n * @example\n *\n * ```ts\n * import { createMachine, assign } from 'xstate';\n *\n * const countMachine = createMachine({\n * context: {\n * count: 0,\n * message: ''\n * },\n * on: {\n * inc: {\n * actions: assign({\n * count: ({ context }) => context.count + 1\n * })\n * },\n * updateMessage: {\n * actions: assign(({ context, event }) => {\n * return {\n * message: event.message.trim()\n * };\n * })\n * }\n * }\n * });\n * ```\n *\n * @param assignment An object that represents the partial context to update, or\n * a function that returns an object that represents the partial context to\n * update.\n */\nfunction assign(assignment) {\n function assign(args, params) {\n }\n assign.type = 'xstate.assign';\n assign.assignment = assignment;\n assign.resolve = resolveAssign;\n return assign;\n}\n\nfunction resolveEmit(_, snapshot, args, actionParams, {\n event: eventOrExpr\n}) {\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n return [snapshot, {\n event: resolvedEvent\n }];\n}\nfunction executeEmit(actorScope, {\n event\n}) {\n actorScope.defer(() => actorScope.emit(event));\n}\n/**\n * Emits an event to event handlers registered on the actor via `actor.on(event,\n * handler)`.\n *\n * @example\n *\n * ```ts\n * import { emit } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * something: {\n * actions: emit({\n * type: 'emitted',\n * some: 'data'\n * })\n * }\n * }\n * // ...\n * });\n *\n * const actor = createActor(machine).start();\n *\n * actor.on('emitted', (event) => {\n * console.log(event);\n * });\n *\n * actor.send({ type: 'something' });\n * // logs:\n * // {\n * // type: 'emitted',\n * // some: 'data'\n * // }\n * ```\n */\nfunction emit(/** The event to emit, or an expression that returns an event to emit. */\neventOrExpr) {\n function emit(args, params) {\n }\n emit.type = 'xstate.emit';\n emit.event = eventOrExpr;\n emit.resolve = resolveEmit;\n emit.execute = executeEmit;\n return emit;\n}\n\n/**\n * @remarks\n * `T | unknown` reduces to `unknown` and that can be problematic when it comes\n * to contextual typing. It especially is a problem when the union has a\n * function member, like here:\n *\n * ```ts\n * declare function test(\n * cbOrVal: ((arg: number) => unknown) | unknown\n * ): void;\n * test((arg) => {}); // oops, implicit any\n * ```\n *\n * This type can be used to avoid this problem. This union represents the same\n * value space as `unknown`.\n */\n\n// https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887\n\n// @TODO: Replace with native `NoInfer` when TS issue gets fixed:\n// https://github.com/microsoft/TypeScript/pull/57673\n\n/** @deprecated Use the built-in `NoInfer` type instead */\n\n/** The full definition of an event, with a string `type`. */\n\n/**\n * The string or object representing the state value relative to the parent\n * state node.\n *\n * @remarks\n * - For a child atomic state node, this is a string, e.g., `\"pending\"`.\n * - For complex state nodes, this is an object, e.g., `{ success:\n * \"someChildState\" }`.\n */\n\n// TODO: remove once TS fixes this type-widening issue\n\n/** @deprecated Use `AnyMachineSnapshot` instead */\n\n// TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something\n/** @ignore */\n\nlet SpecialTargets = /*#__PURE__*/function (SpecialTargets) {\n SpecialTargets[\"Parent\"] = \"#_parent\";\n SpecialTargets[\"Internal\"] = \"#_internal\";\n return SpecialTargets;\n}({});\n\n/** @deprecated Use `AnyActor` instead. */\n\n// Based on RxJS types\n\n// TODO: in v6, this should only accept AnyActorLogic, like ActorRefFromLogic\n\n/** @deprecated Use `Actor<T>` instead. */\n\n/**\n * Represents logic which can be used by an actor.\n *\n * @template TSnapshot - The type of the snapshot.\n * @template TEvent - The type of the event object.\n * @template TInput - The type of the input.\n * @template TSystem - The type of the actor system.\n */\n\n/** @deprecated */\n\nfunction resolveSendTo(actorScope, snapshot, args, actionParams, {\n to,\n event: eventOrExpr,\n id,\n delay\n}, extra) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n const resolvedTarget = typeof to === 'function' ? to(args, actionParams) : to;\n let targetActorRef;\n if (typeof resolvedTarget === 'string') {\n if (resolvedTarget === SpecialTargets.Parent) {\n targetActorRef = actorScope.self._parent;\n } else if (resolvedTarget === SpecialTargets.Internal) {\n targetActorRef = actorScope.self;\n } else if (resolvedTarget.startsWith('#_')) {\n // SCXML compatibility: https://www.w3.org/TR/scxml/#SCXMLEventProcessor\n // #_invokeid. If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that the sending session has created by <invoke>, the Processor must add the event to the external queue of that session.\n targetActorRef = snapshot.children[resolvedTarget.slice(2)];\n } else {\n targetActorRef = extra.deferredActorIds?.includes(resolvedTarget) ? resolvedTarget : snapshot.children[resolvedTarget];\n }\n if (!targetActorRef) {\n throw new Error(`Unable to send event to actor '${resolvedTarget}' from machine '${snapshot.machine.id}'.`);\n }\n } else {\n targetActorRef = resolvedTarget || actorScope.self;\n }\n return [snapshot, {\n to: targetActorRef,\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }];\n}\nfunction retryResolveSendTo(_, snapshot, params) {\n if (typeof params.to === 'string') {\n params.to = snapshot.children[params.to];\n }\n}\nfunction executeSendTo(actorScope, params) {\n // this forms an outgoing events queue\n // thanks to that the recipient actors are able to read the *updated* snapshot value of the sender\n actorScope.defer(() => {\n const {\n to,\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.system.scheduler.schedule(actorScope.self, to, event, delay, id);\n return;\n }\n actorScope.system._relay(actorScope.self,\n // at this point, in a deferred task, it should already be mutated by retryResolveSendTo\n // if it initially started as a string\n to, event.type === XSTATE_ERROR ? createErrorActorEvent(actorScope.self.id, event.data) : event);\n });\n}\n/**\n * Sends an event to an actor.\n *\n * @param actor The `ActorRef` to send the event to.\n * @param event The event to send, or an expression that evaluates to the event\n * to send\n * @param options Send action options\n *\n * - `id` - The unique send event identifier (used with `cancel()`).\n * - `delay` - The number of milliseconds to delay the sending of the event.\n */\nfunction sendTo(to, eventOrExpr, options) {\n function sendTo(args, params) {\n }\n sendTo.type = 'xsnapshot.sendTo';\n sendTo.to = to;\n sendTo.event = eventOrExpr;\n sendTo.id = options?.id;\n sendTo.delay = options?.delay;\n sendTo.resolve = resolveSendTo;\n sendTo.retryResolve = retryResolveSendTo;\n sendTo.execute = executeSendTo;\n return sendTo;\n}\n\n/**\n * Sends an event to this machine's parent.\n *\n * @param event The event to send to the parent machine.\n * @param options Options to pass into the send event.\n */\nfunction sendParent(event, options) {\n return sendTo(SpecialTargets.Parent, event, options);\n}\n/**\n * Forwards (sends) an event to the `target` actor.\n *\n * @param target The target actor to forward the event to.\n * @param options Options to pass into the send action creator.\n */\nfunction forwardTo(target, options) {\n return sendTo(target, ({\n event\n }) => event, options);\n}\n\nfunction resolveEnqueueActions(actorScope, snapshot, args, actionParams, {\n collect\n}) {\n const actions = [];\n const enqueue = function enqueue(action) {\n actions.push(action);\n };\n enqueue.assign = (...args) => {\n actions.push(assign(...args));\n };\n enqueue.cancel = (...args) => {\n actions.push(cancel(...args));\n };\n enqueue.raise = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay`\n actions.push(raise(...args));\n };\n enqueue.sendTo = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay\n actions.push(sendTo(...args));\n };\n enqueue.sendParent = (...args) => {\n actions.push(sendParent(...args));\n };\n enqueue.spawnChild = (...args) => {\n actions.push(spawnChild(...args));\n };\n enqueue.stopChild = (...args) => {\n actions.push(stopChild(...args));\n };\n enqueue.emit = (...args) => {\n actions.push(emit(...args));\n };\n collect({\n context: args.context,\n event: args.event,\n enqueue,\n check: guard => evaluateGuard(guard, snapshot.context, args.event, snapshot),\n self: actorScope.self,\n system: actorScope.system\n }, actionParams);\n return [snapshot, undefined, actions];\n}\n/**\n * Creates an action object that will execute actions that are queued by the\n * `enqueue(action)` function.\n *\n * @example\n *\n * ```ts\n * import { createMachine, enqueueActions } from 'xstate';\n *\n * const machine = createMachine({\n * entry: enqueueActions(({ enqueue, check }) => {\n * enqueue.assign({ count: 0 });\n *\n * if (check('someGuard')) {\n * enqueue.assign({ count: 1 });\n * }\n *\n * enqueue('someAction');\n * })\n * });\n * ```\n */\nfunction enqueueActions(collect) {\n function enqueueActions(args, params) {\n }\n enqueueActions.type = 'xstate.enqueueActions';\n enqueueActions.collect = collect;\n enqueueActions.resolve = resolveEnqueueActions;\n return enqueueActions;\n}\n\nfunction resolveLog(_, snapshot, actionArgs, actionParams, {\n value,\n label\n}) {\n return [snapshot, {\n value: typeof value === 'function' ? value(actionArgs, actionParams) : value,\n label\n }];\n}\nfunction executeLog({\n logger\n}, {\n value,\n label\n}) {\n if (label) {\n logger(label, value);\n } else {\n logger(value);\n }\n}\n/**\n * @param expr The expression function to evaluate which will be logged. Takes\n * in 2 arguments:\n *\n * - `ctx` - the current state context\n * - `event` - the event that caused this action to be executed.\n *\n * @param label The label to give to the logged expression.\n */\nfunction log(value = ({\n context,\n event\n}) => ({\n context,\n event\n}), label) {\n function log(args, params) {\n }\n log.type = 'xstate.log';\n log.value = value;\n log.label = label;\n log.resolve = resolveLog;\n log.execute = executeLog;\n return log;\n}\n\nexport { SpecialTargets as S, assign as a, enqueueActions as b, sendTo as c, emit as e, forwardTo as f, log as l, sendParent as s };\n", "export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.esm.js';\nimport { t as toArray, S as STATE_DELIMITER, m as mapValues, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as toStatePath, w as isStateId, x as getStateNodeByPath, y as getPersistedSnapshot, z as resolveReferencedActor, A as createActor, $ as $$ACTOR_TYPE } from './raise-0f7cf128.esm.js';\nexport { B as Actor, I as __unsafe_getAllOwnEventDescriptors, D as and, M as cancel, A as createActor, j as getStateNodes, C as interpret, H as isMachineSnapshot, J as matchesState, E as not, F as or, K as pathToStateValue, O as raise, P as spawnChild, G as stateIn, Q as stop, R as stopChild, L as toObserver } from './raise-0f7cf128.esm.js';\nimport { a as assign } from './log-15d0f775.esm.js';\nexport { S as SpecialTargets, a as assign, e as emit, b as enqueueActions, f as forwardTo, l as log, s as sendParent, c as sendTo } from './log-15d0f775.esm.js';\nimport '../dev/dist/xstate-dev.esm.js';\n\n/**\n * Asserts that the given event object is of the specified type or types. Throws\n * an error if the event object is not of the specified types.\n *\n * @example\n *\n * ```ts\n * // ...\n * entry: ({ event }) => {\n * assertEvent(event, 'doNothing');\n * // event is { type: 'doNothing' }\n * },\n * // ...\n * exit: ({ event }) => {\n * assertEvent(event, 'greet');\n * // event is { type: 'greet'; message: string }\n *\n * assertEvent(event, ['greet', 'notify']);\n * // event is { type: 'greet'; message: string }\n * // or { type: 'notify'; message: string; level: 'info' | 'error' }\n * },\n * ```\n */\nfunction assertEvent(event, type) {\n const types = toArray(type);\n if (!types.includes(event.type)) {\n const typesText = types.length === 1 ? `type \"${types[0]}\"` : `one of types \"${types.join('\", \"')}\"`;\n throw new Error(`Expected event ${JSON.stringify(event)} to have ${typesText}`);\n }\n}\n\nconst cache = new WeakMap();\nfunction memo(object, key, fn) {\n let memoizedData = cache.get(object);\n if (!memoizedData) {\n memoizedData = {\n [key]: fn()\n };\n cache.set(object, memoizedData);\n } else if (!(key in memoizedData)) {\n memoizedData[key] = fn();\n }\n return memoizedData[key];\n}\n\nconst EMPTY_OBJECT = {};\nconst toSerializableAction = action => {\n if (typeof action === 'string') {\n return {\n type: action\n };\n }\n if (typeof action === 'function') {\n if ('resolve' in action) {\n return {\n type: action.type\n };\n }\n return {\n type: action.name\n };\n }\n return action;\n};\nclass StateNode {\n constructor(/** The raw config used to create the machine. */\n config, options) {\n this.config = config;\n /**\n * The relative key of the state node, which represents its location in the\n * overall state value.\n */\n this.key = void 0;\n /** The unique ID of the state node. */\n this.id = void 0;\n /**\n * The type of this state node:\n *\n * - `'atomic'` - no child state nodes\n * - `'compound'` - nested child state nodes (XOR)\n * - `'parallel'` - orthogonal nested child state nodes (AND)\n * - `'history'` - history state node\n * - `'final'` - final state node\n */\n this.type = void 0;\n /** The string path from the root machine node to this node. */\n this.path = void 0;\n /** The child state nodes. */\n this.states = void 0;\n /**\n * The type of history on this state node. Can be:\n *\n * - `'shallow'` - recalls only top-level historical state value\n * - `'deep'` - recalls historical state value at all levels\n */\n this.history = void 0;\n /** The action(s) to be executed upon entering the state node. */\n this.entry = void 0;\n /** The action(s) to be executed upon exiting the state node. */\n this.exit = void 0;\n /** The parent state node. */\n this.parent = void 0;\n /** The root machine node. */\n this.machine = void 0;\n /**\n * The meta data associated with this state node, which will be returned in\n * State instances.\n */\n this.meta = void 0;\n /**\n * The output data sent with the \"xstate.done.state._id_\" event if this is a\n * final state node.\n */\n this.output = void 0;\n /**\n * The order this state node appears. Corresponds to the implicit document\n * order.\n */\n this.order = -1;\n this.description = void 0;\n this.tags = [];\n this.transitions = void 0;\n this.always = void 0;\n this.parent = options._parent;\n this.key = options._key;\n this.machine = options._machine;\n this.path = this.parent ? this.parent.path.concat(this.key) : [];\n this.id = this.config.id || [this.machine.id, ...this.path].join(STATE_DELIMITER);\n this.type = this.config.type || (this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');\n this.description = this.config.description;\n this.order = this.machine.idMap.size;\n this.machine.idMap.set(this.id, this);\n this.states = this.config.states ? mapValues(this.config.states, (stateConfig, key) => {\n const stateNode = new StateNode(stateConfig, {\n _parent: this,\n _key: key,\n _machine: this.machine\n });\n return stateNode;\n }) : EMPTY_OBJECT;\n if (this.type === 'compound' && !this.config.initial) {\n throw new Error(`No initial state specified for compound state node \"#${this.id}\". Try adding { initial: \"${Object.keys(this.states)[0]}\" } to the state config.`);\n }\n\n // History config\n this.history = this.config.history === true ? 'shallow' : this.config.history || false;\n this.entry = toArray(this.config.entry).slice();\n this.exit = toArray(this.config.exit).slice();\n this.meta = this.config.meta;\n this.output = this.type === 'final' || !this.parent ? this.config.output : undefined;\n this.tags = toArray(config.tags).slice();\n }\n\n /** @internal */\n _initialize() {\n this.transitions = formatTransitions(this);\n if (this.config.always) {\n this.always = toTransitionConfigArray(this.config.always).map(t => formatTransition(this, NULL_EVENT, t));\n }\n Object.keys(this.states).forEach(key => {\n this.states[key]._initialize();\n });\n }\n\n /** The well-structured state node definition. */\n get definition() {\n return {\n id: this.id,\n key: this.key,\n version: this.machine.version,\n type: this.type,\n initial: this.initial ? {\n target: this.initial.target,\n source: this,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null,\n reenter: false,\n toJSON: () => ({\n target: this.initial.target.map(t => `#${t.id}`),\n source: `#${this.id}`,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null\n })\n } : undefined,\n history: this.history,\n states: mapValues(this.states, state => {\n return state.definition;\n }),\n on: this.on,\n transitions: [...this.transitions.values()].flat().map(t => ({\n ...t,\n actions: t.actions.map(toSerializableAction)\n })),\n entry: this.entry.map(toSerializableAction),\n exit: this.exit.map(toSerializableAction),\n meta: this.meta,\n order: this.order || -1,\n output: this.output,\n invoke: this.invoke,\n description: this.description,\n tags: this.tags\n };\n }\n\n /** @internal */\n toJSON() {\n return this.definition;\n }\n\n /** The logic invoked as actors by this state node. */\n get invoke() {\n return memo(this, 'invoke', () => toArray(this.config.invoke).map((invokeConfig, i) => {\n const {\n src,\n systemId\n } = invokeConfig;\n const resolvedId = invokeConfig.id ?? createInvokeId(this.id, i);\n const resolvedSrc = typeof src === 'string' ? src : `xstate.invoke.${createInvokeId(this.id, i)}`;\n return {\n ...invokeConfig,\n src: resolvedSrc,\n id: resolvedId,\n systemId: systemId,\n toJSON() {\n const {\n onDone,\n onError,\n ...invokeDefValues\n } = invokeConfig;\n return {\n ...invokeDefValues,\n type: 'xstate.invoke',\n src: resolvedSrc,\n id: resolvedId\n };\n }\n };\n }));\n }\n\n /** The mapping of events to transitions. */\n get on() {\n return memo(this, 'on', () => {\n const transitions = this.transitions;\n return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {\n map[descriptor] = map[descriptor] || [];\n map[descriptor].push(transition);\n return map;\n }, {});\n });\n }\n get after() {\n return memo(this, 'delayedTransitions', () => getDelayedTransitions(this));\n }\n get initial() {\n return memo(this, 'initial', () => formatInitialTransition(this, this.config.initial));\n }\n\n /** @internal */\n next(snapshot, event) {\n const eventType = event.type;\n const actions = [];\n let selectedTransition;\n const candidates = memo(this, `candidates-${eventType}`, () => getCandidates(this, eventType));\n for (const candidate of candidates) {\n const {\n guard\n } = candidate;\n const resolvedContext = snapshot.context;\n let guardPassed = false;\n try {\n guardPassed = !guard || evaluateGuard(guard, resolvedContext, event, snapshot);\n } catch (err) {\n const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;\n throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\\n${err.message}`);\n }\n if (guardPassed) {\n actions.push(...candidate.actions);\n selectedTransition = candidate;\n break;\n }\n }\n return selectedTransition ? [selectedTransition] : undefined;\n }\n\n /** All the event types accepted by this state node and its descendants. */\n get events() {\n return memo(this, 'events', () => {\n const {\n states\n } = this;\n const events = new Set(this.ownEvents);\n if (states) {\n for (const stateId of Object.keys(states)) {\n const state = states[stateId];\n if (state.states) {\n for (const event of state.events) {\n events.add(`${event}`);\n }\n }\n }\n }\n return Array.from(events);\n });\n }\n\n /**\n * All the events that have transitions directly from this state node.\n *\n * Excludes any inert events.\n */\n get ownEvents() {\n const events = new Set([...this.transitions.keys()].filter(descriptor => {\n return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));\n }));\n return Array.from(events);\n }\n}\n\nconst STATE_IDENTIFIER = '#';\nclass StateMachine {\n constructor(/** The raw config used to create the machine. */\n config, implementations) {\n this.config = config;\n /** The machine's own version. */\n this.version = void 0;\n this.schemas = void 0;\n this.implementations = void 0;\n /** @internal */\n this.__xstatenode = true;\n /** @internal */\n this.idMap = new Map();\n this.root = void 0;\n this.id = void 0;\n this.states = void 0;\n this.events = void 0;\n this.id = config.id || '(machine)';\n this.implementations = {\n actors: implementations?.actors ?? {},\n actions: implementations?.actions ?? {},\n delays: implementations?.delays ?? {},\n guards: implementations?.guards ?? {}\n };\n this.version = this.config.version;\n this.schemas = this.config.schemas;\n this.transition = this.transition.bind(this);\n this.getInitialSnapshot = this.getInitialSnapshot.bind(this);\n this.getPersistedSnapshot = this.getPersistedSnapshot.bind(this);\n this.restoreSnapshot = this.restoreSnapshot.bind(this);\n this.start = this.start.bind(this);\n this.root = new StateNode(config, {\n _key: this.id,\n _machine: this\n });\n this.root._initialize();\n this.states = this.root.states; // TODO: remove!\n this.events = this.root.events;\n }\n\n /**\n * Clones this state machine with the provided implementations and merges the\n * `context` (if provided).\n *\n * @param implementations Options (`actions`, `guards`, `actors`, `delays`,\n * `context`) to recursively merge with the existing options.\n * @returns A new `StateMachine` instance with the provided implementations.\n */\n provide(implementations) {\n const {\n actions,\n guards,\n actors,\n delays\n } = this.implementations;\n return new StateMachine(this.config, {\n actions: {\n ...actions,\n ...implementations.actions\n },\n guards: {\n ...guards,\n ...implementations.guards\n },\n actors: {\n ...actors,\n ...implementations.actors\n },\n delays: {\n ...delays,\n ...implementations.delays\n }\n });\n }\n resolveState(config) {\n const resolvedStateValue = resolveStateValue(this.root, config.value);\n const nodeSet = getAllStateNodes(getStateNodes(this.root, resolvedStateValue));\n return createMachineSnapshot({\n _nodes: [...nodeSet],\n context: config.context || {},\n children: {},\n status: isInFinalState(nodeSet, this.root) ? 'done' : config.status || 'active',\n output: config.output,\n error: config.error,\n historyValue: config.historyValue\n }, this);\n }\n\n /**\n * Determines the next snapshot given the current `snapshot` and received\n * `event`. Calculates a full macrostep from all microsteps.\n *\n * @param snapshot The current snapshot\n * @param event The received event\n */\n transition(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope).snapshot;\n }\n\n /**\n * Determines the next state given the current `state` and `event`. Calculates\n * a microstep.\n *\n * @param state The current state\n * @param event The received event\n */\n microstep(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope).microstates;\n }\n getTransitionData(snapshot, event) {\n return transitionNode(this.root, snapshot.value, snapshot, event) || [];\n }\n\n /**\n * The initial state _before_ evaluating any microsteps. This \"pre-initial\"\n * state is provided to initial actions executed in the initial state.\n */\n getPreInitialState(actorScope, initEvent, internalQueue) {\n const {\n context\n } = this.config;\n const preInitial = createMachineSnapshot({\n context: typeof context !== 'function' && context ? context : {},\n _nodes: [this.root],\n children: {},\n status: 'active'\n }, this);\n if (typeof context === 'function') {\n const assignment = ({\n spawn,\n event,\n self\n }) => context({\n spawn,\n input: event.input,\n self\n });\n return resolveActionsAndContext(preInitial, initEvent, actorScope, [assign(assignment)], internalQueue);\n }\n return preInitial;\n }\n\n /**\n * Returns the initial `State` instance, with reference to `self` as an\n * `ActorRef`.\n */\n getInitialSnapshot(actorScope, input) {\n const initEvent = createInitEvent(input); // TODO: fix;\n const internalQueue = [];\n const preInitialState = this.getPreInitialState(actorScope, initEvent, internalQueue);\n const nextState = microstep([{\n target: [...getInitialStateNodes(this.root)],\n source: this.root,\n reenter: true,\n actions: [],\n eventType: null,\n toJSON: null // TODO: fix\n }], preInitialState, actorScope, initEvent, true, internalQueue);\n const {\n snapshot: macroState\n } = macrostep(nextState, initEvent, actorScope, internalQueue);\n return macroState;\n }\n start(snapshot) {\n Object.values(snapshot.children).forEach(child => {\n if (child.getSnapshot().status === 'active') {\n child.start();\n }\n });\n }\n getStateNodeById(stateId) {\n const fullPath = toStatePath(stateId);\n const relativePath = fullPath.slice(1);\n const resolvedStateId = isStateId(fullPath[0]) ? fullPath[0].slice(STATE_IDENTIFIER.length) : fullPath[0];\n const stateNode = this.idMap.get(resolvedStateId);\n if (!stateNode) {\n throw new Error(`Child state node '#${resolvedStateId}' does not exist on machine '${this.id}'`);\n }\n return getStateNodeByPath(stateNode, relativePath);\n }\n get definition() {\n return this.root.definition;\n }\n toJSON() {\n return this.definition;\n }\n getPersistedSnapshot(snapshot, options) {\n return getPersistedSnapshot(snapshot, options);\n }\n restoreSnapshot(snapshot, _actorScope) {\n const children = {};\n const snapshotChildren = snapshot.children;\n Object.keys(snapshotChildren).forEach(actorId => {\n const actorData = snapshotChildren[actorId];\n const childState = actorData.snapshot;\n const src = actorData.src;\n const logic = typeof src === 'string' ? resolveReferencedActor(this, src) : src;\n if (!logic) {\n return;\n }\n const actorRef = createActor(logic, {\n id: actorId,\n parent: _actorScope.self,\n syncSnapshot: actorData.syncSnapshot,\n snapshot: childState,\n src,\n systemId: actorData.systemId\n });\n children[actorId] = actorRef;\n });\n const restoredSnapshot = createMachineSnapshot({\n ...snapshot,\n children,\n _nodes: Array.from(getAllStateNodes(getStateNodes(this.root, snapshot.value)))\n }, this);\n let seen = new Set();\n function reviveContext(contextPart, children) {\n if (seen.has(contextPart)) {\n return;\n }\n seen.add(contextPart);\n for (let key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('xstate$$type' in value && value.xstate$$type === $$ACTOR_TYPE) {\n contextPart[key] = children[value.id];\n continue;\n }\n reviveContext(value, children);\n }\n }\n }\n reviveContext(restoredSnapshot.context, children);\n return restoredSnapshot;\n }\n}\n\n// this is not 100% accurate since we can't make parallel regions required in the result\n// `TTestValue` doesn't encode this information anyhow for us to be able to do that\n// this is fine for most practical use cases anyway though\n\n/**\n * Creates a state machine (statechart) with the given configuration.\n *\n * The state machine represents the pure logic of a state machine actor.\n *\n * @example\n *\n * ```ts\n * import { createMachine } from 'xstate';\n *\n * const lightMachine = createMachine({\n * id: 'light',\n * initial: 'green',\n * states: {\n * green: {\n * on: {\n * TIMER: { target: 'yellow' }\n * }\n * },\n * yellow: {\n * on: {\n * TIMER: { target: 'red' }\n * }\n * },\n * red: {\n * on: {\n * TIMER: { target: 'green' }\n * }\n * }\n * }\n * });\n *\n * const lightActor = createActor(lightMachine);\n * lightActor.start();\n *\n * lightActor.send({ type: 'TIMER' });\n * ```\n *\n * @param config The state machine configuration.\n * @param options DEPRECATED: use `setup({ ... })` or `machine.provide({ ... })`\n * to provide machine implementations instead.\n */\nfunction createMachine(config, implementations) {\n return new StateMachine(config, implementations);\n}\n\n/** @internal */\nfunction createInertActorScope(actorLogic) {\n const self = createActor(actorLogic);\n const inertActorScope = {\n self,\n defer: () => {},\n id: '',\n logger: () => {},\n sessionId: '',\n stopChild: () => {},\n system: self.system,\n emit: () => {}\n };\n return inertActorScope;\n}\nfunction getInitialSnapshot(actorLogic, ...[input]) {\n const actorScope = createInertActorScope(actorLogic);\n return actorLogic.getInitialSnapshot(actorScope, input);\n}\n\n/**\n * Determines the next snapshot for the given `actorLogic` based on the given\n * `snapshot` and `event`.\n *\n * If the `snapshot` is `undefined`, the initial snapshot of the `actorLogic` is\n * used.\n *\n * @example\n *\n * ```ts\n * import { getNextSnapshot } from 'xstate';\n * import { trafficLightMachine } from './trafficLightMachine.ts';\n *\n * const nextSnapshot = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * undefined, // snapshot (or initial state if undefined)\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot.value);\n * // => 'yellow'\n *\n * const nextSnapshot2 = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * nextSnapshot, // snapshot\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot2.value);\n * // =>'red'\n * ```\n */\nfunction getNextSnapshot(actorLogic, snapshot, event) {\n const inertActorScope = createInertActorScope(actorLogic);\n inertActorScope.self._snapshot = snapshot;\n return actorLogic.transition(snapshot, event, inertActorScope);\n}\n\n// at the moment we allow extra actors - ones that are not specified by `children`\n// this could be reconsidered in the future\n\nfunction setup({\n schemas,\n actors,\n actions,\n guards,\n delays\n}) {\n return {\n createMachine: config => createMachine({\n ...config,\n schemas\n }, {\n actors,\n actions,\n guards,\n delays\n })\n };\n}\n\nclass SimulatedClock {\n constructor() {\n this.timeouts = new Map();\n this._now = 0;\n this._id = 0;\n this._flushing = false;\n this._flushingInvalidated = false;\n }\n now() {\n return this._now;\n }\n getId() {\n return this._id++;\n }\n setTimeout(fn, timeout) {\n this._flushingInvalidated = this._flushing;\n const id = this.getId();\n this.timeouts.set(id, {\n start: this.now(),\n timeout,\n fn\n });\n return id;\n }\n clearTimeout(id) {\n this._flushingInvalidated = this._flushing;\n this.timeouts.delete(id);\n }\n set(time) {\n if (this._now > time) {\n throw new Error('Unable to travel back in time');\n }\n this._now = time;\n this.flushTimeouts();\n }\n flushTimeouts() {\n if (this._flushing) {\n this._flushingInvalidated = true;\n return;\n }\n this._flushing = true;\n const sorted = [...this.timeouts].sort(([_idA, timeoutA], [_idB, timeoutB]) => {\n const endA = timeoutA.start + timeoutA.timeout;\n const endB = timeoutB.start + timeoutB.timeout;\n return endB > endA ? -1 : 1;\n });\n for (const [id, timeout] of sorted) {\n if (this._flushingInvalidated) {\n this._flushingInvalidated = false;\n this._flushing = false;\n this.flushTimeouts();\n return;\n }\n if (this.now() - timeout.start >= timeout.timeout) {\n this.timeouts.delete(id);\n timeout.fn.call(null);\n }\n }\n this._flushing = false;\n }\n increment(ms) {\n this._now += ms;\n this.flushTimeouts();\n }\n}\n\n/**\n * Returns a promise that resolves to the `output` of the actor when it is done.\n *\n * @example\n *\n * ```ts\n * const machine = createMachine({\n * // ...\n * output: {\n * count: 42\n * }\n * });\n *\n * const actor = createActor(machine);\n *\n * actor.start();\n *\n * const output = await toPromise(actor);\n *\n * console.log(output);\n * // logs { count: 42 }\n * ```\n */\nfunction toPromise(actor) {\n return new Promise((resolve, reject) => {\n actor.subscribe({\n complete: () => {\n resolve(actor.getSnapshot().output);\n },\n error: reject\n });\n });\n}\n\nconst defaultWaitForOptions = {\n timeout: Infinity // much more than 10 seconds\n};\n\n/**\n * Subscribes to an actor ref and waits for its emitted value to satisfy a\n * predicate, and then resolves with that value. Will throw if the desired state\n * is not reached after an optional timeout. (defaults to Infinity).\n *\n * @example\n *\n * ```js\n * const state = await waitFor(someService, (state) => {\n * return state.hasTag('loaded');\n * });\n *\n * state.hasTag('loaded'); // true\n * ```\n *\n * @param actorRef The actor ref to subscribe to\n * @param predicate Determines if a value matches the condition to wait for\n * @param options\n * @returns A promise that eventually resolves to the emitted value that matches\n * the condition\n */\nfunction waitFor(actorRef, predicate, options) {\n const resolvedOptions = {\n ...defaultWaitForOptions,\n ...options\n };\n return new Promise((res, rej) => {\n const {\n signal\n } = resolvedOptions;\n if (signal?.aborted) {\n rej(signal.reason);\n return;\n }\n let done = false;\n const handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(() => {\n dispose();\n rej(new Error(`Timeout of ${resolvedOptions.timeout} ms exceeded`));\n }, resolvedOptions.timeout);\n const dispose = () => {\n clearTimeout(handle);\n done = true;\n sub?.unsubscribe();\n if (abortListener) {\n signal.removeEventListener('abort', abortListener);\n }\n };\n function checkEmitted(emitted) {\n if (predicate(emitted)) {\n dispose();\n res(emitted);\n }\n }\n\n /**\n * If the `signal` option is provided, this will be the listener for its\n * `abort` event\n */\n let abortListener;\n let sub; // avoid TDZ when disposing synchronously\n\n // See if the current snapshot already matches the predicate\n checkEmitted(actorRef.getSnapshot());\n if (done) {\n return;\n }\n\n // only define the `abortListener` if the `signal` option is provided\n if (signal) {\n abortListener = () => {\n dispose();\n // XState does not \"own\" the signal, so we should reject with its reason (if any)\n rej(signal.reason);\n };\n signal.addEventListener('abort', abortListener);\n }\n sub = actorRef.subscribe({\n next: checkEmitted,\n error: err => {\n dispose();\n rej(err);\n },\n complete: () => {\n dispose();\n rej(new Error(`Actor terminated without satisfying predicate`));\n }\n });\n if (done) {\n sub.unsubscribe();\n }\n });\n}\n\nexport { SimulatedClock, StateMachine, StateNode, assertEvent, createMachine, getInitialSnapshot, getNextSnapshot, setup, toPromise, waitFor };\n", "module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n", "'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?:[^\\ud800-\\udbff]|^)[\\udc00-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction insertSort (array) {\n // Insertion sort is very efficient for small input sizes but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2) {\n return array.sort()\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getBooleanOption(options, 'deterministic')\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n", "\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n WebSocket: () => ReconnectingWebSocket,\n default: () => PartySocket\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/ws.ts\nif (!globalThis.EventTarget || !globalThis.Event) {\n console.error(`\n PartySocket requires a global 'EventTarget' class to be available!\n You can polyfill this global by adding this to your code before any partysocket imports: \n \n \\`\\`\\`\n import 'partysocket/event-target-polyfill';\n \\`\\`\\`\n Please file an issue at https://github.com/partykit/partykit if you're still having trouble.\n`);\n}\nvar ErrorEvent = class extends Event {\n message;\n error;\n constructor(error, target) {\n super(\"error\", target);\n this.message = error.message;\n this.error = error;\n }\n};\nvar CloseEvent = class extends Event {\n code;\n reason;\n wasClean = true;\n constructor(code = 1e3, reason = \"\", target) {\n super(\"close\", target);\n this.code = code;\n this.reason = reason;\n }\n};\nvar Events = {\n Event,\n ErrorEvent,\n CloseEvent\n};\nfunction assert(condition, msg) {\n if (!condition) {\n throw new Error(msg);\n }\n}\nfunction cloneEventBrowser(e) {\n return new e.constructor(e.type, e);\n}\nfunction cloneEventNode(e) {\n if (\"data\" in e) {\n const evt2 = new MessageEvent(e.type, e);\n return evt2;\n }\n if (\"code\" in e || \"reason\" in e) {\n const evt2 = new CloseEvent(\n // @ts-expect-error we need to fix event/listener types\n e.code || 1999,\n // @ts-expect-error we need to fix event/listener types\n e.reason || \"unknown reason\",\n e\n );\n return evt2;\n }\n if (\"error\" in e) {\n const evt2 = new ErrorEvent(e.error, e);\n return evt2;\n }\n const evt = new Event(e.type, e);\n return evt;\n}\nvar isNode = typeof process !== \"undefined\" && typeof process.versions?.node !== \"undefined\" && typeof document === \"undefined\";\nvar cloneEvent = isNode ? cloneEventNode : cloneEventBrowser;\nvar DEFAULT = {\n maxReconnectionDelay: 1e4,\n minReconnectionDelay: 1e3 + Math.random() * 4e3,\n minUptime: 5e3,\n reconnectionDelayGrowFactor: 1.3,\n connectionTimeout: 4e3,\n maxRetries: Infinity,\n maxEnqueuedMessages: Infinity,\n startClosed: false,\n debug: false\n};\nvar didWarnAboutMissingWebSocket = false;\nvar ReconnectingWebSocket = class _ReconnectingWebSocket extends EventTarget {\n _ws;\n _retryCount = -1;\n _uptimeTimeout;\n _connectTimeout;\n _shouldReconnect = true;\n _connectLock = false;\n _binaryType = \"blob\";\n _closeCalled = false;\n _messageQueue = [];\n _debugLogger = console.log.bind(console);\n _url;\n _protocols;\n _options;\n constructor(url, protocols, options = {}) {\n super();\n this._url = url;\n this._protocols = protocols;\n this._options = options;\n if (this._options.startClosed) {\n this._shouldReconnect = false;\n }\n if (this._options.debugLogger) {\n this._debugLogger = this._options.debugLogger;\n }\n this._connect();\n }\n static get CONNECTING() {\n return 0;\n }\n static get OPEN() {\n return 1;\n }\n static get CLOSING() {\n return 2;\n }\n static get CLOSED() {\n return 3;\n }\n get CONNECTING() {\n return _ReconnectingWebSocket.CONNECTING;\n }\n get OPEN() {\n return _ReconnectingWebSocket.OPEN;\n }\n get CLOSING() {\n return _ReconnectingWebSocket.CLOSING;\n }\n get CLOSED() {\n return _ReconnectingWebSocket.CLOSED;\n }\n get binaryType() {\n return this._ws ? this._ws.binaryType : this._binaryType;\n }\n set binaryType(value) {\n this._binaryType = value;\n if (this._ws) {\n this._ws.binaryType = value;\n }\n }\n /**\n * Returns the number or connection retries\n */\n get retryCount() {\n return Math.max(this._retryCount, 0);\n }\n /**\n * The number of bytes of data that have been queued using calls to send() but not yet\n * transmitted to the network. This value resets to zero once all queued data has been sent.\n * This value does not reset to zero when the connection is closed; if you keep calling send(),\n * this will continue to climb. Read only\n */\n get bufferedAmount() {\n const bytes = this._messageQueue.reduce((acc, message) => {\n if (typeof message === \"string\") {\n acc += message.length;\n } else if (message instanceof Blob) {\n acc += message.size;\n } else {\n acc += message.byteLength;\n }\n return acc;\n }, 0);\n return bytes + (this._ws ? this._ws.bufferedAmount : 0);\n }\n /**\n * The extensions selected by the server. This is currently only the empty string or a list of\n * extensions as negotiated by the connection\n */\n get extensions() {\n return this._ws ? this._ws.extensions : \"\";\n }\n /**\n * A string indicating the name of the sub-protocol the server selected;\n * this will be one of the strings specified in the protocols parameter when creating the\n * WebSocket object\n */\n get protocol() {\n return this._ws ? this._ws.protocol : \"\";\n }\n /**\n * The current state of the connection; this is one of the Ready state constants\n */\n get readyState() {\n if (this._ws) {\n return this._ws.readyState;\n }\n return this._options.startClosed ? _ReconnectingWebSocket.CLOSED : _ReconnectingWebSocket.CONNECTING;\n }\n /**\n * The URL as resolved by the constructor\n */\n get url() {\n return this._ws ? this._ws.url : \"\";\n }\n /**\n * Whether the websocket object is now in reconnectable state\n */\n get shouldReconnect() {\n return this._shouldReconnect;\n }\n /**\n * An event listener to be called when the WebSocket connection's readyState changes to CLOSED\n */\n onclose = null;\n /**\n * An event listener to be called when an error occurs\n */\n onerror = null;\n /**\n * An event listener to be called when a message is received from the server\n */\n onmessage = null;\n /**\n * An event listener to be called when the WebSocket connection's readyState changes to OPEN;\n * this indicates that the connection is ready to send and receive data\n */\n onopen = null;\n /**\n * Closes the WebSocket connection or connection attempt, if any. If the connection is already\n * CLOSED, this method does nothing\n */\n close(code = 1e3, reason) {\n this._closeCalled = true;\n this._shouldReconnect = false;\n this._clearTimeouts();\n if (!this._ws) {\n this._debug(\"close enqueued: no ws instance\");\n return;\n }\n if (this._ws.readyState === this.CLOSED) {\n this._debug(\"close: already closed\");\n return;\n }\n this._ws.close(code, reason);\n }\n /**\n * Closes the WebSocket connection or connection attempt and connects again.\n * Resets retry counter;\n */\n reconnect(code, reason) {\n this._shouldReconnect = true;\n this._closeCalled = false;\n this._retryCount = -1;\n if (!this._ws || this._ws.readyState === this.CLOSED) {\n this._connect();\n } else {\n this._disconnect(code, reason);\n this._connect();\n }\n }\n /**\n * Enqueue specified data to be transmitted to the server over the WebSocket connection\n */\n send(data) {\n if (this._ws && this._ws.readyState === this.OPEN) {\n this._debug(\"send\", data);\n this._ws.send(data);\n } else {\n const { maxEnqueuedMessages = DEFAULT.maxEnqueuedMessages } = this._options;\n if (this._messageQueue.length < maxEnqueuedMessages) {\n this._debug(\"enqueue\", data);\n this._messageQueue.push(data);\n }\n }\n }\n _debug(...args) {\n if (this._options.debug) {\n this._debugLogger(\"RWS>\", ...args);\n }\n }\n _getNextDelay() {\n const {\n reconnectionDelayGrowFactor = DEFAULT.reconnectionDelayGrowFactor,\n minReconnectionDelay = DEFAULT.minReconnectionDelay,\n maxReconnectionDelay = DEFAULT.maxReconnectionDelay\n } = this._options;\n let delay = 0;\n if (this._retryCount > 0) {\n delay = minReconnectionDelay * Math.pow(reconnectionDelayGrowFactor, this._retryCount - 1);\n if (delay > maxReconnectionDelay) {\n delay = maxReconnectionDelay;\n }\n }\n this._debug(\"next delay\", delay);\n return delay;\n }\n _wait() {\n return new Promise((resolve) => {\n setTimeout(resolve, this._getNextDelay());\n });\n }\n _getNextProtocols(protocolsProvider) {\n if (!protocolsProvider)\n return Promise.resolve(null);\n if (typeof protocolsProvider === \"string\" || Array.isArray(protocolsProvider)) {\n return Promise.resolve(protocolsProvider);\n }\n if (typeof protocolsProvider === \"function\") {\n const protocols = protocolsProvider();\n if (!protocols)\n return Promise.resolve(null);\n if (typeof protocols === \"string\" || Array.isArray(protocols)) {\n return Promise.resolve(protocols);\n }\n if (protocols.then) {\n return protocols;\n }\n }\n throw Error(\"Invalid protocols\");\n }\n _getNextUrl(urlProvider) {\n if (typeof urlProvider === \"string\") {\n return Promise.resolve(urlProvider);\n }\n if (typeof urlProvider === \"function\") {\n const url = urlProvider();\n if (typeof url === \"string\") {\n return Promise.resolve(url);\n }\n if (url.then) {\n return url;\n }\n }\n throw Error(\"Invalid URL\");\n }\n _connect() {\n if (this._connectLock || !this._shouldReconnect) {\n return;\n }\n this._connectLock = true;\n const {\n maxRetries = DEFAULT.maxRetries,\n connectionTimeout = DEFAULT.connectionTimeout\n } = this._options;\n if (this._retryCount >= maxRetries) {\n this._debug(\"max retries reached\", this._retryCount, \">=\", maxRetries);\n return;\n }\n this._retryCount++;\n this._debug(\"connect\", this._retryCount);\n this._removeListeners();\n this._wait().then(\n () => Promise.all([\n this._getNextUrl(this._url),\n this._getNextProtocols(this._protocols || null)\n ])\n ).then(([url, protocols]) => {\n if (this._closeCalled) {\n this._connectLock = false;\n return;\n }\n if (!this._options.WebSocket && typeof WebSocket === \"undefined\" && !didWarnAboutMissingWebSocket) {\n console.error(`\\u203C\\uFE0F No WebSocket implementation available. You should define options.WebSocket. \n\nFor example, if you're using node.js, run \\`npm install ws\\`, and then in your code:\n\nimport PartySocket from 'partysocket';\nimport WS from 'ws';\n\nconst partysocket = new PartySocket({\n host: \"127.0.0.1:1999\",\n room: \"test-room\",\n WebSocket: WS\n});\n\n`);\n didWarnAboutMissingWebSocket = true;\n }\n const WS = this._options.WebSocket || WebSocket;\n this._debug(\"connect\", { url, protocols });\n this._ws = protocols ? new WS(url, protocols) : new WS(url);\n this._ws.binaryType = this._binaryType;\n this._connectLock = false;\n this._addListeners();\n this._connectTimeout = setTimeout(\n () => this._handleTimeout(),\n connectionTimeout\n );\n }).catch((err) => {\n this._connectLock = false;\n this._handleError(new Events.ErrorEvent(Error(err.message), this));\n });\n }\n _handleTimeout() {\n this._debug(\"timeout event\");\n this._handleError(new Events.ErrorEvent(Error(\"TIMEOUT\"), this));\n }\n _disconnect(code = 1e3, reason) {\n this._clearTimeouts();\n if (!this._ws) {\n return;\n }\n this._removeListeners();\n try {\n this._ws.close(code, reason);\n this._handleClose(new Events.CloseEvent(code, reason, this));\n } catch (error) {\n }\n }\n _acceptOpen() {\n this._debug(\"accept open\");\n this._retryCount = 0;\n }\n _handleOpen = (event) => {\n this._debug(\"open event\");\n const { minUptime = DEFAULT.minUptime } = this._options;\n clearTimeout(this._connectTimeout);\n this._uptimeTimeout = setTimeout(() => this._acceptOpen(), minUptime);\n assert(this._ws, \"WebSocket is not defined\");\n this._ws.binaryType = this._binaryType;\n this._messageQueue.forEach((message) => this._ws?.send(message));\n this._messageQueue = [];\n if (this.onopen) {\n this.onopen(event);\n }\n this.dispatchEvent(cloneEvent(event));\n };\n _handleMessage = (event) => {\n this._debug(\"message event\");\n if (this.onmessage) {\n this.onmessage(event);\n }\n this.dispatchEvent(cloneEvent(event));\n };\n _handleError = (event) => {\n this._debug(\"error event\", event.message);\n this._disconnect(\n void 0,\n event.message === \"TIMEOUT\" ? \"timeout\" : void 0\n );\n if (this.onerror) {\n this.onerror(event);\n }\n this._debug(\"exec error listeners\");\n this.dispatchEvent(cloneEvent(event));\n this._connect();\n };\n _handleClose = (event) => {\n this._debug(\"close event\");\n this._clearTimeouts();\n if (this._shouldReconnect) {\n this._connect();\n }\n if (this.onclose) {\n this.onclose(event);\n }\n this.dispatchEvent(cloneEvent(event));\n };\n _removeListeners() {\n if (!this._ws) {\n return;\n }\n this._debug(\"removeListeners\");\n this._ws.removeEventListener(\"open\", this._handleOpen);\n this._ws.removeEventListener(\"close\", this._handleClose);\n this._ws.removeEventListener(\"message\", this._handleMessage);\n this._ws.removeEventListener(\"error\", this._handleError);\n }\n _addListeners() {\n if (!this._ws) {\n return;\n }\n this._debug(\"addListeners\");\n this._ws.addEventListener(\"open\", this._handleOpen);\n this._ws.addEventListener(\"close\", this._handleClose);\n this._ws.addEventListener(\"message\", this._handleMessage);\n this._ws.addEventListener(\"error\", this._handleError);\n }\n _clearTimeouts() {\n clearTimeout(this._connectTimeout);\n clearTimeout(this._uptimeTimeout);\n }\n};\n\n// src/index.ts\nvar valueIsNotNil = (keyValuePair) => keyValuePair[1] !== null && keyValuePair[1] !== void 0;\nfunction generateUUID() {\n if (typeof crypto !== \"undefined\" && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n let d = (/* @__PURE__ */ new Date()).getTime();\n let d2 = typeof performance !== \"undefined\" && performance.now && performance.now() * 1e3 || 0;\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n let r = Math.random() * 16;\n if (d > 0) {\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n return (c === \"x\" ? r : r & 3 | 8).toString(16);\n });\n}\nfunction getPartyInfo(partySocketOptions, defaultProtocol, defaultParams = {}) {\n const {\n host: rawHost,\n path: rawPath,\n protocol: rawProtocol,\n room,\n party,\n query\n } = partySocketOptions;\n let host = rawHost.replace(/^(http|https|ws|wss):\\/\\//, \"\");\n if (host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n }\n if (rawPath && rawPath.startsWith(\"/\")) {\n throw new Error(\"path must not start with a slash\");\n }\n const name = party ?? \"main\";\n const path = rawPath ? `/${rawPath}` : \"\";\n const protocol = rawProtocol || (host.startsWith(\"localhost:\") || host.startsWith(\"127.0.0.1:\") || host.startsWith(\"192.168.\") || host.startsWith(\"10.\") || host.startsWith(\"172.\") && host.split(\".\")[1] >= \"16\" && host.split(\".\")[1] <= \"31\" || host.startsWith(\"[::ffff:7f00:1]:\") ? (\n // http / ws\n defaultProtocol\n ) : (\n // https / wss\n defaultProtocol + \"s\"\n ));\n const baseUrl = `${protocol}://${host}/${party ? `parties/${party}` : \"party\"}/${room}${path}`;\n const makeUrl = (query2 = {}) => `${baseUrl}?${new URLSearchParams([\n ...Object.entries(defaultParams),\n ...Object.entries(query2).filter(valueIsNotNil)\n ])}`;\n const urlProvider = typeof query === \"function\" ? async () => makeUrl(await query()) : makeUrl(query);\n return {\n host,\n path,\n room,\n name,\n protocol,\n partyUrl: baseUrl,\n urlProvider\n };\n}\nvar PartySocket = class extends ReconnectingWebSocket {\n constructor(partySocketOptions) {\n const wsOptions = getWSOptions(partySocketOptions);\n super(wsOptions.urlProvider, wsOptions.protocols, wsOptions.socketOptions);\n this.partySocketOptions = partySocketOptions;\n this.setWSProperties(wsOptions);\n }\n _pk;\n _pkurl;\n name;\n room;\n host;\n path;\n updateProperties(partySocketOptions) {\n const wsOptions = getWSOptions({\n ...this.partySocketOptions,\n ...partySocketOptions,\n host: partySocketOptions.host ?? this.host,\n room: partySocketOptions.room ?? this.room,\n path: partySocketOptions.path ?? this.path\n });\n this._url = wsOptions.urlProvider;\n this._protocols = wsOptions.protocols;\n this._options = wsOptions.socketOptions;\n this.setWSProperties(wsOptions);\n }\n setWSProperties(wsOptions) {\n const { _pk, _pkurl, name, room, host, path } = wsOptions;\n this._pk = _pk;\n this._pkurl = _pkurl;\n this.name = name;\n this.room = room;\n this.host = host;\n this.path = path;\n }\n reconnect(code, reason) {\n if (!this.room || !this.host) {\n throw new Error(\n \"The room and host must be set before connecting, use `updateProperties` method to set them or pass them to the constructor.\"\n );\n }\n super.reconnect(code, reason);\n }\n get id() {\n return this._pk;\n }\n /**\n * Exposes the static PartyKit room URL without applying query parameters.\n * To access the currently connected WebSocket url, use PartySocket#url.\n */\n get roomUrl() {\n return this._pkurl;\n }\n // a `fetch` method that uses (almost) the same options as `PartySocket`\n static async fetch(options, init) {\n const party = getPartyInfo(options, \"http\");\n const url = typeof party.urlProvider === \"string\" ? party.urlProvider : await party.urlProvider();\n const doFetch = options.fetch ?? fetch;\n return doFetch(url, init);\n }\n};\nfunction getWSOptions(partySocketOptions) {\n const {\n id,\n host: _host,\n path: _path,\n party: _party,\n room: _room,\n protocol: _protocol,\n query: _query,\n protocols,\n ...socketOptions\n } = partySocketOptions;\n const _pk = id || generateUUID();\n const party = getPartyInfo(partySocketOptions, \"ws\", { _pk });\n return {\n _pk,\n _pkurl: party.partyUrl,\n name: party.name,\n room: party.room,\n host: party.host,\n path: party.path,\n protocols,\n socketOptions,\n urlProvider: party.urlProvider\n };\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n WebSocket\n});\n/*!\n * Reconnecting WebSocket\n * by Pedro Ladaria <pedro.ladaria@gmail.com>\n * https://github.com/pladaria/reconnecting-websocket\n * License MIT\n */\n", "export class DoubleIndexedKV<K, V> {\n keyToValue = new Map<K, V>();\n valueToKey = new Map<V, K>();\n\n set(key: K, value: V) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n\n getByKey(key: K): V | undefined {\n return this.keyToValue.get(key);\n }\n\n getByValue(value: V): K | undefined {\n return this.valueToKey.get(value);\n }\n\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n", "import { DoubleIndexedKV } from './double-indexed-kv';\n\nexport class Registry<T> {\n private kv = new DoubleIndexedKV<string, T>();\n\n constructor(private readonly generateIdentifier: (v: T) => string) {}\n\n register(value: T, identifier?: string): void {\n if (this.kv.getByValue(value)) {\n return;\n }\n\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n\n this.kv.set(identifier, value);\n }\n\n clear(): void {\n this.kv.clear();\n }\n\n getIdentifier(value: T) {\n return this.kv.getByValue(value);\n }\n\n getValue(identifier: string) {\n return this.kv.getByKey(identifier);\n }\n}\n", "import { Registry } from './registry';\nimport { Class } from './types';\n\nexport interface RegisterOptions {\n identifier?: string;\n allowProps?: string[];\n}\n\nexport class ClassRegistry extends Registry<Class> {\n constructor() {\n super(c => c.name);\n }\n\n private classToAllowedProps = new Map<Class, string[]>();\n\n register(value: Class, options?: string | RegisterOptions): void {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n\n super.register(value, options.identifier);\n } else {\n super.register(value, options);\n }\n }\n\n getAllowedProps(value: Class): string[] | undefined {\n return this.classToAllowedProps.get(value);\n }\n}\n", "function valuesOfObj<T>(record: Record<string, T>): T[] {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n\n const values: T[] = [];\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n\n return values;\n}\n\nexport function find<T>(\n record: Record<string, T>,\n predicate: (v: T) => boolean\n): T | undefined {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n\n const valuesNotNever = values as T[];\n\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n\n return undefined;\n}\n\nexport function forEach<T>(\n record: Record<string, T>,\n run: (v: T, key: string) => void\n) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\n\nexport function includes<T>(arr: T[], value: T) {\n return arr.indexOf(value) !== -1;\n}\n\nexport function findArr<T>(\n record: T[],\n predicate: (v: T) => boolean\n): T | undefined {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n\n return undefined;\n}\n", "import { JSONValue } from './types';\nimport { find } from './util';\n\nexport interface CustomTransfomer<I, O extends JSONValue> {\n name: string;\n isApplicable: (v: any) => v is I;\n serialize: (v: I) => O;\n deserialize: (v: O) => I;\n}\n\nexport class CustomTransformerRegistry {\n private transfomers: Record<string, CustomTransfomer<any, any>> = {};\n\n register<I, O extends JSONValue>(transformer: CustomTransfomer<I, O>) {\n this.transfomers[transformer.name] = transformer;\n }\n\n findApplicable<T>(v: T) {\n return find(this.transfomers, transformer =>\n transformer.isApplicable(v)\n ) as CustomTransfomer<T, JSONValue> | undefined;\n }\n\n findByName(name: string) {\n return this.transfomers[name];\n }\n}\n", "const getType = (payload: any): string =>\n Object.prototype.toString.call(payload).slice(8, -1);\n\nexport const isUndefined = (payload: any): payload is undefined =>\n typeof payload === 'undefined';\n\nexport const isNull = (payload: any): payload is null => payload === null;\n\nexport const isPlainObject = (\n payload: any\n): payload is { [key: string]: any } => {\n if (typeof payload !== 'object' || payload === null) return false;\n if (payload === Object.prototype) return false;\n if (Object.getPrototypeOf(payload) === null) return true;\n\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\n\nexport const isEmptyObject = (payload: any): payload is {} =>\n isPlainObject(payload) && Object.keys(payload).length === 0;\n\nexport const isArray = (payload: any): payload is any[] =>\n Array.isArray(payload);\n\nexport const isString = (payload: any): payload is string =>\n typeof payload === 'string';\n\nexport const isNumber = (payload: any): payload is number =>\n typeof payload === 'number' && !isNaN(payload);\n\nexport const isBoolean = (payload: any): payload is boolean =>\n typeof payload === 'boolean';\n\nexport const isRegExp = (payload: any): payload is RegExp =>\n payload instanceof RegExp;\n\nexport const isMap = (payload: any): payload is Map<any, any> =>\n payload instanceof Map;\n\nexport const isSet = (payload: any): payload is Set<any> =>\n payload instanceof Set;\n\nexport const isSymbol = (payload: any): payload is symbol =>\n getType(payload) === 'Symbol';\n\nexport const isDate = (payload: any): payload is Date =>\n payload instanceof Date && !isNaN(payload.valueOf());\n\nexport const isError = (payload: any): payload is Error =>\n payload instanceof Error;\n\nexport const isNaNValue = (payload: any): payload is typeof NaN =>\n typeof payload === 'number' && isNaN(payload);\n\nexport const isPrimitive = (\n payload: any\n): payload is boolean | null | undefined | number | string | symbol =>\n isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\n\nexport const isBigint = (payload: any): payload is bigint =>\n typeof payload === 'bigint';\n\nexport const isInfinite = (payload: any): payload is number =>\n payload === Infinity || payload === -Infinity;\n\nexport type TypedArrayConstructor =\n | Int8ArrayConstructor\n | Uint8ArrayConstructor\n | Uint8ClampedArrayConstructor\n | Int16ArrayConstructor\n | Uint16ArrayConstructor\n | Int32ArrayConstructor\n | Uint32ArrayConstructor\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n\nexport type TypedArray = InstanceType<TypedArrayConstructor>;\n\nexport const isTypedArray = (payload: any): payload is TypedArray =>\n ArrayBuffer.isView(payload) && !(payload instanceof DataView);\n\nexport const isURL = (payload: any): payload is URL => payload instanceof URL;\n", "export type StringifiedPath = string;\ntype Path = string[];\n\nexport const escapeKey = (key: string) => key.replace(/\\./g, '\\\\.');\n\nexport const stringifyPath = (path: Path): StringifiedPath =>\n path\n .map(String)\n .map(escapeKey)\n .join('.');\n\nexport const parsePath = (string: StringifiedPath) => {\n const result: string[] = [];\n\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n\n segment += char;\n }\n\n const lastSegment = segment;\n result.push(lastSegment);\n\n return result;\n};\n", "import {\n isBigint,\n isDate,\n isInfinite,\n isMap,\n isNaNValue,\n isRegExp,\n isSet,\n isUndefined,\n isSymbol,\n isArray,\n isError,\n isTypedArray,\n TypedArrayConstructor,\n isURL,\n} from './is';\nimport { findArr } from './util';\nimport SuperJSON from '.';\n\nexport type PrimitiveTypeAnnotation = 'number' | 'undefined' | 'bigint';\n\ntype LeafTypeAnnotation =\n | PrimitiveTypeAnnotation\n | 'regexp'\n | 'Date'\n | 'Error'\n | 'URL';\n\ntype TypedArrayAnnotation = ['typed-array', string];\ntype ClassTypeAnnotation = ['class', string];\ntype SymbolTypeAnnotation = ['symbol', string];\ntype CustomTypeAnnotation = ['custom', string];\n\ntype SimpleTypeAnnotation = LeafTypeAnnotation | 'map' | 'set';\n\ntype CompositeTypeAnnotation =\n | TypedArrayAnnotation\n | ClassTypeAnnotation\n | SymbolTypeAnnotation\n | CustomTypeAnnotation;\n\nexport type TypeAnnotation = SimpleTypeAnnotation | CompositeTypeAnnotation;\n\nfunction simpleTransformation<I, O, A extends SimpleTypeAnnotation>(\n isApplicable: (v: any, superJson: SuperJSON) => v is I,\n annotation: A,\n transform: (v: I, superJson: SuperJSON) => O,\n untransform: (v: O, superJson: SuperJSON) => I\n) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\n\nconst simpleRules = [\n simpleTransformation(\n isUndefined,\n 'undefined',\n () => null,\n () => undefined\n ),\n simpleTransformation(\n isBigint,\n 'bigint',\n v => v.toString(),\n v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n\n console.error('Please add a BigInt polyfill.');\n\n return v as any;\n }\n ),\n simpleTransformation(\n isDate,\n 'Date',\n v => v.toISOString(),\n v => new Date(v)\n ),\n\n simpleTransformation(\n isError,\n 'Error',\n (v, superJson) => {\n const baseError: any = {\n name: v.name,\n message: v.message,\n };\n\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = (v as any)[prop];\n });\n\n return baseError;\n },\n (v, superJson) => {\n const e = new Error(v.message);\n e.name = v.name;\n e.stack = v.stack;\n\n superJson.allowedErrorProps.forEach(prop => {\n (e as any)[prop] = v[prop];\n });\n\n return e;\n }\n ),\n\n simpleTransformation(\n isRegExp,\n 'regexp',\n v => '' + v,\n regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }\n ),\n\n simpleTransformation(\n isSet,\n 'set',\n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()],\n v => new Set(v)\n ),\n simpleTransformation(\n isMap,\n 'map',\n v => [...v.entries()],\n v => new Map(v)\n ),\n\n simpleTransformation<number, 'NaN' | 'Infinity' | '-Infinity', 'number'>(\n (v): v is number => isNaNValue(v) || isInfinite(v),\n 'number',\n v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n\n if (v > 0) {\n return 'Infinity';\n } else {\n return '-Infinity';\n }\n },\n Number\n ),\n\n simpleTransformation<number, '-0', 'number'>(\n (v): v is number => v === 0 && 1 / v === -Infinity,\n 'number',\n () => {\n return '-0';\n },\n Number\n ),\n\n simpleTransformation(\n isURL,\n 'URL',\n v => v.toString(),\n v => new URL(v)\n ),\n];\n\nfunction compositeTransformation<I, O, A extends CompositeTypeAnnotation>(\n isApplicable: (v: any, superJson: SuperJSON) => v is I,\n annotation: (v: I, superJson: SuperJSON) => A,\n transform: (v: I, superJson: SuperJSON) => O,\n untransform: (v: O, a: A, superJson: SuperJSON) => I\n) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\n\nconst symbolRule = compositeTransformation(\n (s, superJson): s is Symbol => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n },\n (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier!];\n },\n v => v.description,\n (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n }\n);\n\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce<Record<string, TypedArrayConstructor>>((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\n\nconst typedArrayRule = compositeTransformation(\n isTypedArray,\n v => ['typed-array', v.constructor.name],\n v => [...v],\n (v, a) => {\n const ctor = constructorToName[a[1]];\n\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n\n return new ctor(v);\n }\n);\n\nexport function isInstanceOfRegisteredClass(\n potentialClass: any,\n superJson: SuperJSON\n): potentialClass is any {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(\n potentialClass.constructor\n );\n return isRegistered;\n }\n return false;\n}\n\nconst classRule = compositeTransformation(\n isInstanceOfRegisteredClass,\n (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier!];\n },\n (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(\n clazz.constructor\n );\n if (!allowedProps) {\n return { ...clazz };\n }\n\n const result: any = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n },\n (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n\n if (!clazz) {\n throw new Error(\n 'Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564'\n );\n }\n\n return Object.assign(Object.create(clazz.prototype), v);\n }\n);\n\nconst customRule = compositeTransformation(\n (value, superJson): value is any => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n },\n (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(\n value\n )!;\n return ['custom', transformer.name];\n },\n (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(\n value\n )!;\n return transformer.serialize(value);\n },\n (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n }\n);\n\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\n\nexport const transformValue = (\n value: any,\n superJson: SuperJSON\n): { value: any; type: TypeAnnotation } | undefined => {\n const applicableCompositeRule = findArr(compositeRules, rule =>\n rule.isApplicable(value, superJson)\n );\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value as never, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n\n const applicableSimpleRule = findArr(simpleRules, rule =>\n rule.isApplicable(value, superJson)\n );\n\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value as never, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n\n return undefined;\n};\n\nconst simpleRulesByAnnotation: Record<string, typeof simpleRules[0]> = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\n\nexport const untransformValue = (\n json: any,\n type: TypeAnnotation,\n superJson: SuperJSON\n) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n } else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n\n return transformation.untransform(json as never, superJson);\n }\n};\n", "import { isMap, isArray, isPlainObject, isSet } from './is';\nimport { includes } from './util';\n\nconst getNthKey = (value: Map<any, any> | Set<any>, n: number): any => {\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n\n return keys.next().value;\n};\n\nfunction validatePath(path: (string | number)[]) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\n\nexport const getDeep = (object: object, path: (string | number)[]): object => {\n validatePath(path);\n\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n } else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n } else {\n object = (object as any)[key];\n }\n }\n\n return object;\n};\n\nexport const setDeep = (\n object: any,\n path: (string | number)[],\n mapper: (v: any) => any\n): any => {\n validatePath(path);\n\n if (path.length === 0) {\n return mapper(object);\n }\n\n let parent = object;\n\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n } else if (isPlainObject(parent)) {\n parent = parent[key];\n } else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n } else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n\n const lastKey = path[path.length - 1];\n\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n } else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n\n return object;\n};\n", "import {\n isArray,\n isEmptyObject,\n isMap,\n isPlainObject,\n isPrimitive,\n isSet,\n} from './is';\nimport { escapeKey, stringifyPath } from './pathstringifier';\nimport {\n isInstanceOfRegisteredClass,\n transformValue,\n TypeAnnotation,\n untransformValue,\n} from './transformer';\nimport { includes, forEach } from './util';\nimport { parsePath } from './pathstringifier';\nimport { getDeep, setDeep } from './accessDeep';\nimport SuperJSON from '.';\n\ntype Tree<T> = InnerNode<T> | Leaf<T>;\ntype Leaf<T> = [T];\ntype InnerNode<T> = [T, Record<string, Tree<T>>];\n\nexport type MinimisedTree<T> = Tree<T> | Record<string, Tree<T>> | undefined;\n\nfunction traverse<T>(\n tree: MinimisedTree<T>,\n walker: (v: T, path: string[]) => void,\n origin: string[] = []\n): void {\n if (!tree) {\n return;\n }\n\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) =>\n traverse(subtree, walker, [...origin, ...parsePath(key)])\n );\n return;\n }\n\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, [...origin, ...parsePath(key)]);\n });\n }\n\n walker(nodeValue, origin);\n}\n\nexport function applyValueAnnotations(\n plain: any,\n annotations: MinimisedTree<TypeAnnotation>,\n superJson: SuperJSON\n) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n });\n\n return plain;\n}\n\nexport function applyReferentialEqualityAnnotations(\n plain: any,\n annotations: ReferentialEqualityAnnotations\n) {\n function apply(identicalPaths: string[], path: string) {\n const object = getDeep(plain, parsePath(path));\n\n identicalPaths.map(parsePath).forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath), () => plain);\n });\n\n if (other) {\n forEach(other, apply);\n }\n } else {\n forEach(annotations, apply);\n }\n\n return plain;\n}\n\nconst isDeep = (object: any, superJson: SuperJSON): boolean =>\n isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isInstanceOfRegisteredClass(object, superJson);\n\nfunction addIdentity(object: any, path: any[], identities: Map<any, any[][]>) {\n const existingSet = identities.get(object);\n\n if (existingSet) {\n existingSet.push(path);\n } else {\n identities.set(object, [path]);\n }\n}\n\ninterface Result {\n transformedValue: any;\n annotations?: MinimisedTree<TypeAnnotation>;\n}\n\nexport type ReferentialEqualityAnnotations =\n | Record<string, string[]>\n | [string[]]\n | [string[], Record<string, string[]>];\n\nexport function generateReferentialEqualityAnnotations(\n identitites: Map<any, any[][]>,\n dedupe: boolean\n): ReferentialEqualityAnnotations | undefined {\n const result: Record<string, string[]> = {};\n let rootEqualityPaths: string[] | undefined = undefined;\n\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n\n const [representativePath, ...identicalPaths] = paths;\n\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n } else {\n result[stringifyPath(representativePath)] = identicalPaths.map(\n stringifyPath\n );\n }\n });\n\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n } else {\n return [rootEqualityPaths, result];\n }\n } else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\n\nexport const walker = (\n object: any,\n identities: Map<any, any[][]>,\n superJson: SuperJSON,\n dedupe: boolean,\n path: any[] = [],\n objectsInThisPath: any[] = [],\n seenObjects = new Map<unknown, Result>()\n): Result => {\n const primitive = isPrimitive(object);\n\n if (!primitive) {\n addIdentity(object, path, identities);\n\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n\n const result: Result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n\n const transformedValue: any = isArray(transformed) ? [] : {};\n const innerAnnotations: Record<string, Tree<TypeAnnotation>> = {};\n\n forEach(transformed, (value, index) => {\n const recursiveResult = walker(\n value,\n identities,\n superJson,\n dedupe,\n [...path, index],\n [...objectsInThisPath, object],\n seenObjects\n );\n\n transformedValue[index] = recursiveResult.transformedValue;\n\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[index] = recursiveResult.annotations;\n } else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n\n const result: Result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n\n return result;\n};\n", "'use strict';\n\nfunction getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n\nfunction isAnyObject(payload) {\n return getType(payload) === \"Object\";\n}\n\nfunction isArray(payload) {\n return getType(payload) === \"Array\";\n}\n\nfunction isBlob(payload) {\n return getType(payload) === \"Blob\";\n}\n\nfunction isBoolean(payload) {\n return getType(payload) === \"Boolean\";\n}\n\nfunction isDate(payload) {\n return getType(payload) === \"Date\" && !isNaN(payload);\n}\n\nfunction isEmptyArray(payload) {\n return isArray(payload) && payload.length === 0;\n}\n\nfunction isPlainObject(payload) {\n if (getType(payload) !== \"Object\")\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n\nfunction isEmptyObject(payload) {\n return isPlainObject(payload) && Object.keys(payload).length === 0;\n}\n\nfunction isEmptyString(payload) {\n return payload === \"\";\n}\n\nfunction isError(payload) {\n return getType(payload) === \"Error\" || payload instanceof Error;\n}\n\nfunction isFile(payload) {\n return getType(payload) === \"File\";\n}\n\nfunction isFullArray(payload) {\n return isArray(payload) && payload.length > 0;\n}\n\nfunction isFullObject(payload) {\n return isPlainObject(payload) && Object.keys(payload).length > 0;\n}\n\nfunction isString(payload) {\n return getType(payload) === \"String\";\n}\n\nfunction isFullString(payload) {\n return isString(payload) && payload !== \"\";\n}\n\nfunction isFunction(payload) {\n return typeof payload === \"function\";\n}\n\nfunction isType(payload, type) {\n if (!(type instanceof Function)) {\n throw new TypeError(\"Type must be a function\");\n }\n if (!Object.prototype.hasOwnProperty.call(type, \"prototype\")) {\n throw new TypeError(\"Type is not a class\");\n }\n const name = type.name;\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\n}\n\nfunction isInstanceOf(value, classOrClassName) {\n if (typeof classOrClassName === \"function\") {\n for (let p = value; p; p = Object.getPrototypeOf(p)) {\n if (isType(p, classOrClassName)) {\n return true;\n }\n }\n return false;\n } else {\n for (let p = value; p; p = Object.getPrototypeOf(p)) {\n if (getType(p) === classOrClassName) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction isMap(payload) {\n return getType(payload) === \"Map\";\n}\n\nfunction isNaNValue(payload) {\n return getType(payload) === \"Number\" && isNaN(payload);\n}\n\nfunction isNumber(payload) {\n return getType(payload) === \"Number\" && !isNaN(payload);\n}\n\nfunction isNegativeNumber(payload) {\n return isNumber(payload) && payload < 0;\n}\n\nfunction isNull(payload) {\n return getType(payload) === \"Null\";\n}\n\nfunction isOneOf(a, b, c, d, e) {\n return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);\n}\n\nfunction isUndefined(payload) {\n return getType(payload) === \"Undefined\";\n}\n\nconst isNullOrUndefined = isOneOf(isNull, isUndefined);\n\nfunction isObject(payload) {\n return isPlainObject(payload);\n}\n\nfunction isObjectLike(payload) {\n return isAnyObject(payload);\n}\n\nfunction isPositiveNumber(payload) {\n return isNumber(payload) && payload > 0;\n}\n\nfunction isSymbol(payload) {\n return getType(payload) === \"Symbol\";\n}\n\nfunction isPrimitive(payload) {\n return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\n}\n\nfunction isPromise(payload) {\n return getType(payload) === \"Promise\";\n}\n\nfunction isRegExp(payload) {\n return getType(payload) === \"RegExp\";\n}\n\nfunction isSet(payload) {\n return getType(payload) === \"Set\";\n}\n\nfunction isWeakMap(payload) {\n return getType(payload) === \"WeakMap\";\n}\n\nfunction isWeakSet(payload) {\n return getType(payload) === \"WeakSet\";\n}\n\nexports.getType = getType;\nexports.isAnyObject = isAnyObject;\nexports.isArray = isArray;\nexports.isBlob = isBlob;\nexports.isBoolean = isBoolean;\nexports.isDate = isDate;\nexports.isEmptyArray = isEmptyArray;\nexports.isEmptyObject = isEmptyObject;\nexports.isEmptyString = isEmptyString;\nexports.isError = isError;\nexports.isFile = isFile;\nexports.isFullArray = isFullArray;\nexports.isFullObject = isFullObject;\nexports.isFullString = isFullString;\nexports.isFunction = isFunction;\nexports.isInstanceOf = isInstanceOf;\nexports.isMap = isMap;\nexports.isNaNValue = isNaNValue;\nexports.isNegativeNumber = isNegativeNumber;\nexports.isNull = isNull;\nexports.isNullOrUndefined = isNullOrUndefined;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isObjectLike = isObjectLike;\nexports.isOneOf = isOneOf;\nexports.isPlainObject = isPlainObject;\nexports.isPositiveNumber = isPositiveNumber;\nexports.isPrimitive = isPrimitive;\nexports.isPromise = isPromise;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isType = isType;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\n", "'use strict';\n\nconst isWhat = require('is-what');\n\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key) ? \"enumerable\" : \"nonenumerable\";\n if (propType === \"enumerable\")\n carry[key] = newVal;\n if (includeNonenumerable && propType === \"nonenumerable\") {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n}\nfunction copy(target, options = {}) {\n if (isWhat.isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isWhat.isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n if (isWhat.isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n\nexports.copy = copy;\n", "import { Class, JSONValue, SuperJSONResult, SuperJSONValue } from './types';\nimport { ClassRegistry, RegisterOptions } from './class-registry';\nimport { Registry } from './registry';\nimport {\n CustomTransfomer,\n CustomTransformerRegistry,\n} from './custom-transformer-registry';\nimport {\n applyReferentialEqualityAnnotations,\n applyValueAnnotations,\n generateReferentialEqualityAnnotations,\n walker,\n} from './plainer';\nimport { copy } from 'copy-anything';\n\nexport default class SuperJSON {\n /**\n * If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n private readonly dedupe: boolean;\n\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({\n dedupe = false,\n }: {\n dedupe?: boolean;\n } = {}) {\n this.dedupe = dedupe;\n }\n\n serialize(object: SuperJSONValue): SuperJSONResult {\n const identities = new Map<any, any[][]>();\n const output = walker(object, identities, this, this.dedupe);\n const res: SuperJSONResult = {\n json: output.transformedValue,\n };\n\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n\n const equalityAnnotations = generateReferentialEqualityAnnotations(\n identities,\n this.dedupe\n );\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n\n return res;\n }\n\n deserialize<T = unknown>(payload: SuperJSONResult): T {\n const { json, meta } = payload;\n\n let result: T = copy(json) as any;\n\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, this);\n }\n\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(\n result,\n meta.referentialEqualities\n );\n }\n\n return result;\n }\n\n stringify(object: SuperJSONValue): string {\n return JSON.stringify(this.serialize(object));\n }\n\n parse<T = unknown>(string: string): T {\n return this.deserialize(JSON.parse(string));\n }\n\n readonly classRegistry = new ClassRegistry();\n registerClass(v: Class, options?: RegisterOptions | string) {\n this.classRegistry.register(v, options);\n }\n\n readonly symbolRegistry = new Registry<Symbol>(s => s.description ?? '');\n registerSymbol(v: Symbol, identifier?: string) {\n this.symbolRegistry.register(v, identifier);\n }\n\n readonly customTransformerRegistry = new CustomTransformerRegistry();\n registerCustom<I, O extends JSONValue>(\n transformer: Omit<CustomTransfomer<I, O>, 'name'>,\n name: string\n ) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n\n readonly allowedErrorProps: string[] = [];\n allowErrorProps(...props: string[]) {\n this.allowedErrorProps.push(...props);\n }\n\n private static defaultInstance = new SuperJSON();\n static serialize = SuperJSON.defaultInstance.serialize.bind(\n SuperJSON.defaultInstance\n );\n static deserialize = SuperJSON.defaultInstance.deserialize.bind(\n SuperJSON.defaultInstance\n );\n static stringify = SuperJSON.defaultInstance.stringify.bind(\n SuperJSON.defaultInstance\n );\n static parse = SuperJSON.defaultInstance.parse.bind(\n SuperJSON.defaultInstance\n );\n static registerClass = SuperJSON.defaultInstance.registerClass.bind(\n SuperJSON.defaultInstance\n );\n static registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(\n SuperJSON.defaultInstance\n );\n static registerCustom = SuperJSON.defaultInstance.registerCustom.bind(\n SuperJSON.defaultInstance\n );\n static allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(\n SuperJSON.defaultInstance\n );\n}\n\nexport { SuperJSON };\n\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\n\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\n\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }", "// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nexport default ws\n", "\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n createBrowserInspector: () => createBrowserInspector,\n createBrowserReceiver: () => createBrowserReceiver,\n createInspector: () => createInspector,\n createSkyInspector: () => createSkyInspector,\n createWebSocketInspector: () => createWebSocketInspector,\n createWebSocketReceiver: () => createWebSocketReceiver\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/browser.ts\nvar import_fast_safe_stringify = __toESM(require(\"fast-safe-stringify\"));\nvar import_xstate = require(\"xstate\");\n\n// src/utils.ts\nfunction toEventObject(event) {\n if (typeof event === \"string\") {\n return { type: event };\n }\n return event;\n}\nvar isNode = typeof process !== \"undefined\" && typeof process.versions?.node !== \"undefined\" && typeof document === \"undefined\";\n\n// package.json\nvar package_default = {\n devDependencies: {\n \"@changesets/changelog-github\": \"^0.5.0\",\n \"@changesets/cli\": \"^2.27.7\",\n \"@types/jsdom\": \"^21.1.7\",\n \"@types/uuid\": \"^9.0.8\",\n jsdom: \"^23.2.0\",\n tsup: \"^8.1.0\",\n typescript: \"^5.5.3\",\n vitest: \"^1.6.0\",\n xstate: \"^5.14.0\"\n },\n name: \"@statelyai/inspect\",\n version: \"0.4.0\",\n description: \"Inspection utilities for state, actors, workflows, and state machines.\",\n main: \"dist/index.js\",\n repository: \"https://github.com/statelyai/inspect.git\",\n author: \"David Khourshid <davidkpiano@gmail.com>\",\n license: \"MIT\",\n dependencies: {\n \"fast-safe-stringify\": \"^2.1.1\",\n \"isomorphic-ws\": \"^5.0.0\",\n partysocket: \"^0.0.25\",\n \"safe-stable-stringify\": \"^2.4.3\",\n superjson: \"^1.13.3\",\n uuid: \"^9.0.1\"\n },\n peerDependencies: {\n xstate: \"^5.5.1\"\n },\n scripts: {\n build: \"tsup src/index.ts --dts\",\n watch: \"tsup src/index.ts --dts --watch\",\n test: \"vitest\",\n prepublishOnly: \"tsup src/index.ts --dts\",\n changeset: \"changeset\",\n release: \"changeset publish\",\n version: \"changeset version\",\n dev: \"yarn build && ./scripts/dev.sh\"\n },\n publishConfig: {\n access: \"public\"\n },\n packageManager: \"pnpm@8.11.0\"\n};\n\n// src/idleCallback.ts\nfunction idleCallback(cb) {\n if (typeof window !== \"undefined\") {\n const raf = window.requestIdleCallback || window.requestAnimationFrame;\n raf(cb);\n } else {\n setTimeout(cb, 0);\n }\n}\n\n// src/createInspector.ts\nvar import_safe_stable_stringify = __toESM(require(\"safe-stable-stringify\"));\nfunction getRoot(actorRef) {\n let marker = actorRef;\n do {\n marker = marker._parent;\n } while (marker?._parent);\n return marker;\n}\nfunction getRootId(actorRefOrId) {\n const rootActorRef = typeof actorRefOrId === \"string\" ? void 0 : getRoot(actorRefOrId)?.sessionId;\n return rootActorRef ?? void 0;\n}\nvar defaultInspectorOptions = {\n filter: () => true,\n serialize: (event) => event,\n autoStart: true,\n maxDeferredEvents: 200,\n sanitizeEvent: (event) => event,\n sanitizeContext: (context) => context\n};\nfunction createInspector(adapter, options) {\n function sendAdapter(inspectionEvent) {\n if (options?.filter && !options.filter(inspectionEvent)) {\n return;\n }\n const sanitizedEvent = options?.sanitizeContext || options?.sanitizeEvent ? inspectionEvent : {\n ...inspectionEvent\n };\n if (options?.sanitizeContext && (sanitizedEvent.type === \"@xstate.actor\" || sanitizedEvent.type === \"@xstate.snapshot\")) {\n sanitizedEvent.snapshot = {\n ...sanitizedEvent.snapshot,\n // @ts-ignore\n context: options.sanitizeContext(\n // @ts-ignore\n sanitizedEvent.snapshot.context\n )\n };\n }\n if (options?.sanitizeEvent && (sanitizedEvent.type === \"@xstate.event\" || sanitizedEvent.type === \"@xstate.snapshot\")) {\n sanitizedEvent.event = options.sanitizeEvent(sanitizedEvent.event);\n }\n const serializedEvent = options?.serialize?.(sanitizedEvent) ?? sanitizedEvent;\n adapter.send(serializedEvent);\n }\n const inspector = {\n adapter,\n actor: (actorRef, snapshot, info) => {\n const sessionId = typeof actorRef === \"string\" ? actorRef : actorRef.sessionId;\n const definitionObject = actorRef?.logic?.config;\n const definition = definitionObject ? (0, import_safe_stable_stringify.default)(definitionObject) : void 0;\n const rootId = info?.rootId ?? typeof actorRef === \"string\" ? void 0 : getRootId(actorRef);\n const parentId = info?.parentId ?? typeof actorRef === \"string\" ? void 0 : actorRef._parent?.sessionId;\n const name = definitionObject ? definitionObject.id : sessionId;\n sendAdapter({\n type: \"@xstate.actor\",\n name,\n sessionId,\n createdAt: Date.now().toString(),\n _version: package_default.version,\n rootId,\n parentId,\n id: null,\n definition,\n snapshot: snapshot ?? { status: \"active\" }\n });\n },\n event: (target, event, info) => {\n const sessionId = typeof target === \"string\" ? target : target.sessionId;\n const sourceId = !info?.source ? void 0 : typeof info.source === \"string\" ? info.source : info.source.sessionId;\n sendAdapter({\n type: \"@xstate.event\",\n sourceId,\n sessionId,\n event: toEventObject(event),\n id: Math.random().toString(),\n createdAt: Date.now().toString(),\n rootId: \"anonymous\",\n _version: package_default.version\n });\n },\n snapshot: (actor, snapshot, info) => {\n const sessionId = typeof actor === \"string\" ? actor : actor.sessionId;\n sendAdapter({\n type: \"@xstate.snapshot\",\n snapshot: {\n status: \"active\",\n ...snapshot\n },\n event: info?.event ?? { type: \"\" },\n sessionId,\n id: null,\n createdAt: Date.now().toString(),\n rootId: \"anonymous\",\n _version: package_default.version\n });\n },\n inspect: {\n next: (event) => {\n idleCallback(function inspectNext() {\n const convertedEvent = convertXStateEvent(event);\n if (convertedEvent) {\n sendAdapter(convertedEvent);\n }\n });\n }\n },\n start() {\n adapter.start?.();\n },\n stop() {\n adapter.stop?.();\n }\n };\n return inspector;\n}\nfunction convertXStateEvent(inspectionEvent) {\n switch (inspectionEvent.type) {\n case \"@xstate.actor\": {\n const actorRef = inspectionEvent.actorRef;\n const logic = actorRef?.logic;\n const definitionObject = logic?.config;\n let name = actorRef.id;\n if (name === actorRef.sessionId && definitionObject) {\n name = definitionObject.id;\n }\n const definitionString = typeof definitionObject === \"object\" ? (0, import_safe_stable_stringify.default)(definitionObject, (_key, value) => {\n if (typeof value === \"function\") {\n return { type: value.name };\n }\n return value;\n }) : (0, import_safe_stable_stringify.default)({\n id: name\n });\n return {\n name,\n type: \"@xstate.actor\",\n definition: definitionString,\n _version: package_default.version,\n createdAt: Date.now().toString(),\n id: null,\n rootId: inspectionEvent.rootId,\n parentId: inspectionEvent.actorRef._parent?.sessionId,\n sessionId: inspectionEvent.actorRef.sessionId,\n snapshot: inspectionEvent.actorRef.getSnapshot()\n };\n }\n case \"@xstate.event\": {\n return {\n type: \"@xstate.event\",\n event: inspectionEvent.event,\n sourceId: inspectionEvent.sourceRef?.sessionId,\n // sessionId: inspectionEvent.targetRef.sessionId,\n sessionId: inspectionEvent.actorRef.sessionId,\n _version: package_default.version,\n createdAt: Date.now().toString(),\n id: null,\n rootId: inspectionEvent.rootId\n };\n }\n case \"@xstate.snapshot\": {\n return {\n type: \"@xstate.snapshot\",\n event: inspectionEvent.event,\n snapshot: JSON.parse((0, import_safe_stable_stringify.default)(inspectionEvent.snapshot)),\n sessionId: inspectionEvent.actorRef.sessionId,\n _version: package_default.version,\n createdAt: Date.now().toString(),\n id: null,\n rootId: inspectionEvent.rootId\n };\n }\n default: {\n if (inspectionEvent.type.startsWith(\"@xstate.\")) {\n return void 0;\n }\n console.warn(\n `Unhandled inspection event type: ${inspectionEvent.type}`\n );\n return void 0;\n }\n }\n}\n\n// src/useless.ts\nvar UselessAdapter = class {\n constructor() {\n }\n start() {\n }\n stop() {\n }\n send(_event) {\n }\n};\n\n// src/browser.ts\nvar CONNECTION_EVENT = \"@statelyai.connected\";\nfunction isEventObject(event) {\n return typeof event === \"object\" && event !== null && typeof event.type === \"string\";\n}\nfunction isStatelyInspectionEvent(event) {\n return typeof event === \"object\" && event !== null && typeof event.type === \"string\" && typeof event._version === \"string\";\n}\nfunction createBrowserInspector(options) {\n const resolvedWindow = options?.window ?? (typeof window === \"undefined\" ? void 0 : window);\n if (!resolvedWindow) {\n console.error(\"Window does not exist; inspector cannot be started.\");\n return new UselessAdapter();\n }\n const resolvedOptions = {\n ...defaultInspectorOptions,\n url: \"https://stately.ai/inspect\",\n filter: () => true,\n serialize: (inspectionEvent) => JSON.parse((0, import_fast_safe_stringify.default)(inspectionEvent)),\n autoStart: true,\n iframe: null,\n ...options,\n window: resolvedWindow\n };\n const adapter = new BrowserAdapter(resolvedOptions);\n const inspector = createInspector(adapter, resolvedOptions);\n if (resolvedOptions.autoStart) {\n inspector.start();\n }\n return inspector;\n}\nvar defaultBrowserReceiverOptions = {\n replayCount: 0,\n window: typeof window !== \"undefined\" ? window : void 0\n};\nfunction createBrowserReceiver(options) {\n const resolvedOptions = {\n ...defaultBrowserReceiverOptions,\n ...options\n };\n const browserWindow = resolvedOptions.window;\n const targetWindow = browserWindow.self === browserWindow.top ? browserWindow.opener : browserWindow.parent;\n const observers = /* @__PURE__ */ new Set();\n browserWindow.addEventListener(\"message\", (event) => {\n if (!isStatelyInspectionEvent(event.data)) {\n return;\n }\n observers.forEach((observer) => observer.next?.(event.data));\n });\n const receiver = {\n subscribe(observerOrFn) {\n const observer = (0, import_xstate.toObserver)(observerOrFn);\n observers.add(observer);\n return {\n unsubscribe() {\n observers.delete(observer);\n }\n };\n }\n };\n if (targetWindow) {\n targetWindow.postMessage(\n {\n type: CONNECTION_EVENT\n },\n \"*\"\n );\n }\n return receiver;\n}\nvar BrowserAdapter = class {\n constructor(options) {\n this.options = options;\n }\n status = \"disconnected\";\n deferredEvents = [];\n targetWindow = null;\n start() {\n this.targetWindow = this.options.iframe ? null : this.options.window.open(String(this.options.url), \"xstateinspector\");\n if (this.options.iframe) {\n this.options.iframe.addEventListener(\"load\", () => {\n this.targetWindow = this.options.iframe?.contentWindow ?? null;\n });\n this.options.iframe?.setAttribute(\"src\", String(this.options.url));\n }\n this.options.window.addEventListener(\"message\", (event) => {\n if (isEventObject(event.data) && event.data.type === \"@statelyai.connected\") {\n this.status = \"connected\";\n this.deferredEvents.forEach((event2) => {\n const serializedEvent = this.options.serialize(event2);\n this.targetWindow?.postMessage(serializedEvent, \"*\");\n });\n }\n });\n }\n stop() {\n this.targetWindow?.postMessage({ type: \"@statelyai.disconnected\" }, \"*\");\n this.status = \"disconnected\";\n }\n send(event) {\n const shouldSendEvent = this.options.filter(event);\n if (!shouldSendEvent) {\n return;\n }\n if (this.options.send) {\n this.options.send(event);\n } else if (this.status === \"connected\") {\n const serializedEvent = this.options.serialize(event);\n this.targetWindow?.postMessage(serializedEvent, \"*\");\n }\n this.deferredEvents.push(event);\n if (this.deferredEvents.length > this.options.maxDeferredEvents) {\n this.deferredEvents.shift();\n }\n }\n};\n\n// src/createSkyInspector.ts\nvar import_partysocket = __toESM(require(\"partysocket\"));\nvar import_superjson = require(\"superjson\");\nvar import_uuid = require(\"uuid\");\nvar isDevMode = false;\nfunction createSkyInspector(options = {}) {\n const { host, apiBaseURL } = {\n host: isDevMode ? \"localhost:1999\" : \"stately-sky-beta.mellson.partykit.dev\",\n apiBaseURL: isDevMode ? \"http://localhost:3000/registry/api/sky\" : \"https://stately.ai/registry/api/sky\"\n };\n const server = apiBaseURL.replace(\"/api/sky\", \"\");\n const { apiKey, onerror, ...inspectorOptions } = options;\n const sessionId = (0, import_uuid.v4)();\n const room = `inspect-${sessionId}`;\n const socket = new import_partysocket.default({\n host,\n room,\n WebSocket: isNode ? require(\"isomorphic-ws\") : void 0\n });\n const liveInspectUrl = `${server}/inspect/${sessionId}`;\n socket.onerror = onerror ?? console.error;\n socket.onopen = () => {\n console.log(\"Connected to Sky, link to your live inspect session:\");\n console.log(liveInspectUrl);\n };\n if (isNode) {\n return createInspector({\n ...inspectorOptions,\n send(event) {\n const skyEvent = apiKey ? { apiKey, ...event } : event;\n socket.send((0, import_superjson.stringify)(skyEvent));\n }\n });\n } else {\n return createBrowserInspector({\n ...inspectorOptions,\n url: liveInspectUrl,\n send(event) {\n const skyEvent = apiKey ? { apiKey, ...event } : event;\n socket.send((0, import_superjson.stringify)(skyEvent));\n }\n });\n }\n}\n\n// src/webSocket.ts\nvar import_isomorphic_ws = __toESM(require(\"isomorphic-ws\"));\nvar import_safe_stable_stringify2 = __toESM(require(\"safe-stable-stringify\"));\nvar import_xstate2 = require(\"xstate\");\nvar WebSocketAdapter = class {\n ws;\n status = \"closed\";\n deferredEvents = [];\n options;\n constructor(options) {\n this.options = {\n ...defaultInspectorOptions,\n filter: () => true,\n serialize: (inspectionEvent) => JSON.parse((0, import_safe_stable_stringify2.default)(inspectionEvent)),\n autoStart: true,\n url: \"ws://localhost:8080\",\n ...options\n };\n }\n start() {\n const start = () => {\n this.ws = new import_isomorphic_ws.default(this.options.url);\n this.ws.onopen = () => {\n console.log(\"websocket open\");\n this.status = \"open\";\n this.deferredEvents.forEach((inspectionEvent) => {\n const preSerializedEvent = defaultInspectorOptions.serialize(inspectionEvent);\n const serializedEvent = this.options.serialize(preSerializedEvent);\n this.ws.send((0, import_safe_stable_stringify2.default)(serializedEvent));\n });\n };\n this.ws.onclose = () => {\n console.log(\"websocket closed\");\n };\n this.ws.onerror = async (event) => {\n console.error(\"websocket error\", event);\n await new Promise((res) => setTimeout(res, 5e3));\n console.warn(\"restarting\");\n start();\n };\n this.ws.onmessage = (event) => {\n if (typeof event.data !== \"string\") {\n return;\n }\n console.log(\"message\", event.data);\n };\n };\n start();\n }\n stop() {\n this.ws.close();\n this.status = \"closed\";\n }\n send(inspectionEvent) {\n if (this.status === \"open\") {\n this.ws.send((0, import_safe_stable_stringify2.default)(inspectionEvent));\n } else {\n this.deferredEvents.push(inspectionEvent);\n if (this.deferredEvents.length > this.options.maxDeferredEvents) {\n this.deferredEvents.shift();\n }\n }\n }\n};\nfunction createWebSocketInspector(options) {\n const adapter = new WebSocketAdapter(options);\n const inspector = createInspector(adapter, options);\n return inspector;\n}\nfunction createWebSocketReceiver(options) {\n const resolvedOptions = {\n server: \"ws://localhost:8080\",\n ...options\n };\n const observers = /* @__PURE__ */ new Set();\n const ws = new import_isomorphic_ws.default(resolvedOptions.server);\n ws.onopen = () => {\n console.log(\"websocket open\");\n ws.onmessage = (event) => {\n if (typeof event.data !== \"string\") {\n return;\n }\n console.log(\"message\", event.data);\n const eventData = JSON.parse(event.data);\n observers.forEach((observer) => {\n observer.next?.(eventData);\n });\n };\n };\n const receiver = {\n subscribe(observerOrFn) {\n const observer = (0, import_xstate2.toObserver)(observerOrFn);\n observers.add(observer);\n return {\n unsubscribe() {\n observers.delete(observer);\n }\n };\n }\n };\n return receiver;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createBrowserInspector,\n createBrowserReceiver,\n createInspector,\n createSkyInspector,\n createWebSocketInspector,\n createWebSocketReceiver\n});\n", "import \"reflect-metadata\";\n\nexport * from \"./api\";\n", "/**\n * An APDU command that can be sent to a device.\n * DO NOT USE THIS CLASS DIRECTLY, use ApduBuilder instead.\n */\nexport class Apdu {\n /**\n * Instruction class (1 byte)\n */\n readonly cla: number;\n\n /**\n * Instruction code (1 byte)\n */\n readonly ins: number;\n\n /**\n * Instruction parameter 1 (2 bytes)\n */\n readonly p1: number;\n\n /**\n * Instruction parameter 2 (2 bytes)\n */\n readonly p2: number;\n\n /**\n * Bytes of data\n */\n readonly data: Uint8Array;\n\n constructor(\n cla: number,\n ins: number,\n p1: number,\n p2: number,\n data?: Uint8Array,\n ) {\n this.cla = cla;\n this.ins = ins;\n this.p1 = p1;\n this.p2 = p2;\n this.data = data ?? new Uint8Array();\n }\n\n /**\n * Get the raw binary data of the APDU command\n * @returns {Uint8Array} - The raw APDU command\n */\n getRawApdu(): Uint8Array {\n const header = Uint8Array.from([\n this.cla,\n this.ins,\n this.p1,\n this.p2,\n this.data.length,\n ]);\n\n const apdu = new Uint8Array(header.length + this.data.length);\n apdu.set(header, 0);\n\n if (this.data.length > 0) {\n apdu.set(this.data, header.length);\n }\n\n return apdu;\n }\n}\n", "export type HexaString = `0x${string}`;\n\nexport const isHexaString = (value: string): value is HexaString => {\n return /^0x[0-9a-fA-F]*$/.test(value);\n};\n\nexport const hexaStringToBuffer = (value: string): Uint8Array | null => {\n if (value.startsWith(\"0x\")) {\n value = value.slice(2);\n }\n if (value.length === 0) {\n return new Uint8Array();\n }\n if (value.length % 2 !== 0) {\n value = \"0\" + value;\n }\n if (/^[0-9a-fA-F]*$/.test(value) === false) {\n return null;\n }\n const bytes = value.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16));\n if (!bytes || bytes.some(isNaN)) {\n return null;\n }\n return new Uint8Array(bytes);\n};\n\nexport const bufferToHexaString = (value: Uint8Array): HexaString => {\n return `0x${Array.from(value, (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\")}`;\n};\n", "import { SdkError } from \"@api/Error\";\n\nimport { APDU_MAX_PAYLOAD } from \"./ApduBuilder\";\n\ninterface SdkAppBuilderError extends SdkError {\n readonly message: string;\n}\n\nexport class ValueOverflowError implements SdkAppBuilderError {\n readonly _tag = \"ValueOverflow\";\n readonly originalError?: Error;\n readonly message: string;\n constructor(value: string, max: number | bigint = APDU_MAX_PAYLOAD) {\n this.message = `Value overflow for ${value}, max is ${max}`;\n }\n}\n\nexport class DataOverflowError implements SdkAppBuilderError {\n readonly _tag = \"DataOverflow\";\n readonly message: string;\n readonly originalError?: Error;\n constructor(value: string, remaining = 0) {\n this.message =\n remaining === 0\n ? `this.data is already full (value: ${value})`\n : `this.data will overflow with \"${value}\", remaining bytes: ${remaining}`;\n }\n}\n\nexport class HexaStringEncodeError implements SdkAppBuilderError {\n readonly _tag = \"HexaString\";\n readonly message: string;\n readonly originalError?: Error;\n constructor(value: string) {\n this.message = `Invalid encoded hexa string or length is null: ${value}`;\n }\n}\n\n/**\n * Type for all possible errors that can be thrown by the AppBuilder.\n */\nexport type AppBuilderError =\n | ValueOverflowError\n | DataOverflowError\n | HexaStringEncodeError;\n", "import { hexaStringToBuffer } from \"@api/utils/HexaString\";\n\nimport {\n AppBuilderError,\n DataOverflowError,\n HexaStringEncodeError,\n ValueOverflowError,\n} from \"./AppBuilderError\";\n\nconst MAX_32_BIT_UINT = 0xffffffff;\n\n/**\n * ByteArrayBuilder is a utility class to help build APDU payloads.\n * It allows to easily add data to the payload of an APDU command\n * and to encode this data in different formats.\n *\n * @example\n * ```\n * const builder = new ByteArrayBuilder(255)\n * .add8BitUIntToData(0x05)\n * .add16BitUIntToData(0x0607)\n * .addHexaStringToData(\"0x0809\")\n * .addAsciiStringToData(\"hello\")\n *\n * const payload = builder.build();\n * const builderErrors = builder.getErrors();\n * ```\n */\nexport class ByteArrayBuilder {\n private data: Uint8Array = new Uint8Array();\n private readonly errors: AppBuilderError[] = []; // Custom Error\n\n constructor(private maxPayloadSize: number = MAX_32_BIT_UINT) {}\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Build a new payload instance with the current state of the builder\n * @returns {payload} - Returns a new payload instance\n */\n build = (): Uint8Array => this.data;\n\n /**\n * Try to build a new payload instance with the current state of the builder\n * if the builder don't contain any error.\n * @returns {payload | undefined} - Returns a new payload instance or undefined\n */\n tryBuild = (): Uint8Array | undefined => {\n return this.hasErrors() ? undefined : this.data;\n };\n\n /**\n * Add a 8-bit unsigned integer to the payload (max value 0xff = 255)\n * @param value: number | bigint - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add8BitUIntToData = (value: number | bigint): ByteArrayBuilder => {\n return this.addNumberToData(value, 8n, false, false);\n };\n\n /**\n * Add a 16-bit unsigned integer to the payload (max value 0xffff = 65535)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add16BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 16n, false, bigEndian);\n };\n\n /**\n * Add a 32-bit unsigned integer to the payload (max value 0xffffffff = 4294967295)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add32BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 32n, false, bigEndian);\n };\n\n /**\n * Add a 64-bit unsigned integer to the payload (max value 0xffffffffffffffff = 18446744073709551615)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add64BitUIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 64n, false, bigEndian);\n };\n\n /**\n * Add a 16-bit signed integer to the payload (value between -0x8000 to 0x7fff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add16BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 16n, true, bigEndian);\n };\n\n /**\n * Add a 32-bit signed integer to the payload (value between -0x80000000 to 0x7fffffff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add32BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 32n, true, bigEndian);\n };\n\n /**\n * Add a 64-bit signed integer to the payload (value between -0x8000000000000000 to 0x7fffffffffffffff)\n * @param value: number | bigint - The value to add to the data\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n add64BitIntToData = (\n value: number | bigint,\n bigEndian: boolean = true,\n ): ByteArrayBuilder => {\n return this.addNumberToData(value, 64n, true, bigEndian);\n };\n\n /**\n * Add a Uint8Array to the payload if it has enough remaining space\n * @param value: Uint8Array - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addBufferToData = (value: Uint8Array): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value)) {\n this.errors.push(new DataOverflowError(value.toString()));\n return this;\n }\n\n this.data = Uint8Array.from([...this.data, ...value]);\n return this;\n };\n\n /**\n * Add a string to the payload if it has enough remaining space\n * and it can be formatted as a hexadecimal string\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addHexaStringToData = (value: string): ByteArrayBuilder => {\n const result = hexaStringToBuffer(value);\n if (result === null || result.length === 0) {\n this.errors.push(new HexaStringEncodeError(value));\n return this;\n }\n this.addBufferToData(result);\n return this;\n };\n\n /**\n * Add an ascii string to the data field if it has enough remaining space\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n addAsciiStringToData = (value: string): ByteArrayBuilder => {\n const bytes = new TextEncoder().encode(value);\n this.addBufferToData(bytes);\n return this;\n };\n\n /**\n * Add a Length-Value encoded hexadecimal string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromHexa = (value: string): ByteArrayBuilder => {\n const result = hexaStringToBuffer(value);\n if (result === null || result.length === 0) {\n this.errors.push(new HexaStringEncodeError(value));\n return this;\n }\n\n if (!this.hasEnoughLengthRemaining(result, true)) {\n this.errors.push(new DataOverflowError(value));\n return this;\n }\n // values are always being well formatted at this point\n // therefore no status test is needed\n this.add8BitUIntToData(result.length);\n this.addBufferToData(result);\n return this;\n };\n\n /**\n * Add a Length-Value encoded buffer to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: Uint8Array - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromBuffer = (value: Uint8Array): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value, true)) {\n this.errors.push(new DataOverflowError(value.toString()));\n return this;\n }\n\n this.add8BitUIntToData(value.length);\n this.addBufferToData(value);\n return this;\n };\n\n /**\n * Add a Length-Value encoded ascii string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n encodeInLVFromAscii = (value: string): ByteArrayBuilder => {\n if (!this.hasEnoughLengthRemaining(value, true)) {\n this.errors.push(new DataOverflowError(value));\n return this;\n }\n\n this.add8BitUIntToData(value.length);\n this.addAsciiStringToData(value);\n return this;\n };\n\n /**\n * Returns the remaining payload length\n * @returns {number}\n */\n getAvailablePayloadLength = (): number => {\n return this.maxPayloadSize - this.data.length;\n };\n\n /**\n * Returns the current errors\n * @returns {AppBuilderError[]} - Returns an array of errors\n */\n getErrors = (): AppBuilderError[] => this.errors;\n\n /**\n * Verifies if the builder contains errors\n * @returns {boolean} - Returns wether the builder contains errors or not\n */\n hasErrors = (): boolean => this.errors.length !== 0;\n\n // ===========\n // Private API\n // ===========\n\n /**\n * Check if there is enough space to add a value to the data field\n * @param value {string | Uint8Array | number[]} - Value to add to the data\n * @param hasLv {boolean} - Length-Value encoding flag\n * @returns {boolean} - Returns true if there is enough space to add the value\n */\n private hasEnoughLengthRemaining = (\n value: string | Uint8Array | number[],\n hasLv: boolean = false,\n ): boolean => {\n return (\n this.data.length + value.length + (hasLv ? 1 : 0) <= this.maxPayloadSize\n );\n };\n\n /**\n * Add a number to the payload\n * @param value: number | bigint - The value to add to the data\n * @param sizeInBits: bigint - The number size in bits, for example 16 for a uint16\n * @param signed: boolean - Whether the value is signed or unsigned.\n * @param bigEndian: boolean - True to encode in big endian, false for little endian\n * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder\n */\n private addNumberToData(\n value: number | bigint,\n sizeInBits: bigint,\n signed: boolean,\n bigEndian: boolean,\n ): ByteArrayBuilder {\n // Convert the number to two's complement and check its bounds\n let converted = this.checkBoundsAndConvert(value, sizeInBits, signed);\n if (converted === undefined) {\n return this;\n }\n\n // Compute the buffer\n const sizeInBytes = Number(sizeInBits) / 8;\n const buffer = new Uint8Array(sizeInBytes);\n if (bigEndian) {\n for (let i = sizeInBytes - 1; i >= 0; i--) {\n buffer[i] = Number(converted & 0xffn);\n converted >>= 8n;\n }\n } else {\n for (let i = 0; i < sizeInBytes; i++) {\n buffer[i] = Number(converted & 0xffn);\n converted >>= 8n;\n }\n }\n return this.addBufferToData(buffer);\n }\n\n /**\n * Checks the bounds of a signed or unsigned integer value and converts it to two's complement if it is signed and negative.\n * @param value The value to check and convert.\n * @param sizeInBits The size of the value in bits.\n * @param signed Whether the value is signed or unsigned.\n * @returns The converted value, or null if the value is out of bounds.\n */\n private checkBoundsAndConvert(\n value: number | bigint,\n sizeInBits: bigint,\n signed: boolean,\n ): bigint | undefined {\n // Normalize the value to a bigint\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || value > Number.MAX_SAFE_INTEGER) {\n this.errors.push(new ValueOverflowError(value.toString()));\n return;\n }\n value = BigInt(value);\n }\n\n if (!signed) {\n // Check if the value is within the bounds of an unsigned integer\n const limit = 1n << sizeInBits;\n if (value < 0 || value >= limit) {\n this.errors.push(new ValueOverflowError(value.toString(), limit - 1n));\n return;\n }\n } else {\n // Check if the value is within the bounds of a signed integer\n const limit = 1n << (sizeInBits - 1n);\n if (value >= limit || value < -limit) {\n this.errors.push(new ValueOverflowError(value.toString(), limit - 1n));\n return;\n }\n\n // Convert the value to two's complement if it is negative\n // https://en.wikipedia.org/wiki/Two%27s_complement\n if (value < 0n) {\n const mask = (1n << sizeInBits) - 1n;\n value = -value;\n value = (~value & mask) + 1n;\n }\n }\n return value;\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\n\nimport { AppBuilderError } from \"./AppBuilderError\";\nimport { ByteArrayBuilder } from \"./ByteArrayBuilder\";\n\nexport const HEADER_LENGTH = 5;\nexport const APDU_MAX_PAYLOAD = 255;\nexport const APDU_MAX_SIZE = APDU_MAX_PAYLOAD + 5;\n\nexport type ApduBuilderArgs = {\n readonly ins: number;\n readonly cla: number;\n readonly p1: number;\n readonly p2: number;\n};\n\n/**\n * ApduBuilder is a utility class to help build APDU commands.\n * It allows to easily add data to the data field of the APDU command\n * and to encode this data in different formats.\n *\n * @example\n * ```\n * const apduBuilder = new ApduBuilder({ ins: 0x01, cla: 0x02, p1: 0x03, p2: 0x04 })\n * .add8BitUIntToData(0x05)\n * .add16BitUIntToData(0x0607)\n * .addHexaStringToData(\"0x0809\")\n * .addAsciiStringToData(\"hello\")\n *\n * const apdu = apduBuilder.build();\n * const builderErrors = apduBuilder.getErrors();\n * ```\n */\nexport class ApduBuilder {\n private readonly _ins: number;\n private readonly _cla: number;\n private readonly _p1: number;\n private readonly p2: number;\n private data: ByteArrayBuilder = new ByteArrayBuilder(APDU_MAX_PAYLOAD);\n\n constructor({ ins, cla, p1, p2 }: ApduBuilderArgs) {\n this._cla = cla & 0xff;\n this._ins = ins & 0xff;\n this._p1 = p1 & 0xff;\n this.p2 = p2 & 0xff;\n }\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Build a new Apdu instance with the current state of the builder\n * @returns {Apdu} - Returns a new Apdu instance\n */\n build = (): Apdu =>\n new Apdu(this._cla, this._ins, this._p1, this.p2, this.data.build());\n\n /**\n * Add a 8-bit unsigned integer to the data field (max value 0xff = 255)\n * @param value?: number - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n add8BitUIntToData = (value: number): ApduBuilder => {\n this.data.add8BitUIntToData(value);\n return this;\n };\n\n /**\n * Add a 16-bit unsigned integer to the data field (max value 0xffff = 65535)\n * @param value: number - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n add16BitUIntToData = (value: number): ApduBuilder => {\n this.data.add16BitUIntToData(value);\n return this;\n };\n\n /**\n * Add a 32-bit unsigned integer to the data field (max value 0xffffffff = 4294967295)\n * @param value: number - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n add32BitUIntToData = (value: number): ApduBuilder => {\n this.data.add32BitUIntToData(value);\n return this;\n };\n\n /**\n * Add a Uint8Array to the data field if it has enough remaining space\n * @param value: Uint8Array - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n addBufferToData = (value: Uint8Array): ApduBuilder => {\n this.data.addBufferToData(value);\n return this;\n };\n\n /**\n * Add a string to the data field if it has enough remaining space\n * and it can be formatted as a hexadecimal string\n * @param value: string - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n addHexaStringToData = (value: string): ApduBuilder => {\n this.data.addHexaStringToData(value);\n return this;\n };\n\n /**\n * Add an ascii string to the data field if it has enough remaining space\n * @param value: string - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n addAsciiStringToData = (value: string): ApduBuilder => {\n this.data.addAsciiStringToData(value);\n return this;\n };\n\n /**\n * Add a Length-Value encoded hexadecimal string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n encodeInLVFromHexa = (value: string): ApduBuilder => {\n this.data.encodeInLVFromHexa(value);\n return this;\n };\n\n /**\n * Add a Length-Value encoded buffer to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: Uint8Array - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n encodeInLVFromBuffer = (value: Uint8Array): ApduBuilder => {\n this.data.encodeInLVFromBuffer(value);\n return this;\n };\n\n /**\n * Add a Length-Value encoded ascii string to the data field if it has enough remaining space\n * Length-Value encoding is a way to encode data in a binary format with the first byte\n * being the length of the data and the following bytes being the data itself\n * @param value: string - The value to add to the data\n * @returns {ApduBuilder} - Returns the current instance of ApduBuilder\n */\n encodeInLVFromAscii = (value: string): ApduBuilder => {\n this.data.encodeInLVFromAscii(value);\n return this;\n };\n\n /**\n * Returns the remaining payload length\n * @returns {number}\n */\n getAvailablePayloadLength = (): number =>\n this.data.getAvailablePayloadLength();\n\n /**\n * Returns the current errors\n * @returns {AppBuilderError[]} - Returns an array of errors\n */\n getErrors = (): AppBuilderError[] => this.data.getErrors();\n}\n", "import { bufferToHexaString, HexaString } from \"@api/utils/HexaString\";\n\nexport type TaggedField = {\n readonly tag: number;\n readonly value: Uint8Array;\n};\n\n/**\n * ByteArrayParser is a utility class to help parse a byte array.\n *\n * It provides methods to extract fields of different types from the buffer.\n *\n * @example\n * ```\n * const parser = new ByteArrayParser(buffer);\n * const targetId = parser.encodeToHexaString(parser.extractFieldByLength(4));\n * const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n * ```\n */\nexport class ByteArrayParser {\n private index: number = 0;\n\n constructor(private readonly buffer: Uint8Array) {}\n\n // ==========\n // Public API\n // ==========\n\n /**\n * Test if the length is greater than the response length\n * @param length: number\n * @returns {boolean} - Returns false if the length is greater than the response length\n */\n testMinimalLength(length: number): boolean {\n return length <= this.buffer.length - this.index;\n }\n\n /**\n * Extract a single byte from the response\n * @returns {number | undefined} - Returns the byte extracted from the response\n */\n extract8BitUInt(): number | undefined {\n if (this.outOfRange(1)) return;\n return this.buffer[this.index++];\n }\n\n /**\n * Extract a 16-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 16-bit unsigned integer extracted from the response\n */\n extract16BitUInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(16n, false, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 16-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 16-bit signed integer extracted from the response\n */\n extract16BitInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(16n, true, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 32-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 32-bit unsigned integer extracted from the response\n */\n extract32BitUInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(32n, false, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 32-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 32-bit signed integer extracted from the response\n */\n extract32BitInt(bigEndian: boolean = true): number | undefined {\n const value = this.extractNumber(32n, true, bigEndian);\n return value === undefined ? undefined : Number(value);\n }\n\n /**\n * Extract a 64-bit unsigned integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 64-bit unsigned integer extracted from the response\n */\n extract64BitUInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(64n, false, bigEndian);\n }\n\n /**\n * Extract a 64-bit signed integer from the response\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {number | undefined} - Returns the 64-bit signed integer extracted from the response\n */\n extract64BitInt(bigEndian: boolean = true): bigint | undefined {\n return this.extractNumber(64n, true, bigEndian);\n }\n\n /**\n * Extract a field of a specified length from the response\n * @param length: number - The length of the field to extract\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldByLength(length: number): Uint8Array | undefined {\n if (this.outOfRange(length)) return;\n if (length === 0) return new Uint8Array();\n const field = this.buffer.slice(this.index, this.index + length);\n this.index += length;\n return field;\n }\n\n /**\n * Extract a field from the response that is length-value encoded\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldLVEncoded(): Uint8Array | undefined {\n // extract Length field\n const length = this.extract8BitUInt();\n if (length === undefined) return;\n else if (length === 0) return new Uint8Array();\n const field = this.extractFieldByLength(length);\n // if the field is inconsistent then roll back to the initial point\n if (field === undefined) this.index--;\n return field;\n }\n\n /**\n * Extract a field from the response that is tag-length-value encoded\n * @returns {TaggedField | undefined} - Returns the field extracted from the response\n */\n extractFieldTLVEncoded(): TaggedField | undefined {\n if (this.outOfRange(2)) return;\n\n const tag = this.extract8BitUInt();\n const value = this.extractFieldLVEncoded();\n\n if (tag === undefined || value === undefined) {\n this.index--;\n return;\n }\n return { tag, value };\n }\n\n /**\n * Encode a value to a hexadecimal string\n * @param value {Uint8Array} - The value to encode\n * @param prefix {boolean} - Whether to add a prefix to the encoded value\n * @returns {string} - The encoded value as a hexadecimal string\n */\n encodeToHexaString(value?: Uint8Array, prefix?: false): string;\n encodeToHexaString(value?: Uint8Array, prefix?: true): HexaString;\n encodeToHexaString(\n value?: Uint8Array,\n prefix: boolean = false,\n ): HexaString | string {\n if (value === undefined || value.length === 0) return \"\";\n const result = bufferToHexaString(value);\n return prefix ? result : result.slice(2);\n }\n\n /**\n * Encode a value to an ASCII string\n * @param value {Uint8Array} - The value to encode\n * @returns {string} - The encoded value as an ASCII string\n */\n encodeToString(value?: Uint8Array): string {\n let result = \"\";\n let index = 0;\n\n if (!value) return result;\n\n while (index <= value.length) {\n const item = value[index];\n if (item) result += String.fromCharCode(item);\n index++;\n }\n\n return result;\n }\n\n /**\n * Get the current index of the parser\n * @returns {number} - The current index of the parser\n */\n getCurrentIndex(): number {\n return this.index;\n }\n\n /**\n * Reset the index of the parser to 0\n */\n resetIndex() {\n this.index = 0;\n }\n\n /**\n * Get the remaining length of the response\n * @returns {number} - The remaining length of the response\n */\n getUnparsedRemainingLength(): number {\n return this.buffer.length - this.index;\n }\n\n // ===========\n // Private API\n // ===========\n\n /**\n * Check whether the expected length is out of range\n * @param length: number\n * @returns {boolean} - Returns true if the expected length is out of range\n */\n private outOfRange(length: number): boolean {\n return this.index + length > this.buffer.length;\n }\n\n /**\n * Extract a number from the buffer\n * @param sizeInBits: bigint - The number size in bits, for example 16 for a uint16\n * @param signed: boolean - True is the number can be signed and converted to two's compliment\n * @param bigEndian: boolean - True to decode in big endian, false for little endian\n * @returns {bigint | undefined} - Returns the number extracted from the buffer\n */\n private extractNumber(\n sizeInBits: bigint,\n signed: boolean,\n bigEndian: boolean,\n ): bigint | undefined {\n // Check the range\n const sizeInBytes: number = Number(sizeInBits) / 8;\n if (this.outOfRange(sizeInBytes)) return;\n\n // Compute the number\n let value: bigint = 0n;\n if (bigEndian) {\n for (let i = 0; i < sizeInBytes; i++) {\n value = (value << 8n) | BigInt(this.buffer[i + this.index]!);\n }\n } else {\n for (let i = sizeInBytes - 1; i >= 0; i--) {\n value = (value << 8n) | BigInt(this.buffer[i + this.index]!);\n }\n }\n\n // Convert the value to two's complement if it is negative\n // https://en.wikipedia.org/wiki/Two%27s_complement\n if (signed) {\n const limit = 1n << (sizeInBits - 1n);\n if (value & limit) {\n value -= limit << 1n;\n }\n }\n\n this.index += sizeInBytes;\n return value;\n }\n}\n", "import { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { HexaString } from \"@api/utils/HexaString\";\n\nimport { ByteArrayParser } from \"./ByteArrayParser\";\n\nexport type TaggedField = {\n readonly tag: number;\n readonly value: Uint8Array;\n};\n\n/**\n * ApduParser is a utility class to help parse APDU responses.\n *\n * It provides methods to extract fields of different types from the response.\n *\n * @example\n * ```\n * const parser = new ApduParser(apduResponse);\n * const targetId = parser.encodeToHexaString(parser.extractFieldByLength(4));\n * const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n * ```\n */\nexport class ApduParser {\n private parser: ByteArrayParser;\n\n constructor(response: ApduResponse) {\n this.parser = new ByteArrayParser(response.data);\n }\n\n /**\n * Test if the length is greater than the response length\n * @param length: number\n * @returns {boolean} - Returns false if the length is greater than the response length\n */\n testMinimalLength = (length: number): boolean =>\n this.parser.testMinimalLength(length);\n\n /**\n * Extract a single byte from the response\n * @returns {number | undefined} - Returns the byte extracted from the response\n */\n extract8BitUInt = (): number | undefined => this.parser.extract8BitUInt();\n\n /**\n * Extract a 16-bit unsigned integer (Big Endian coding) from the response\n * @returns {number | undefined} - Returns the 16-bit unsigned integer extracted from the response\n */\n extract16BitUInt = (): number | undefined => this.parser.extract16BitUInt();\n\n /**\n * Extract a 32-bit unsigned integer (Big Endian coding) from the response\n * @returns {number | undefined} - Returns the 32-bit unsigned integer extracted from the response\n */\n extract32BitUInt = (): number | undefined => this.parser.extract32BitUInt();\n\n /**\n * Extract a field of a specified length from the response\n * @param length: number - The length of the field to extract\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldByLength = (length: number): Uint8Array | undefined =>\n this.parser.extractFieldByLength(length);\n\n /**\n * Extract a field from the response that is length-value encoded\n * @returns {Uint8Array | undefined} - Returns the field extracted from the response\n */\n extractFieldLVEncoded = (): Uint8Array | undefined =>\n this.parser.extractFieldLVEncoded();\n\n /**\n * Extract a field from the response that is tag-length-value encoded\n * @returns {TaggedField | undefined} - Returns the field extracted from the response\n */\n extractFieldTLVEncoded = (): TaggedField | undefined =>\n this.parser.extractFieldTLVEncoded();\n\n /**\n * Encode a value to a hexadecimal string\n * @param value {Uint8Array} - The value to encode\n * @param prefix {boolean} - Whether to add a prefix to the encoded value\n * @returns {string} - The encoded value as a hexadecimal string\n */\n encodeToHexaString(value?: Uint8Array, prefix?: false): string;\n encodeToHexaString(value?: Uint8Array, prefix?: true): HexaString;\n encodeToHexaString(\n value?: Uint8Array,\n prefix: boolean = false,\n ): HexaString | string {\n return prefix\n ? this.parser.encodeToHexaString(value, true)\n : this.parser.encodeToHexaString(value, false);\n }\n\n /**\n * Encode a value to an ASCII string\n * @param value {Uint8Array} - The value to encode\n * @returns {string} - The encoded value as an ASCII string\n */\n encodeToString = (value?: Uint8Array): string =>\n this.parser.encodeToString(value);\n\n /**\n * Get the remaining length of the response\n * @returns {number} - The remaining length of the response\n */\n getUnparsedRemainingLength = (): number =>\n this.parser.getUnparsedRemainingLength();\n}\n", "import {\n InvalidBatteryDataError,\n InvalidBatteryStatusTypeError,\n InvalidResponseFormatError,\n InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport { GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport { DeviceExchangeError, UnknownDeviceExchangeError } from \"@api/Error\";\n\nexport enum CommandResultStatus {\n Error = \"ERROR\",\n Success = \"SUCCESS\",\n}\ntype CommandSuccessResult<Data> = {\n status: CommandResultStatus.Success;\n data: Data;\n};\nexport type CommandErrorResult<SpecificErrorCodes = void> = {\n error:\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | UnknownDeviceExchangeError;\n status: CommandResultStatus.Error;\n};\nexport type CommandResult<Data, SpecificErrorCodes = void> =\n | CommandSuccessResult<Data>\n | CommandErrorResult<SpecificErrorCodes>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error:\n | DeviceExchangeError<SpecificErrorCodes>\n | InvalidBatteryDataError\n | InvalidBatteryStatusTypeError\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | UnknownDeviceExchangeError;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error) {\n return {\n status: CommandResultStatus.Error,\n error,\n };\n }\n return {\n status: CommandResultStatus.Success,\n data,\n };\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return result.status === CommandResultStatus.Success;\n}\n", "import { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nexport class CommandUtils {\n static isValidStatusCode(statusCode: Uint8Array) {\n return statusCode.length === 2;\n }\n\n static isSuccessResponse({ statusCode }: ApduResponse) {\n if (!this.isValidStatusCode(statusCode)) {\n return false;\n }\n\n return statusCode[0] === 0x90 && statusCode[1] === 0x00;\n }\n\n static isLockedDeviceResponse({ statusCode }: ApduResponse) {\n if (!this.isValidStatusCode(statusCode)) {\n return false;\n }\n\n return statusCode[0] === 0x55 && statusCode[1] === 0x15;\n }\n}\n", "export interface SdkError {\n readonly _tag: string;\n readonly originalError?: unknown;\n message?: string;\n}\n\nexport type DeviceExchangeErrorArgs<SpecificErrorCodes> = {\n tag: string;\n originalError?: unknown;\n errorCode: SpecificErrorCodes;\n message: string;\n};\n\nexport type CommandErrorArgs<SpecificErrorCodes> = Omit<\n DeviceExchangeErrorArgs<SpecificErrorCodes>,\n \"tag\"\n>;\n\nexport abstract class DeviceExchangeError<SpecificErrorCodes = void> {\n readonly _tag: string;\n readonly originalError?: unknown;\n readonly errorCode: SpecificErrorCodes;\n readonly message: string;\n\n protected constructor({\n tag,\n errorCode,\n originalError,\n message,\n }: DeviceExchangeErrorArgs<SpecificErrorCodes>) {\n this._tag = tag;\n this.originalError = originalError;\n this.errorCode = errorCode;\n this.message = message;\n }\n}\n\nexport class UnknownDeviceExchangeError implements SdkError {\n readonly _tag = \"UnknownDeviceExchangeError\";\n readonly originalError?: unknown;\n readonly message: string;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n this.message = \"Unexpected device exchange error happened.\";\n }\n}\n", "import { DeviceExchangeErrorArgs } from \"@api/Error\";\n\n/**\n * CommandErrors dictionary utility type\n */\nexport type CommandErrors<SpecificErrorCodes extends string> = Record<\n SpecificErrorCodes,\n Pick<DeviceExchangeErrorArgs<SpecificErrorCodes>, \"message\"> &\n Partial<Pick<DeviceExchangeErrorArgs<SpecificErrorCodes>, \"tag\">>\n>;\n\n/**\n * Typeguard to check if an error status code is handled\n *\n * @param errorCode\n * @param errors\n */\nexport const isCommandErrorCode = <SpecificErrorCodes extends string>(\n errorCode: string,\n errors: CommandErrors<SpecificErrorCodes>,\n): errorCode is SpecificErrorCodes => Object.keys(errors).includes(errorCode);\n", "import { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n CommandErrorArgs,\n DeviceExchangeError,\n UnknownDeviceExchangeError,\n} from \"@api/Error\";\n\nimport { CommandErrors, isCommandErrorCode } from \"./CommandErrors\";\n\n/**\n * Status word list of global errors that any command could result\n */\nexport type GlobalCommandErrorStatusCode = \"5515\" | \"5501\" | \"5502\" | \"5223\";\n\n/**\n * Global command error class\n */\nexport class GlobalCommandError extends DeviceExchangeError<GlobalCommandErrorStatusCode> {\n constructor(args: CommandErrorArgs<GlobalCommandErrorStatusCode>) {\n super({ tag: \"GlobalCommandError\", ...args });\n }\n}\n\n/**\n * Global errors dictionary that links a global status code to an error message\n */\nexport const GLOBAL_ERRORS: CommandErrors<GlobalCommandErrorStatusCode> = {\n \"5515\": { message: \"Device is locked.\", tag: \"DeviceLockedError\" },\n \"5501\": { message: \"Action refused on device.\", tag: \"ActionRefusedError\" },\n \"5502\": { message: \"Pin is not set\", tag: \"PinNotSetError\" },\n \"5223\": { message: \"Device internal error\", tag: \"DeviceInternalError\" },\n};\n\n/**\n * Global error handler utility class\n */\nexport class GlobalCommandErrorHandler {\n /**\n * Static method to get a handled GlobalCommandError or an unhandled SdkError from an apdu response\n * @param apduResponse\n */\n static handle(\n apduResponse: ApduResponse,\n ): GlobalCommandError | UnknownDeviceExchangeError {\n const parser = new ApduParser(apduResponse);\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, GLOBAL_ERRORS)) {\n return new GlobalCommandError({ ...GLOBAL_ERRORS[errorCode], errorCode });\n }\n return new UnknownDeviceExchangeError({\n message: \"UnknownError\",\n errorCode,\n });\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { Command } from \"@api/command/Command\";\nimport {\n CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nexport type CloseAppCommandResult = CommandResult<void>;\n\n/**\n * The command to close a runnint application on the device.\n */\nexport class CloseAppCommand implements Command<void> {\n readonly args = undefined;\n\n readonly triggersDisconnection = true;\n\n getApdu(): Apdu {\n const closeAppApduArgs: ApduBuilderArgs = {\n cla: 0xb0,\n ins: 0xa7,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(closeAppApduArgs).build();\n }\n\n parseResponse(apduResponse: ApduResponse): CommandResult<void> {\n if (CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n data: undefined,\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n}\n", "import { SdkError } from \"@api/Error\";\n\nexport class InvalidStatusWordError implements SdkError {\n readonly _tag = \"InvalidStatusWordError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid status word.\");\n }\n}\n\nexport class InvalidBatteryStatusTypeError implements SdkError {\n readonly _tag = \"InvalidBatteryStatusTypeError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery status type.\");\n }\n}\n\nexport class InvalidBatteryDataError implements SdkError {\n readonly _tag = \"InvalidBatteryDataError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery data.\");\n }\n}\n\nexport class InvalidBatteryFlagsError implements SdkError {\n readonly _tag = \"InvalidBatteryFlagsError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid battery flags.\");\n }\n}\n\nexport class InvalidResponseFormatError implements SdkError {\n readonly _tag = \"InvalidResponseFormatError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid response format.\");\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { Command } from \"@api/command/Command\";\nimport { InvalidResponseFormatError } from \"@api/command/Errors\";\nimport {\n CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nexport type GetAppAndVersionResponse = {\n /**\n * The name of the application currently running on the device.\n */\n readonly name: string;\n /**\n * The version of the application currently running on the device.\n */\n readonly version: string;\n /**\n * Flags that are used to provide additional information about the application.\n */\n readonly flags?: number | Uint8Array;\n};\n\nexport type GetAppAndVersionCommandResult =\n CommandResult<GetAppAndVersionResponse>;\n\n/**\n * Command to get information about the application currently running on the\n * device.\n */\nexport class GetAppAndVersionCommand\n implements Command<GetAppAndVersionResponse>\n{\n readonly args = undefined;\n\n getApdu(): Apdu {\n const getAppAndVersionApduArgs: ApduBuilderArgs = {\n cla: 0xb0,\n ins: 0x01,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(getAppAndVersionApduArgs).build();\n }\n\n parseResponse(apduResponse: ApduResponse): GetAppAndVersionCommandResult {\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n const parser = new ApduParser(apduResponse);\n\n if (parser.extract8BitUInt() !== 1) {\n return CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"getAppAndVersion: format not supported\",\n ),\n });\n }\n\n const name = parser.encodeToString(parser.extractFieldLVEncoded());\n const version = parser.encodeToString(parser.extractFieldLVEncoded());\n\n if (parser.getUnparsedRemainingLength() === 0) {\n return CommandResultFactory({\n data: { name, version },\n });\n }\n\n const flags = parser.extractFieldLVEncoded();\n return CommandResultFactory({\n data: { name, version, flags },\n });\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { Command } from \"@api/command/Command\";\nimport {\n InvalidBatteryDataError,\n InvalidBatteryStatusTypeError,\n} from \"@api/command/Errors\";\nimport {\n CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\n/**\n * The type of battery information to retrieve.\n */\nexport enum BatteryStatusType {\n /**\n * The command response will be the battery percentage.\n */\n BATTERY_PERCENTAGE = 0x00,\n /**\n * The command response will be the battery voltage in mV.\n */\n BATTERY_VOLTAGE = 0x01,\n /**\n * The command response will be the battery temperature in degree celsius\n */\n BATTERY_TEMPERATURE = 0x02,\n /**\n * The command response will be the battery current in mA.\n */\n BATTERY_CURRENT = 0x03,\n /**\n * The command response will be the battery status (cf. `BatteryStatusFlags`)\n */\n BATTERY_FLAGS = 0x04,\n}\n\nexport enum ChargingMode {\n NONE = 0x00,\n USB = 0x01,\n QI = 0x02,\n}\n\nenum FlagMasks {\n CHARGING = 0x00000001,\n USB = 0x00000002,\n USB_POWERED = 0x00000008,\n BLE = 0x00000004,\n ISSUE_BATTERY = 0x00000080,\n ISSUE_CHARGING = 0x00000010,\n ISSUE_TEMPERATURE = 0x00000020,\n}\n\nexport type BatteryStatusFlags = {\n readonly charging: ChargingMode;\n readonly issueCharging: boolean;\n readonly issueTemperature: boolean;\n readonly issueBattery: boolean;\n};\n\n/**\n * The response type depends on the `statusType` parameter sent with the command,\n * cf. `BatteryStatusType`.\n */\nexport type GetBatteryStatusResponse = number | BatteryStatusFlags;\n\nexport type GetBatteryStatusArgs = {\n readonly statusType: BatteryStatusType;\n};\n\n/**\n * Command to get the battery status of the device.\n * The parameter statusType defines the type of information to retrieve, cf.\n * `BatteryStatusType`.\n *\n * WARNING: this command should not be sent within a logic of polling as it is\n * going to decrease the overall performance of the communication with the device.\n */\nexport class GetBatteryStatusCommand\n implements Command<GetBatteryStatusResponse, GetBatteryStatusArgs>\n{\n readonly args: GetBatteryStatusArgs;\n\n constructor(args: GetBatteryStatusArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const getBatteryStatusArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x10,\n p1: 0x00,\n p2: this.args.statusType,\n };\n return new ApduBuilder(getBatteryStatusArgs).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetBatteryStatusResponse> {\n const parser = new ApduParser(apduResponse);\n\n switch (this.args.statusType) {\n case BatteryStatusType.BATTERY_PERCENTAGE: {\n const percentage = parser.extract8BitUInt();\n if (percentage === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n return CommandResultFactory({\n data: percentage > 100 ? -1 : percentage,\n });\n }\n case BatteryStatusType.BATTERY_VOLTAGE: {\n const data = parser.extract16BitUInt();\n if (data === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n return CommandResultFactory({\n data,\n });\n }\n case BatteryStatusType.BATTERY_TEMPERATURE:\n case BatteryStatusType.BATTERY_CURRENT: {\n const data = parser.extract8BitUInt();\n if (data === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n return CommandResultFactory({\n data: (data << 24) >> 24,\n });\n }\n case BatteryStatusType.BATTERY_FLAGS: {\n const flags = parser.extract32BitUInt();\n if (flags === undefined) {\n return CommandResultFactory({\n error: new InvalidBatteryDataError(\"Cannot parse APDU response\"),\n });\n }\n const chargingUSB = !!(flags & FlagMasks.USB_POWERED);\n const chargingQi = !chargingUSB && !!(flags & FlagMasks.CHARGING);\n return CommandResultFactory({\n data: {\n charging: chargingQi\n ? ChargingMode.QI\n : chargingUSB\n ? ChargingMode.USB\n : ChargingMode.NONE,\n issueCharging: !!(flags & FlagMasks.ISSUE_CHARGING),\n issueTemperature: !!(flags & FlagMasks.ISSUE_TEMPERATURE),\n issueBattery: !!(flags & FlagMasks.ISSUE_BATTERY),\n },\n });\n }\n default:\n return CommandResultFactory({\n error: new InvalidBatteryStatusTypeError(\n \"One or some case(s) not covered\",\n ),\n });\n }\n }\n}\n", "export enum DeviceModelId {\n NANO_S = \"nanoS\",\n NANO_SP = \"nanoSP\",\n NANO_X = \"nanoX\",\n STAX = \"stax\",\n FLEX = \"flex\",\n}\n\n/**\n * Unique identifier for a device.\n *\n * NB: This identifier is generated at runtime and is not persisted. It cannot\n * be used to identify a device across sessions.\n * There is in fact no way to identify a device across sessions, which is a\n * privacy feature of Ledger devices.\n */\nexport type DeviceId = string;\n\nexport type DeviceModelArgs = {\n readonly id: DeviceId;\n readonly model: DeviceModelId;\n readonly name: string;\n};\n\nexport class DeviceModel {\n public readonly id: DeviceId;\n public readonly model: DeviceModelId;\n public readonly name: string;\n\n constructor({ id, model, name }: DeviceModelArgs) {\n this.id = id;\n this.model = model;\n this.name = name;\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { Command } from \"@api/command/Command\";\nimport {\n CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\n/**\n * Response of the GetOsVersionCommand.\n */\nexport type GetOsVersionResponse = {\n /**\n * Target identifier.\n */\n readonly targetId: string;\n\n /**\n * Version of BOLOS on the secure element (SE).\n * {@link https://developers.ledger.com/docs/device-app/architecture/bolos/hardware-architecture | Hardware Architecture}\n */\n readonly seVersion: string;\n\n /**\n * Secure element flags.\n * Used to represent the current state of the secure element.\n */\n readonly seFlags: number;\n\n /**\n * Version of the microcontroller unit (MCU) SEPH, which is the SE-MCU link protocol.\n * {@link https://developers.ledger.com/docs/device-app/architecture/bolos/hardware-architecture | Hardware Architecture}\n */\n readonly mcuSephVersion: string;\n\n /**\n * Version of the MCU bootloader.\n */\n readonly mcuBootloaderVersion: string;\n\n /**\n * Hardware revision version.\n * Only available for Ledger Nano X in which case it's \"00\" or \"01\".\n */\n readonly hwVersion: string;\n\n /**\n * Identifier of the installed language pack.\n * Can be one of:\n * - \"00\": English\n * - \"01\": French\n * - \"02\": Spanish\n */\n readonly langId: string; // [SHOULD] be an enum\n\n /**\n * State for Ledger Recover. // [SHOULD] Add more information about this field\n */\n readonly recoverState: string;\n};\n\n/**\n * Command to get information about the device firmware.\n */\nexport class GetOsVersionCommand implements Command<GetOsVersionResponse> {\n readonly args = undefined;\n\n getApdu(): Apdu {\n const getOsVersionApduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x01,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(getOsVersionApduArgs).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n deviceModelId: DeviceModelId,\n ): CommandResult<GetOsVersionResponse> {\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n const parser = new ApduParser(apduResponse);\n\n const targetId = parser.encodeToHexaString(parser.extractFieldByLength(4));\n const seVersion = parser.encodeToString(parser.extractFieldLVEncoded());\n const seFlags = parseInt(\n parser.encodeToHexaString(parser.extractFieldLVEncoded()).toString(),\n 16,\n );\n const mcuSephVersion = parser.encodeToString(\n parser.extractFieldLVEncoded(),\n );\n const mcuBootloaderVersion = parser.encodeToString(\n parser.extractFieldLVEncoded(),\n );\n\n let hwVersion = \"00\";\n if (deviceModelId === DeviceModelId.NANO_X) {\n hwVersion = parser.encodeToHexaString(parser.extractFieldLVEncoded());\n }\n\n const langId = parser.encodeToHexaString(parser.extractFieldLVEncoded());\n const recoverState = parser.encodeToHexaString(\n parser.extractFieldLVEncoded(),\n );\n\n return CommandResultFactory({\n data: {\n targetId,\n seVersion,\n seFlags,\n mcuSephVersion,\n mcuBootloaderVersion,\n hwVersion,\n langId,\n recoverState: recoverState ? recoverState : \"0\",\n },\n });\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { Command } from \"@api/command/Command\";\nimport {\n CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type AppResponse = {\n readonly appEntryLength: number;\n readonly appSizeInBlocks: number;\n readonly appCodeHash: string;\n readonly appFullHash: string;\n readonly appName: string;\n};\n\nexport type ListAppsResponse = AppResponse[];\n\nexport type ListAppsArgs = {\n readonly isContinue: boolean;\n};\n\nexport type ListAppsErrorCodes = \"6624\";\n\nconst LIST_APP_ERRORS: CommandErrors<ListAppsErrorCodes> = {\n \"6624\": { message: \"Invalid state (List applications command must be sent)\" },\n};\n\nexport type ListAppsCommandResult = CommandResult<\n ListAppsResponse,\n ListAppsErrorCodes\n>;\n\nexport class ListAppsCommandError extends DeviceExchangeError<ListAppsErrorCodes> {\n constructor({ message, errorCode }: CommandErrorArgs<ListAppsErrorCodes>) {\n super({ message, errorCode, tag: \"ListAppsCommandError\" });\n }\n}\n\nexport class ListAppsCommand\n implements Command<ListAppsResponse, ListAppsArgs, ListAppsErrorCodes>\n{\n readonly args: ListAppsArgs;\n\n constructor(args = { isContinue: false }) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const listAppApduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: this.args.isContinue ? 0xdf : 0xde,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(listAppApduArgs).build();\n }\n\n parseResponse(apduResponse: ApduResponse): ListAppsCommandResult {\n const res = [];\n const parser = new ApduParser(apduResponse);\n\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, LIST_APP_ERRORS)) {\n return CommandResultFactory({\n error: new ListAppsCommandError({\n ...LIST_APP_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n if (apduResponse.data.length <= 0) {\n return CommandResultFactory({\n data: [],\n });\n }\n\n // [NOTE] version of parsing, not used for now, skipping 1 byte\n parser.extract8BitUInt()!;\n\n while (parser.getUnparsedRemainingLength() > 0) {\n const appEntryLength = parser.extract8BitUInt()!;\n const appSizeInBlocks = parser.extract16BitUInt()!;\n parser.extract16BitUInt()!; // Skip 2 bytes (flags, missing in doc for now)\n const appCodeHash = parser.encodeToHexaString(\n parser.extractFieldByLength(0x20), // 32 bytes\n );\n const appFullHash = parser.encodeToHexaString(\n parser.extractFieldByLength(0x20), // 32 bytes\n );\n\n const appName = parser.encodeToString(parser.extractFieldLVEncoded());\n\n res.push({\n appEntryLength,\n appSizeInBlocks,\n appCodeHash,\n appFullHash,\n appName,\n });\n }\n\n return CommandResultFactory({\n data: res,\n });\n }\n}\n", "import { Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { Command } from \"@api/command/Command\";\nimport {\n CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type OpenAppArgs = {\n readonly appName: string;\n};\n\nexport type OpenAppErrorCodes = \"670a\" | \"6807\";\n\nconst OPEN_APP_ERRORS: CommandErrors<OpenAppErrorCodes> = {\n \"670a\": { message: \"No app name provided\" },\n \"6807\": { message: \"Unknown application name\" },\n};\n\nexport class OpenAppCommandError extends DeviceExchangeError<OpenAppErrorCodes> {\n constructor({ message, errorCode }: CommandErrorArgs<OpenAppErrorCodes>) {\n super({ tag: \"OpenAppCommandError\", message, errorCode });\n }\n}\n\nexport type OpenAppCommandResult = CommandResult<void, OpenAppErrorCodes>;\n\n/**\n * The command to open an application on the device.\n */\nexport class OpenAppCommand\n implements Command<void, OpenAppArgs, OpenAppErrorCodes>\n{\n readonly args: OpenAppArgs;\n\n readonly triggersDisconnection = true;\n\n constructor(args: OpenAppArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const openAppApduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0xd8,\n p1: 0x00,\n p2: 0x00,\n };\n return new ApduBuilder(openAppApduArgs)\n .addAsciiStringToData(this.args.appName)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<void, OpenAppErrorCodes> {\n if (CommandUtils.isSuccessResponse(apduResponse)) {\n return CommandResultFactory({\n data: undefined,\n });\n }\n const parser = new ApduParser(apduResponse);\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, OPEN_APP_ERRORS)) {\n return CommandResultFactory({\n error: new OpenAppCommandError({\n ...OPEN_APP_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n}\n", "export enum DeviceStatus {\n LOCKED = \"LOCKED\",\n BUSY = \"BUSY\",\n CONNECTED = \"CONNECTED\",\n NOT_CONNECTED = \"NOT CONNECTED\",\n}\n", "export type ApduResponseConstructorArgs = {\n readonly statusCode: Uint8Array;\n readonly data: Uint8Array;\n};\n\nexport class ApduResponse {\n public readonly statusCode: Uint8Array;\n public readonly data: Uint8Array;\n\n constructor({ statusCode, data }: ApduResponseConstructorArgs) {\n this.statusCode = statusCode;\n this.data = data;\n }\n}\n", "export const commandTypes = {\n SendCommandUseCase: Symbol.for(\"SendCommandUseCase\"),\n};\n", "export const configTypes = {\n LocalConfigDataSource: Symbol.for(\"LocalConfigDataSource\"),\n RemoteConfigDataSource: Symbol.for(\"RemoteConfigDataSource\"),\n ConfigService: Symbol.for(\"ConfigService\"),\n GetSdkVersionUseCase: Symbol.for(\"GetSdkVersionUseCase\"),\n};\n", "export const deviceSessionTypes = {\n ApduSenderServiceFactory: Symbol.for(\"ApduSenderServiceFactory\"),\n ApduReceiverServiceFactory: Symbol.for(\"ApduReceiverServiceFactory\"),\n DeviceSessionService: Symbol.for(\"DeviceSessionService\"),\n GetDeviceSessionStateUseCase: Symbol.for(\"GetDeviceSessionStateUseCase\"),\n CloseSessionsUseCase: Symbol.for(\"CloseSessionsUseCase\"),\n ListDeviceSessionsUseCase: Symbol.for(\"ListDeviceSessionsUseCase\"),\n};\n", "export const discoveryTypes = {\n StartDiscoveringUseCase: Symbol.for(\"StartDiscoveringUseCase\"),\n StopDiscoveringUseCase: Symbol.for(\"StopDiscoveringUseCase\"),\n ConnectUseCase: Symbol.for(\"ConnectUseCase\"),\n DisconnectUseCase: Symbol.for(\"DisconnectUseCase\"),\n GetConnectedDeviceUseCase: Symbol.for(\"GetConnectedDeviceUseCase\"),\n};\n", "export const sendTypes = {\n SendApduUseCase: Symbol.for(\"SendApduUseCase\"),\n};\n", "export var NAMED_TAG = 'named';\r\nexport var NAME_TAG = 'name';\r\nexport var UNMANAGED_TAG = 'unmanaged';\r\nexport var OPTIONAL_TAG = 'optional';\r\nexport var INJECT_TAG = 'inject';\r\nexport var MULTI_INJECT_TAG = 'multi_inject';\r\nexport var TAGGED = 'inversify:tagged';\r\nexport var TAGGED_PROP = 'inversify:tagged_props';\r\nexport var PARAM_TYPES = 'inversify:paramtypes';\r\nexport var DESIGN_PARAM_TYPES = 'design:paramtypes';\r\nexport var POST_CONSTRUCT = 'post_construct';\r\nexport var PRE_DESTROY = 'pre_destroy';\r\nfunction getNonCustomTagKeys() {\r\n return [\r\n INJECT_TAG,\r\n MULTI_INJECT_TAG,\r\n NAME_TAG,\r\n UNMANAGED_TAG,\r\n NAMED_TAG,\r\n OPTIONAL_TAG,\r\n ];\r\n}\r\nexport var NON_CUSTOM_TAG_KEYS = getNonCustomTagKeys();\r\n", "var BindingScopeEnum = {\r\n Request: 'Request',\r\n Singleton: 'Singleton',\r\n Transient: 'Transient'\r\n};\r\nvar BindingTypeEnum = {\r\n ConstantValue: 'ConstantValue',\r\n Constructor: 'Constructor',\r\n DynamicValue: 'DynamicValue',\r\n Factory: 'Factory',\r\n Function: 'Function',\r\n Instance: 'Instance',\r\n Invalid: 'Invalid',\r\n Provider: 'Provider'\r\n};\r\nvar TargetTypeEnum = {\r\n ClassProperty: 'ClassProperty',\r\n ConstructorArgument: 'ConstructorArgument',\r\n Variable: 'Variable'\r\n};\r\nexport { BindingScopeEnum, BindingTypeEnum, TargetTypeEnum };\r\n", "var idCounter = 0;\r\nfunction id() {\r\n return idCounter++;\r\n}\r\nexport { id };\r\n", "import { BindingScopeEnum, BindingTypeEnum } from '../constants/literal_types';\r\nimport { id } from '../utils/id';\r\nvar Binding = (function () {\r\n function Binding(serviceIdentifier, scope) {\r\n this.id = id();\r\n this.activated = false;\r\n this.serviceIdentifier = serviceIdentifier;\r\n this.scope = scope;\r\n this.type = BindingTypeEnum.Invalid;\r\n this.constraint = function (request) { return true; };\r\n this.implementationType = null;\r\n this.cache = null;\r\n this.factory = null;\r\n this.provider = null;\r\n this.onActivation = null;\r\n this.onDeactivation = null;\r\n this.dynamicValue = null;\r\n }\r\n Binding.prototype.clone = function () {\r\n var clone = new Binding(this.serviceIdentifier, this.scope);\r\n clone.activated = (clone.scope === BindingScopeEnum.Singleton) ? this.activated : false;\r\n clone.implementationType = this.implementationType;\r\n clone.dynamicValue = this.dynamicValue;\r\n clone.scope = this.scope;\r\n clone.type = this.type;\r\n clone.factory = this.factory;\r\n clone.provider = this.provider;\r\n clone.constraint = this.constraint;\r\n clone.onActivation = this.onActivation;\r\n clone.onDeactivation = this.onDeactivation;\r\n clone.cache = this.cache;\r\n return clone;\r\n };\r\n return Binding;\r\n}());\r\nexport { Binding };\r\n", "export var DUPLICATED_INJECTABLE_DECORATOR = 'Cannot apply @injectable decorator multiple times.';\r\nexport var DUPLICATED_METADATA = 'Metadata key was used more than once in a parameter:';\r\nexport var NULL_ARGUMENT = 'NULL argument';\r\nexport var KEY_NOT_FOUND = 'Key Not Found';\r\nexport var AMBIGUOUS_MATCH = 'Ambiguous match found for serviceIdentifier:';\r\nexport var CANNOT_UNBIND = 'Could not unbind serviceIdentifier:';\r\nexport var NOT_REGISTERED = 'No matching bindings found for serviceIdentifier:';\r\nexport var MISSING_INJECTABLE_ANNOTATION = 'Missing required @injectable annotation in:';\r\nexport var MISSING_INJECT_ANNOTATION = 'Missing required @inject or @multiInject annotation in:';\r\nexport var UNDEFINED_INJECT_ANNOTATION = function (name) {\r\n return \"@inject called with undefined this could mean that the class \" + name + \" has \" +\r\n 'a circular dependency problem. You can use a LazyServiceIdentifier to ' +\r\n 'overcome this limitation.';\r\n};\r\nexport var CIRCULAR_DEPENDENCY = 'Circular dependency found:';\r\nexport var NOT_IMPLEMENTED = 'Sorry, this feature is not fully implemented yet.';\r\nexport var INVALID_BINDING_TYPE = 'Invalid binding type:';\r\nexport var NO_MORE_SNAPSHOTS_AVAILABLE = 'No snapshot available to restore.';\r\nexport var INVALID_MIDDLEWARE_RETURN = 'Invalid return type in middleware. Middleware must return!';\r\nexport var INVALID_FUNCTION_BINDING = 'Value provided to function binding must be a function!';\r\nexport var LAZY_IN_SYNC = function (key) { return \"You are attempting to construct '\" + key + \"' in a synchronous way\\n but it has asynchronous dependencies.\"; };\r\nexport var INVALID_TO_SELF_VALUE = 'The toSelf function can only be applied when a constructor is ' +\r\n 'used as service identifier';\r\nexport var INVALID_DECORATOR_OPERATION = 'The @inject @multiInject @tagged and @named decorators ' +\r\n 'must be applied to the parameters of a class constructor or a class property.';\r\nexport var ARGUMENTS_LENGTH_MISMATCH = function () {\r\n var values = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n values[_i] = arguments[_i];\r\n }\r\n return 'The number of constructor arguments in the derived class ' +\r\n (values[0] + \" must be >= than the number of constructor arguments of its base class.\");\r\n};\r\nexport var CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = 'Invalid Container constructor argument. Container options ' +\r\n 'must be an object.';\r\nexport var CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = 'Invalid Container option. Default scope must ' +\r\n 'be a string (\"singleton\" or \"transient\").';\r\nexport var CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = 'Invalid Container option. Auto bind injectable must ' +\r\n 'be a boolean';\r\nexport var CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = 'Invalid Container option. Skip base check must ' +\r\n 'be a boolean';\r\nexport var MULTIPLE_PRE_DESTROY_METHODS = 'Cannot apply @preDestroy decorator multiple times in the same class';\r\nexport var MULTIPLE_POST_CONSTRUCT_METHODS = 'Cannot apply @postConstruct decorator multiple times in the same class';\r\nexport var ASYNC_UNBIND_REQUIRED = 'Attempting to unbind dependency with asynchronous destruction (@preDestroy or onDeactivation)';\r\nexport var POST_CONSTRUCT_ERROR = function (clazz, errorMessage) { return \"@postConstruct error in class \" + clazz + \": \" + errorMessage; };\r\nexport var PRE_DESTROY_ERROR = function (clazz, errorMessage) { return \"@preDestroy error in class \" + clazz + \": \" + errorMessage; };\r\nexport var ON_DEACTIVATION_ERROR = function (clazz, errorMessage) { return \"onDeactivation() error in class \" + clazz + \": \" + errorMessage; };\r\nexport var CIRCULAR_DEPENDENCY_IN_FACTORY = function (factoryType, serviceIdentifier) {\r\n return \"It looks like there is a circular dependency in one of the '\" + factoryType + \"' bindings. Please investigate bindings with \" +\r\n (\"service identifier '\" + serviceIdentifier + \"'.\");\r\n};\r\nexport var STACK_OVERFLOW = 'Maximum call stack size exceeded';\r\n", "import * as METADATA_KEY from '../constants/metadata_keys';\r\nvar MetadataReader = (function () {\r\n function MetadataReader() {\r\n }\r\n MetadataReader.prototype.getConstructorMetadata = function (constructorFunc) {\r\n var compilerGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, constructorFunc);\r\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc);\r\n return {\r\n compilerGeneratedMetadata: compilerGeneratedMetadata,\r\n userGeneratedMetadata: userGeneratedMetadata || {}\r\n };\r\n };\r\n MetadataReader.prototype.getPropertiesMetadata = function (constructorFunc) {\r\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc) || [];\r\n return userGeneratedMetadata;\r\n };\r\n return MetadataReader;\r\n}());\r\nexport { MetadataReader };\r\n", "export var BindingCount = {\r\n MultipleBindingsAvailable: 2,\r\n NoBindingsAvailable: 0,\r\n OnlyOneBindingAvailable: 1\r\n};\r\n", "import * as ERROR_MSGS from '../constants/error_msgs';\r\nexport function isStackOverflowExeption(error) {\r\n return (error instanceof RangeError ||\r\n error.message === ERROR_MSGS.STACK_OVERFLOW);\r\n}\r\nexport var tryAndThrowErrorIfStackOverflow = function (fn, errorCallback) {\r\n try {\r\n return fn();\r\n }\r\n catch (error) {\r\n if (isStackOverflowExeption(error)) {\r\n error = errorCallback();\r\n }\r\n throw error;\r\n }\r\n};\r\n", "import * as ERROR_MSGS from '../constants/error_msgs';\r\nfunction getServiceIdentifierAsString(serviceIdentifier) {\r\n if (typeof serviceIdentifier === 'function') {\r\n var _serviceIdentifier = serviceIdentifier;\r\n return _serviceIdentifier.name;\r\n }\r\n else if (typeof serviceIdentifier === 'symbol') {\r\n return serviceIdentifier.toString();\r\n }\r\n else {\r\n var _serviceIdentifier = serviceIdentifier;\r\n return _serviceIdentifier;\r\n }\r\n}\r\nfunction listRegisteredBindingsForServiceIdentifier(container, serviceIdentifier, getBindings) {\r\n var registeredBindingsList = '';\r\n var registeredBindings = getBindings(container, serviceIdentifier);\r\n if (registeredBindings.length !== 0) {\r\n registeredBindingsList = '\\nRegistered bindings:';\r\n registeredBindings.forEach(function (binding) {\r\n var name = 'Object';\r\n if (binding.implementationType !== null) {\r\n name = getFunctionName(binding.implementationType);\r\n }\r\n registeredBindingsList = registeredBindingsList + \"\\n \" + name;\r\n if (binding.constraint.metaData) {\r\n registeredBindingsList = registeredBindingsList + \" - \" + binding.constraint.metaData;\r\n }\r\n });\r\n }\r\n return registeredBindingsList;\r\n}\r\nfunction alreadyDependencyChain(request, serviceIdentifier) {\r\n if (request.parentRequest === null) {\r\n return false;\r\n }\r\n else if (request.parentRequest.serviceIdentifier === serviceIdentifier) {\r\n return true;\r\n }\r\n else {\r\n return alreadyDependencyChain(request.parentRequest, serviceIdentifier);\r\n }\r\n}\r\nfunction dependencyChainToString(request) {\r\n function _createStringArr(req, result) {\r\n if (result === void 0) { result = []; }\r\n var serviceIdentifier = getServiceIdentifierAsString(req.serviceIdentifier);\r\n result.push(serviceIdentifier);\r\n if (req.parentRequest !== null) {\r\n return _createStringArr(req.parentRequest, result);\r\n }\r\n return result;\r\n }\r\n var stringArr = _createStringArr(request);\r\n return stringArr.reverse().join(' --> ');\r\n}\r\nfunction circularDependencyToException(request) {\r\n request.childRequests.forEach(function (childRequest) {\r\n if (alreadyDependencyChain(childRequest, childRequest.serviceIdentifier)) {\r\n var services = dependencyChainToString(childRequest);\r\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY + \" \" + services);\r\n }\r\n else {\r\n circularDependencyToException(childRequest);\r\n }\r\n });\r\n}\r\nfunction listMetadataForTarget(serviceIdentifierString, target) {\r\n if (target.isTagged() || target.isNamed()) {\r\n var m_1 = '';\r\n var namedTag = target.getNamedTag();\r\n var otherTags = target.getCustomTags();\r\n if (namedTag !== null) {\r\n m_1 += namedTag.toString() + '\\n';\r\n }\r\n if (otherTags !== null) {\r\n otherTags.forEach(function (tag) {\r\n m_1 += tag.toString() + '\\n';\r\n });\r\n }\r\n return \" \" + serviceIdentifierString + \"\\n \" + serviceIdentifierString + \" - \" + m_1;\r\n }\r\n else {\r\n return \" \" + serviceIdentifierString;\r\n }\r\n}\r\nfunction getFunctionName(func) {\r\n if (func.name) {\r\n return func.name;\r\n }\r\n else {\r\n var name_1 = func.toString();\r\n var match = name_1.match(/^function\\s*([^\\s(]+)/);\r\n return match ? match[1] : \"Anonymous function: \" + name_1;\r\n }\r\n}\r\nfunction getSymbolDescription(symbol) {\r\n return symbol.toString().slice(7, -1);\r\n}\r\nexport { getFunctionName, getServiceIdentifierAsString, listRegisteredBindingsForServiceIdentifier, listMetadataForTarget, circularDependencyToException, getSymbolDescription };\r\n", "import { id } from '../utils/id';\r\nvar Context = (function () {\r\n function Context(container) {\r\n this.id = id();\r\n this.container = container;\r\n }\r\n Context.prototype.addPlan = function (plan) {\r\n this.plan = plan;\r\n };\r\n Context.prototype.setCurrentRequest = function (currentRequest) {\r\n this.currentRequest = currentRequest;\r\n };\r\n return Context;\r\n}());\r\nexport { Context };\r\n", "import * as METADATA_KEY from '../constants/metadata_keys';\r\nvar Metadata = (function () {\r\n function Metadata(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n }\r\n Metadata.prototype.toString = function () {\r\n if (this.key === METADATA_KEY.NAMED_TAG) {\r\n return \"named: \" + String(this.value).toString() + \" \";\r\n }\r\n else {\r\n return \"tagged: { key:\" + this.key.toString() + \", value: \" + String(this.value) + \" }\";\r\n }\r\n };\r\n return Metadata;\r\n}());\r\nexport { Metadata };\r\n", "var Plan = (function () {\r\n function Plan(parentContext, rootRequest) {\r\n this.parentContext = parentContext;\r\n this.rootRequest = rootRequest;\r\n }\r\n return Plan;\r\n}());\r\nexport { Plan };\r\n", "var LazyServiceIdentifier = (function () {\r\n function LazyServiceIdentifier(cb) {\r\n this._cb = cb;\r\n }\r\n LazyServiceIdentifier.prototype.unwrap = function () {\r\n return this._cb();\r\n };\r\n return LazyServiceIdentifier;\r\n}());\r\nexport { LazyServiceIdentifier };\r\n", "var QueryableString = (function () {\r\n function QueryableString(str) {\r\n this.str = str;\r\n }\r\n QueryableString.prototype.startsWith = function (searchString) {\r\n return this.str.indexOf(searchString) === 0;\r\n };\r\n QueryableString.prototype.endsWith = function (searchString) {\r\n var reverseString = '';\r\n var reverseSearchString = searchString.split('').reverse().join('');\r\n reverseString = this.str.split('').reverse().join('');\r\n return this.startsWith.call({ str: reverseString }, reverseSearchString);\r\n };\r\n QueryableString.prototype.contains = function (searchString) {\r\n return (this.str.indexOf(searchString) !== -1);\r\n };\r\n QueryableString.prototype.equals = function (compareString) {\r\n return this.str === compareString;\r\n };\r\n QueryableString.prototype.value = function () {\r\n return this.str;\r\n };\r\n return QueryableString;\r\n}());\r\nexport { QueryableString };\r\n", "import * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { id } from '../utils/id';\r\nimport { getSymbolDescription } from '../utils/serialization';\r\nimport { Metadata } from './metadata';\r\nimport { QueryableString } from './queryable_string';\r\nvar Target = (function () {\r\n function Target(type, identifier, serviceIdentifier, namedOrTagged) {\r\n this.id = id();\r\n this.type = type;\r\n this.serviceIdentifier = serviceIdentifier;\r\n var queryableName = typeof identifier === 'symbol' ? getSymbolDescription(identifier) : identifier;\r\n this.name = new QueryableString(queryableName || '');\r\n this.identifier = identifier;\r\n this.metadata = new Array();\r\n var metadataItem = null;\r\n if (typeof namedOrTagged === 'string') {\r\n metadataItem = new Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);\r\n }\r\n else if (namedOrTagged instanceof Metadata) {\r\n metadataItem = namedOrTagged;\r\n }\r\n if (metadataItem !== null) {\r\n this.metadata.push(metadataItem);\r\n }\r\n }\r\n Target.prototype.hasTag = function (key) {\r\n for (var _i = 0, _a = this.metadata; _i < _a.length; _i++) {\r\n var m = _a[_i];\r\n if (m.key === key) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Target.prototype.isArray = function () {\r\n return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG);\r\n };\r\n Target.prototype.matchesArray = function (name) {\r\n return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name);\r\n };\r\n Target.prototype.isNamed = function () {\r\n return this.hasTag(METADATA_KEY.NAMED_TAG);\r\n };\r\n Target.prototype.isTagged = function () {\r\n return this.metadata.some(function (metadata) { return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; }); });\r\n };\r\n Target.prototype.isOptional = function () {\r\n return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);\r\n };\r\n Target.prototype.getNamedTag = function () {\r\n if (this.isNamed()) {\r\n return this.metadata.filter(function (m) { return m.key === METADATA_KEY.NAMED_TAG; })[0];\r\n }\r\n return null;\r\n };\r\n Target.prototype.getCustomTags = function () {\r\n if (this.isTagged()) {\r\n return this.metadata.filter(function (metadata) { return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; }); });\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n Target.prototype.matchesNamedTag = function (name) {\r\n return this.matchesTag(METADATA_KEY.NAMED_TAG)(name);\r\n };\r\n Target.prototype.matchesTag = function (key) {\r\n var _this = this;\r\n return function (value) {\r\n for (var _i = 0, _a = _this.metadata; _i < _a.length; _i++) {\r\n var m = _a[_i];\r\n if (m.key === key && m.value === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n return Target;\r\n}());\r\nexport { Target };\r\n", "var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nimport { LazyServiceIdentifier } from '../annotation/lazy_service_identifier';\r\nimport * as ERROR_MSGS from '../constants/error_msgs';\r\nimport { TargetTypeEnum } from '../constants/literal_types';\r\nimport * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { getFunctionName } from '../utils/serialization';\r\nimport { Target } from './target';\r\nfunction getDependencies(metadataReader, func) {\r\n var constructorName = getFunctionName(func);\r\n return getTargets(metadataReader, constructorName, func, false);\r\n}\r\nfunction getTargets(metadataReader, constructorName, func, isBaseClass) {\r\n var metadata = metadataReader.getConstructorMetadata(func);\r\n var serviceIdentifiers = metadata.compilerGeneratedMetadata;\r\n if (serviceIdentifiers === undefined) {\r\n var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + \" \" + constructorName + \".\";\r\n throw new Error(msg);\r\n }\r\n var constructorArgsMetadata = metadata.userGeneratedMetadata;\r\n var keys = Object.keys(constructorArgsMetadata);\r\n var hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);\r\n var hasOptionalParameters = keys.length > func.length;\r\n var iterations = (hasUserDeclaredUnknownInjections || hasOptionalParameters) ? keys.length : func.length;\r\n var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);\r\n var propertyTargets = getClassPropsAsTargets(metadataReader, func, constructorName);\r\n var targets = __spreadArray(__spreadArray([], constructorTargets, true), propertyTargets, true);\r\n return targets;\r\n}\r\nfunction getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {\r\n var targetMetadata = constructorArgsMetadata[index.toString()] || [];\r\n var metadata = formatTargetMetadata(targetMetadata);\r\n var isManaged = metadata.unmanaged !== true;\r\n var serviceIdentifier = serviceIdentifiers[index];\r\n var injectIdentifier = metadata.inject || metadata.multiInject;\r\n serviceIdentifier = (injectIdentifier ? injectIdentifier : serviceIdentifier);\r\n if (serviceIdentifier instanceof LazyServiceIdentifier) {\r\n serviceIdentifier = serviceIdentifier.unwrap();\r\n }\r\n if (isManaged) {\r\n var isObject = serviceIdentifier === Object;\r\n var isFunction = serviceIdentifier === Function;\r\n var isUndefined = serviceIdentifier === undefined;\r\n var isUnknownType = isObject || isFunction || isUndefined;\r\n if (!isBaseClass && isUnknownType) {\r\n var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + \" argument \" + index + \" in class \" + constructorName + \".\";\r\n throw new Error(msg);\r\n }\r\n var target = new Target(TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);\r\n target.metadata = targetMetadata;\r\n return target;\r\n }\r\n return null;\r\n}\r\nfunction getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {\r\n var targets = [];\r\n for (var i = 0; i < iterations; i++) {\r\n var index = i;\r\n var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);\r\n if (target !== null) {\r\n targets.push(target);\r\n }\r\n }\r\n return targets;\r\n}\r\nfunction _getServiceIdentifierForProperty(inject, multiInject, propertyName, className) {\r\n var serviceIdentifier = (inject || multiInject);\r\n if (serviceIdentifier === undefined) {\r\n var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + \" for property \" + String(propertyName) + \" in class \" + className + \".\";\r\n throw new Error(msg);\r\n }\r\n return serviceIdentifier;\r\n}\r\nfunction getClassPropsAsTargets(metadataReader, constructorFunc, constructorName) {\r\n var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);\r\n var targets = [];\r\n var symbolKeys = Object.getOwnPropertySymbols(classPropsMetadata);\r\n var stringKeys = Object.keys(classPropsMetadata);\r\n var keys = stringKeys.concat(symbolKeys);\r\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\r\n var key = keys_1[_i];\r\n var targetMetadata = classPropsMetadata[key];\r\n var metadata = formatTargetMetadata(targetMetadata);\r\n var identifier = metadata.targetName || key;\r\n var serviceIdentifier = _getServiceIdentifierForProperty(metadata.inject, metadata.multiInject, key, constructorName);\r\n var target = new Target(TargetTypeEnum.ClassProperty, identifier, serviceIdentifier);\r\n target.metadata = targetMetadata;\r\n targets.push(target);\r\n }\r\n var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;\r\n if (baseConstructor !== Object) {\r\n var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor, constructorName);\r\n targets = __spreadArray(__spreadArray([], targets, true), baseTargets, true);\r\n }\r\n return targets;\r\n}\r\nfunction getBaseClassDependencyCount(metadataReader, func) {\r\n var baseConstructor = Object.getPrototypeOf(func.prototype).constructor;\r\n if (baseConstructor !== Object) {\r\n var baseConstructorName = getFunctionName(baseConstructor);\r\n var targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true);\r\n var metadata = targets.map(function (t) { return t.metadata.filter(function (m) { return m.key === METADATA_KEY.UNMANAGED_TAG; }); });\r\n var unmanagedCount = [].concat.apply([], metadata).length;\r\n var dependencyCount = targets.length - unmanagedCount;\r\n if (dependencyCount > 0) {\r\n return dependencyCount;\r\n }\r\n else {\r\n return getBaseClassDependencyCount(metadataReader, baseConstructor);\r\n }\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nfunction formatTargetMetadata(targetMetadata) {\r\n var targetMetadataMap = {};\r\n targetMetadata.forEach(function (m) {\r\n targetMetadataMap[m.key.toString()] = m.value;\r\n });\r\n return {\r\n inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],\r\n multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],\r\n targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],\r\n unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]\r\n };\r\n}\r\nexport { getDependencies, getBaseClassDependencyCount, getFunctionName };\r\n", "import { id } from '../utils/id';\r\nvar Request = (function () {\r\n function Request(serviceIdentifier, parentContext, parentRequest, bindings, target) {\r\n this.id = id();\r\n this.serviceIdentifier = serviceIdentifier;\r\n this.parentContext = parentContext;\r\n this.parentRequest = parentRequest;\r\n this.target = target;\r\n this.childRequests = [];\r\n this.bindings = (Array.isArray(bindings) ? bindings : [bindings]);\r\n this.requestScope = parentRequest === null\r\n ? new Map()\r\n : null;\r\n }\r\n Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) {\r\n var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);\r\n this.childRequests.push(child);\r\n return child;\r\n };\r\n return Request;\r\n}());\r\nexport { Request };\r\n", "import { BindingCount } from '../bindings/binding_count';\r\nimport * as ERROR_MSGS from '../constants/error_msgs';\r\nimport { BindingTypeEnum, TargetTypeEnum } from '../constants/literal_types';\r\nimport * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { isStackOverflowExeption } from '../utils/exceptions';\r\nimport { circularDependencyToException, getServiceIdentifierAsString, listMetadataForTarget, listRegisteredBindingsForServiceIdentifier } from '../utils/serialization';\r\nimport { Context } from './context';\r\nimport { Metadata } from './metadata';\r\nimport { Plan } from './plan';\r\nimport { getBaseClassDependencyCount, getDependencies, getFunctionName } from './reflection_utils';\r\nimport { Request } from './request';\r\nimport { Target } from './target';\r\nfunction getBindingDictionary(cntnr) {\r\n return cntnr._bindingDictionary;\r\n}\r\nfunction _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {\r\n var metadataKey = isMultiInject ? METADATA_KEY.MULTI_INJECT_TAG : METADATA_KEY.INJECT_TAG;\r\n var injectMetadata = new Metadata(metadataKey, serviceIdentifier);\r\n var target = new Target(targetType, name, serviceIdentifier, injectMetadata);\r\n if (key !== undefined) {\r\n var tagMetadata = new Metadata(key, value);\r\n target.metadata.push(tagMetadata);\r\n }\r\n return target;\r\n}\r\nfunction _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {\r\n var bindings = getBindings(context.container, target.serviceIdentifier);\r\n var activeBindings = [];\r\n if (bindings.length === BindingCount.NoBindingsAvailable &&\r\n context.container.options.autoBindInjectable &&\r\n typeof target.serviceIdentifier === 'function' &&\r\n metadataReader.getConstructorMetadata(target.serviceIdentifier).compilerGeneratedMetadata) {\r\n context.container.bind(target.serviceIdentifier).toSelf();\r\n bindings = getBindings(context.container, target.serviceIdentifier);\r\n }\r\n if (!avoidConstraints) {\r\n activeBindings = bindings.filter(function (binding) {\r\n var request = new Request(binding.serviceIdentifier, context, parentRequest, binding, target);\r\n return binding.constraint(request);\r\n });\r\n }\r\n else {\r\n activeBindings = bindings;\r\n }\r\n _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);\r\n return activeBindings;\r\n}\r\nfunction _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {\r\n switch (bindings.length) {\r\n case BindingCount.NoBindingsAvailable:\r\n if (target.isOptional()) {\r\n return bindings;\r\n }\r\n else {\r\n var serviceIdentifierString = getServiceIdentifierAsString(serviceIdentifier);\r\n var msg = ERROR_MSGS.NOT_REGISTERED;\r\n msg += listMetadataForTarget(serviceIdentifierString, target);\r\n msg += listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\r\n throw new Error(msg);\r\n }\r\n case BindingCount.OnlyOneBindingAvailable:\r\n return bindings;\r\n case BindingCount.MultipleBindingsAvailable:\r\n default:\r\n if (!target.isArray()) {\r\n var serviceIdentifierString = getServiceIdentifierAsString(serviceIdentifier);\r\n var msg = ERROR_MSGS.AMBIGUOUS_MATCH + \" \" + serviceIdentifierString;\r\n msg += listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\r\n throw new Error(msg);\r\n }\r\n else {\r\n return bindings;\r\n }\r\n }\r\n}\r\nfunction _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {\r\n var activeBindings;\r\n var childRequest;\r\n if (parentRequest === null) {\r\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);\r\n childRequest = new Request(serviceIdentifier, context, null, activeBindings, target);\r\n var thePlan = new Plan(context, childRequest);\r\n context.addPlan(thePlan);\r\n }\r\n else {\r\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);\r\n childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);\r\n }\r\n activeBindings.forEach(function (binding) {\r\n var subChildRequest = null;\r\n if (target.isArray()) {\r\n subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);\r\n }\r\n else {\r\n if (binding.cache) {\r\n return;\r\n }\r\n subChildRequest = childRequest;\r\n }\r\n if (binding.type === BindingTypeEnum.Instance && binding.implementationType !== null) {\r\n var dependencies = getDependencies(metadataReader, binding.implementationType);\r\n if (!context.container.options.skipBaseClassChecks) {\r\n var baseClassDependencyCount = getBaseClassDependencyCount(metadataReader, binding.implementationType);\r\n if (dependencies.length < baseClassDependencyCount) {\r\n var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH(getFunctionName(binding.implementationType));\r\n throw new Error(error);\r\n }\r\n }\r\n dependencies.forEach(function (dependency) {\r\n _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);\r\n });\r\n }\r\n });\r\n}\r\nfunction getBindings(container, serviceIdentifier) {\r\n var bindings = [];\r\n var bindingDictionary = getBindingDictionary(container);\r\n if (bindingDictionary.hasKey(serviceIdentifier)) {\r\n bindings = bindingDictionary.get(serviceIdentifier);\r\n }\r\n else if (container.parent !== null) {\r\n bindings = getBindings(container.parent, serviceIdentifier);\r\n }\r\n return bindings;\r\n}\r\nfunction plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) {\r\n if (avoidConstraints === void 0) { avoidConstraints = false; }\r\n var context = new Context(container);\r\n var target = _createTarget(isMultiInject, targetType, serviceIdentifier, '', key, value);\r\n try {\r\n _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);\r\n return context;\r\n }\r\n catch (error) {\r\n if (isStackOverflowExeption(error)) {\r\n circularDependencyToException(context.plan.rootRequest);\r\n }\r\n throw error;\r\n }\r\n}\r\nfunction createMockRequest(container, serviceIdentifier, key, value) {\r\n var target = new Target(TargetTypeEnum.Variable, '', serviceIdentifier, new Metadata(key, value));\r\n var context = new Context(container);\r\n var request = new Request(serviceIdentifier, context, null, [], target);\r\n return request;\r\n}\r\nexport { plan, createMockRequest, getBindingDictionary };\r\n", "function isPromise(object) {\r\n var isObjectOrFunction = (typeof object === 'object' && object !== null) || typeof object === 'function';\r\n return isObjectOrFunction && typeof object.then === \"function\";\r\n}\r\nfunction isPromiseOrContainsPromise(object) {\r\n if (isPromise(object)) {\r\n return true;\r\n }\r\n return Array.isArray(object) && object.some(isPromise);\r\n}\r\nexport { isPromise, isPromiseOrContainsPromise };\r\n", "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { BindingScopeEnum } from '../constants/literal_types';\r\nimport { isPromise } from '../utils/async';\r\nexport var tryGetFromScope = function (requestScope, binding) {\r\n if ((binding.scope === BindingScopeEnum.Singleton) && binding.activated) {\r\n return binding.cache;\r\n }\r\n if (binding.scope === BindingScopeEnum.Request &&\r\n requestScope.has(binding.id)) {\r\n return requestScope.get(binding.id);\r\n }\r\n return null;\r\n};\r\nexport var saveToScope = function (requestScope, binding, result) {\r\n if (binding.scope === BindingScopeEnum.Singleton) {\r\n _saveToSingletonScope(binding, result);\r\n }\r\n if (binding.scope === BindingScopeEnum.Request) {\r\n _saveToRequestScope(requestScope, binding, result);\r\n }\r\n};\r\nvar _saveToRequestScope = function (requestScope, binding, result) {\r\n if (!requestScope.has(binding.id)) {\r\n requestScope.set(binding.id, result);\r\n }\r\n};\r\nvar _saveToSingletonScope = function (binding, result) {\r\n binding.cache = result;\r\n binding.activated = true;\r\n if (isPromise(result)) {\r\n void _saveAsyncResultToSingletonScope(binding, result);\r\n }\r\n};\r\nvar _saveAsyncResultToSingletonScope = function (binding, asyncResult) { return __awaiter(void 0, void 0, void 0, function () {\r\n var result, ex_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, asyncResult];\r\n case 1:\r\n result = _a.sent();\r\n binding.cache = result;\r\n return [3, 3];\r\n case 2:\r\n ex_1 = _a.sent();\r\n binding.cache = null;\r\n binding.activated = false;\r\n throw ex_1;\r\n case 3: return [2];\r\n }\r\n });\r\n}); };\r\n", "export var FactoryType;\r\n(function (FactoryType) {\r\n FactoryType[\"DynamicValue\"] = \"toDynamicValue\";\r\n FactoryType[\"Factory\"] = \"toFactory\";\r\n FactoryType[\"Provider\"] = \"toProvider\";\r\n})(FactoryType || (FactoryType = {}));\r\n", "import { getServiceIdentifierAsString } from '../utils/serialization';\r\nimport * as ERROR_MSGS from '../constants/error_msgs';\r\nimport { BindingTypeEnum } from '../constants/literal_types';\r\nimport { FactoryType } from './factory_type';\r\nexport var multiBindToService = function (container) {\r\n return function (service) {\r\n return function () {\r\n var types = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n types[_i] = arguments[_i];\r\n }\r\n return types.forEach(function (t) { return container.bind(t).toService(service); });\r\n };\r\n };\r\n};\r\nexport var ensureFullyBound = function (binding) {\r\n var boundValue = null;\r\n switch (binding.type) {\r\n case BindingTypeEnum.ConstantValue:\r\n case BindingTypeEnum.Function:\r\n boundValue = binding.cache;\r\n break;\r\n case BindingTypeEnum.Constructor:\r\n case BindingTypeEnum.Instance:\r\n boundValue = binding.implementationType;\r\n break;\r\n case BindingTypeEnum.DynamicValue:\r\n boundValue = binding.dynamicValue;\r\n break;\r\n case BindingTypeEnum.Provider:\r\n boundValue = binding.provider;\r\n break;\r\n case BindingTypeEnum.Factory:\r\n boundValue = binding.factory;\r\n break;\r\n }\r\n if (boundValue === null) {\r\n var serviceIdentifierAsString = getServiceIdentifierAsString(binding.serviceIdentifier);\r\n throw new Error(ERROR_MSGS.INVALID_BINDING_TYPE + \" \" + serviceIdentifierAsString);\r\n }\r\n};\r\nexport var getFactoryDetails = function (binding) {\r\n switch (binding.type) {\r\n case BindingTypeEnum.Factory:\r\n return { factory: binding.factory, factoryType: FactoryType.Factory };\r\n case BindingTypeEnum.Provider:\r\n return { factory: binding.provider, factoryType: FactoryType.Provider };\r\n case BindingTypeEnum.DynamicValue:\r\n return { factory: binding.dynamicValue, factoryType: FactoryType.DynamicValue };\r\n default:\r\n throw new Error(\"Unexpected factory type \" + binding.type);\r\n }\r\n};\r\n", "var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nimport { ON_DEACTIVATION_ERROR, POST_CONSTRUCT_ERROR, PRE_DESTROY_ERROR } from '../constants/error_msgs';\r\nimport { BindingScopeEnum, TargetTypeEnum } from '../constants/literal_types';\r\nimport * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { isPromise, isPromiseOrContainsPromise } from '../utils/async';\r\nfunction _resolveRequests(childRequests, resolveRequest) {\r\n return childRequests.reduce(function (resolvedRequests, childRequest) {\r\n var injection = resolveRequest(childRequest);\r\n var targetType = childRequest.target.type;\r\n if (targetType === TargetTypeEnum.ConstructorArgument) {\r\n resolvedRequests.constructorInjections.push(injection);\r\n }\r\n else {\r\n resolvedRequests.propertyRequests.push(childRequest);\r\n resolvedRequests.propertyInjections.push(injection);\r\n }\r\n if (!resolvedRequests.isAsync) {\r\n resolvedRequests.isAsync = isPromiseOrContainsPromise(injection);\r\n }\r\n return resolvedRequests;\r\n }, { constructorInjections: [], propertyInjections: [], propertyRequests: [], isAsync: false });\r\n}\r\nfunction _createInstance(constr, childRequests, resolveRequest) {\r\n var result;\r\n if (childRequests.length > 0) {\r\n var resolved = _resolveRequests(childRequests, resolveRequest);\r\n var createInstanceWithInjectionsArg = __assign(__assign({}, resolved), { constr: constr });\r\n if (resolved.isAsync) {\r\n result = createInstanceWithInjectionsAsync(createInstanceWithInjectionsArg);\r\n }\r\n else {\r\n result = createInstanceWithInjections(createInstanceWithInjectionsArg);\r\n }\r\n }\r\n else {\r\n result = new constr();\r\n }\r\n return result;\r\n}\r\nfunction createInstanceWithInjections(args) {\r\n var _a;\r\n var instance = new ((_a = args.constr).bind.apply(_a, __spreadArray([void 0], args.constructorInjections, false)))();\r\n args.propertyRequests.forEach(function (r, index) {\r\n var property = r.target.identifier;\r\n var injection = args.propertyInjections[index];\r\n if (!r.target.isOptional() || injection !== undefined) {\r\n instance[property] = injection;\r\n }\r\n });\r\n return instance;\r\n}\r\nfunction createInstanceWithInjectionsAsync(args) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var constructorInjections, propertyInjections;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, possiblyWaitInjections(args.constructorInjections)];\r\n case 1:\r\n constructorInjections = _a.sent();\r\n return [4, possiblyWaitInjections(args.propertyInjections)];\r\n case 2:\r\n propertyInjections = _a.sent();\r\n return [2, createInstanceWithInjections(__assign(__assign({}, args), { constructorInjections: constructorInjections, propertyInjections: propertyInjections }))];\r\n }\r\n });\r\n });\r\n}\r\nfunction possiblyWaitInjections(possiblePromiseinjections) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var injections, _i, possiblePromiseinjections_1, injection;\r\n return __generator(this, function (_a) {\r\n injections = [];\r\n for (_i = 0, possiblePromiseinjections_1 = possiblePromiseinjections; _i < possiblePromiseinjections_1.length; _i++) {\r\n injection = possiblePromiseinjections_1[_i];\r\n if (Array.isArray(injection)) {\r\n injections.push(Promise.all(injection));\r\n }\r\n else {\r\n injections.push(injection);\r\n }\r\n }\r\n return [2, Promise.all(injections)];\r\n });\r\n });\r\n}\r\nfunction _getInstanceAfterPostConstruct(constr, result) {\r\n var postConstructResult = _postConstruct(constr, result);\r\n if (isPromise(postConstructResult)) {\r\n return postConstructResult.then(function () { return result; });\r\n }\r\n else {\r\n return result;\r\n }\r\n}\r\nfunction _postConstruct(constr, instance) {\r\n var _a, _b;\r\n if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) {\r\n var data = Reflect.getMetadata(METADATA_KEY.POST_CONSTRUCT, constr);\r\n try {\r\n return (_b = (_a = instance)[data.value]) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n catch (e) {\r\n if (e instanceof Error) {\r\n throw new Error(POST_CONSTRUCT_ERROR(constr.name, e.message));\r\n }\r\n }\r\n }\r\n}\r\nfunction _validateInstanceResolution(binding, constr) {\r\n if (binding.scope !== BindingScopeEnum.Singleton) {\r\n _throwIfHandlingDeactivation(binding, constr);\r\n }\r\n}\r\nfunction _throwIfHandlingDeactivation(binding, constr) {\r\n var scopeErrorMessage = \"Class cannot be instantiated in \" + (binding.scope === BindingScopeEnum.Request ?\r\n 'request' :\r\n 'transient') + \" scope.\";\r\n if (typeof binding.onDeactivation === 'function') {\r\n throw new Error(ON_DEACTIVATION_ERROR(constr.name, scopeErrorMessage));\r\n }\r\n if (Reflect.hasMetadata(METADATA_KEY.PRE_DESTROY, constr)) {\r\n throw new Error(PRE_DESTROY_ERROR(constr.name, scopeErrorMessage));\r\n }\r\n}\r\nfunction resolveInstance(binding, constr, childRequests, resolveRequest) {\r\n _validateInstanceResolution(binding, constr);\r\n var result = _createInstance(constr, childRequests, resolveRequest);\r\n if (isPromise(result)) {\r\n return result.then(function (resolvedResult) { return _getInstanceAfterPostConstruct(constr, resolvedResult); });\r\n }\r\n else {\r\n return _getInstanceAfterPostConstruct(constr, result);\r\n }\r\n}\r\nexport { resolveInstance };\r\n", "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport * as ERROR_MSGS from '../constants/error_msgs';\r\nimport { BindingTypeEnum } from '../constants/literal_types';\r\nimport { getBindingDictionary } from '../planning/planner';\r\nimport { saveToScope, tryGetFromScope } from '../scope/scope';\r\nimport { isPromise } from '../utils/async';\r\nimport { getFactoryDetails, ensureFullyBound } from '../utils/binding_utils';\r\nimport { tryAndThrowErrorIfStackOverflow } from '../utils/exceptions';\r\nimport { resolveInstance } from './instantiation';\r\nvar _resolveRequest = function (requestScope) {\r\n return function (request) {\r\n request.parentContext.setCurrentRequest(request);\r\n var bindings = request.bindings;\r\n var childRequests = request.childRequests;\r\n var targetIsAnArray = request.target && request.target.isArray();\r\n var targetParentIsNotAnArray = !request.parentRequest ||\r\n !request.parentRequest.target ||\r\n !request.target ||\r\n !request.parentRequest.target.matchesArray(request.target.serviceIdentifier);\r\n if (targetIsAnArray && targetParentIsNotAnArray) {\r\n return childRequests.map(function (childRequest) {\r\n var _f = _resolveRequest(requestScope);\r\n return _f(childRequest);\r\n });\r\n }\r\n else {\r\n if (request.target.isOptional() && bindings.length === 0) {\r\n return undefined;\r\n }\r\n var binding = bindings[0];\r\n return _resolveBinding(requestScope, request, binding);\r\n }\r\n };\r\n};\r\nvar _resolveFactoryFromBinding = function (binding, context) {\r\n var factoryDetails = getFactoryDetails(binding);\r\n return tryAndThrowErrorIfStackOverflow(function () { return factoryDetails.factory.bind(binding)(context); }, function () { return new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryDetails.factoryType, context.currentRequest.serviceIdentifier.toString())); });\r\n};\r\nvar _getResolvedFromBinding = function (requestScope, request, binding) {\r\n var result;\r\n var childRequests = request.childRequests;\r\n ensureFullyBound(binding);\r\n switch (binding.type) {\r\n case BindingTypeEnum.ConstantValue:\r\n case BindingTypeEnum.Function:\r\n result = binding.cache;\r\n break;\r\n case BindingTypeEnum.Constructor:\r\n result = binding.implementationType;\r\n break;\r\n case BindingTypeEnum.Instance:\r\n result = resolveInstance(binding, binding.implementationType, childRequests, _resolveRequest(requestScope));\r\n break;\r\n default:\r\n result = _resolveFactoryFromBinding(binding, request.parentContext);\r\n }\r\n return result;\r\n};\r\nvar _resolveInScope = function (requestScope, binding, resolveFromBinding) {\r\n var result = tryGetFromScope(requestScope, binding);\r\n if (result !== null) {\r\n return result;\r\n }\r\n result = resolveFromBinding();\r\n saveToScope(requestScope, binding, result);\r\n return result;\r\n};\r\nvar _resolveBinding = function (requestScope, request, binding) {\r\n return _resolveInScope(requestScope, binding, function () {\r\n var result = _getResolvedFromBinding(requestScope, request, binding);\r\n if (isPromise(result)) {\r\n result = result.then(function (resolved) { return _onActivation(request, binding, resolved); });\r\n }\r\n else {\r\n result = _onActivation(request, binding, result);\r\n }\r\n return result;\r\n });\r\n};\r\nfunction _onActivation(request, binding, resolved) {\r\n var result = _bindingActivation(request.parentContext, binding, resolved);\r\n var containersIterator = _getContainersIterator(request.parentContext.container);\r\n var container;\r\n var containersIteratorResult = containersIterator.next();\r\n do {\r\n container = containersIteratorResult.value;\r\n var context_1 = request.parentContext;\r\n var serviceIdentifier = request.serviceIdentifier;\r\n var activationsIterator = _getContainerActivationsForService(container, serviceIdentifier);\r\n if (isPromise(result)) {\r\n result = _activateContainerAsync(activationsIterator, context_1, result);\r\n }\r\n else {\r\n result = _activateContainer(activationsIterator, context_1, result);\r\n }\r\n containersIteratorResult = containersIterator.next();\r\n } while (containersIteratorResult.done !== true && !getBindingDictionary(container).hasKey(request.serviceIdentifier));\r\n return result;\r\n}\r\nvar _bindingActivation = function (context, binding, previousResult) {\r\n var result;\r\n if (typeof binding.onActivation === 'function') {\r\n result = binding.onActivation(context, previousResult);\r\n }\r\n else {\r\n result = previousResult;\r\n }\r\n return result;\r\n};\r\nvar _activateContainer = function (activationsIterator, context, result) {\r\n var activation = activationsIterator.next();\r\n while (!activation.done) {\r\n result = activation.value(context, result);\r\n if (isPromise(result)) {\r\n return _activateContainerAsync(activationsIterator, context, result);\r\n }\r\n activation = activationsIterator.next();\r\n }\r\n return result;\r\n};\r\nvar _activateContainerAsync = function (activationsIterator, context, resultPromise) { return __awaiter(void 0, void 0, void 0, function () {\r\n var result, activation;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, resultPromise];\r\n case 1:\r\n result = _a.sent();\r\n activation = activationsIterator.next();\r\n _a.label = 2;\r\n case 2:\r\n if (!!activation.done) return [3, 4];\r\n return [4, activation.value(context, result)];\r\n case 3:\r\n result = _a.sent();\r\n activation = activationsIterator.next();\r\n return [3, 2];\r\n case 4: return [2, result];\r\n }\r\n });\r\n}); };\r\nvar _getContainerActivationsForService = function (container, serviceIdentifier) {\r\n var activations = container._activations;\r\n return activations.hasKey(serviceIdentifier) ? activations.get(serviceIdentifier).values() : [].values();\r\n};\r\nvar _getContainersIterator = function (container) {\r\n var containersStack = [container];\r\n var parent = container.parent;\r\n while (parent !== null) {\r\n containersStack.push(parent);\r\n parent = parent.parent;\r\n }\r\n var getNextContainer = function () {\r\n var nextContainer = containersStack.pop();\r\n if (nextContainer !== undefined) {\r\n return { done: false, value: nextContainer };\r\n }\r\n else {\r\n return { done: true, value: undefined };\r\n }\r\n };\r\n var containersIterator = {\r\n next: getNextContainer,\r\n };\r\n return containersIterator;\r\n};\r\nfunction resolve(context) {\r\n var _f = _resolveRequest(context.plan.rootRequest.requestScope);\r\n return _f(context.plan.rootRequest);\r\n}\r\nexport { resolve };\r\n", "import * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { Metadata } from '../planning/metadata';\r\nvar traverseAncerstors = function (request, constraint) {\r\n var parent = request.parentRequest;\r\n if (parent !== null) {\r\n return constraint(parent) ? true : traverseAncerstors(parent, constraint);\r\n }\r\n else {\r\n return false;\r\n }\r\n};\r\nvar taggedConstraint = function (key) { return function (value) {\r\n var constraint = function (request) {\r\n return request !== null && request.target !== null && request.target.matchesTag(key)(value);\r\n };\r\n constraint.metaData = new Metadata(key, value);\r\n return constraint;\r\n}; };\r\nvar namedConstraint = taggedConstraint(METADATA_KEY.NAMED_TAG);\r\nvar typeConstraint = function (type) { return function (request) {\r\n var binding = null;\r\n if (request !== null) {\r\n binding = request.bindings[0];\r\n if (typeof type === 'string') {\r\n var serviceIdentifier = binding.serviceIdentifier;\r\n return serviceIdentifier === type;\r\n }\r\n else {\r\n var constructor = request.bindings[0].implementationType;\r\n return type === constructor;\r\n }\r\n }\r\n return false;\r\n}; };\r\nexport { traverseAncerstors, taggedConstraint, namedConstraint, typeConstraint };\r\n", "import { BindingOnSyntax } from './binding_on_syntax';\r\nimport { namedConstraint, taggedConstraint, traverseAncerstors, typeConstraint } from './constraint_helpers';\r\nvar BindingWhenSyntax = (function () {\r\n function BindingWhenSyntax(binding) {\r\n this._binding = binding;\r\n }\r\n BindingWhenSyntax.prototype.when = function (constraint) {\r\n this._binding.constraint = constraint;\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenTargetNamed = function (name) {\r\n this._binding.constraint = namedConstraint(name);\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenTargetIsDefault = function () {\r\n this._binding.constraint = function (request) {\r\n if (request === null) {\r\n return false;\r\n }\r\n var targetIsDefault = (request.target !== null) &&\r\n (!request.target.isNamed()) &&\r\n (!request.target.isTagged());\r\n return targetIsDefault;\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {\r\n this._binding.constraint = taggedConstraint(tag)(value);\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && typeConstraint(parent)(request.parentRequest);\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenParentNamed = function (name) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && namedConstraint(name)(request.parentRequest);\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && taggedConstraint(tag)(value)(request.parentRequest);\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && traverseAncerstors(request, typeConstraint(ancestor));\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && !traverseAncerstors(request, typeConstraint(ancestor));\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && traverseAncerstors(request, namedConstraint(name));\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && !traverseAncerstors(request, namedConstraint(name));\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && traverseAncerstors(request, taggedConstraint(tag)(value));\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && !traverseAncerstors(request, taggedConstraint(tag)(value));\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && traverseAncerstors(request, constraint);\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) {\r\n this._binding.constraint = function (request) {\r\n return request !== null && !traverseAncerstors(request, constraint);\r\n };\r\n return new BindingOnSyntax(this._binding);\r\n };\r\n return BindingWhenSyntax;\r\n}());\r\nexport { BindingWhenSyntax };\r\n", "import { BindingWhenSyntax } from './binding_when_syntax';\r\nvar BindingOnSyntax = (function () {\r\n function BindingOnSyntax(binding) {\r\n this._binding = binding;\r\n }\r\n BindingOnSyntax.prototype.onActivation = function (handler) {\r\n this._binding.onActivation = handler;\r\n return new BindingWhenSyntax(this._binding);\r\n };\r\n BindingOnSyntax.prototype.onDeactivation = function (handler) {\r\n this._binding.onDeactivation = handler;\r\n return new BindingWhenSyntax(this._binding);\r\n };\r\n return BindingOnSyntax;\r\n}());\r\nexport { BindingOnSyntax };\r\n", "import { BindingOnSyntax } from './binding_on_syntax';\r\nimport { BindingWhenSyntax } from './binding_when_syntax';\r\nvar BindingWhenOnSyntax = (function () {\r\n function BindingWhenOnSyntax(binding) {\r\n this._binding = binding;\r\n this._bindingWhenSyntax = new BindingWhenSyntax(this._binding);\r\n this._bindingOnSyntax = new BindingOnSyntax(this._binding);\r\n }\r\n BindingWhenOnSyntax.prototype.when = function (constraint) {\r\n return this._bindingWhenSyntax.when(constraint);\r\n };\r\n BindingWhenOnSyntax.prototype.whenTargetNamed = function (name) {\r\n return this._bindingWhenSyntax.whenTargetNamed(name);\r\n };\r\n BindingWhenOnSyntax.prototype.whenTargetIsDefault = function () {\r\n return this._bindingWhenSyntax.whenTargetIsDefault();\r\n };\r\n BindingWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\r\n };\r\n BindingWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\r\n return this._bindingWhenSyntax.whenInjectedInto(parent);\r\n };\r\n BindingWhenOnSyntax.prototype.whenParentNamed = function (name) {\r\n return this._bindingWhenSyntax.whenParentNamed(name);\r\n };\r\n BindingWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\r\n };\r\n BindingWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\r\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\r\n };\r\n BindingWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\r\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\r\n };\r\n BindingWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\r\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\r\n };\r\n BindingWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\r\n };\r\n BindingWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\r\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\r\n };\r\n BindingWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\r\n };\r\n BindingWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\r\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\r\n };\r\n BindingWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\r\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\r\n };\r\n BindingWhenOnSyntax.prototype.onActivation = function (handler) {\r\n return this._bindingOnSyntax.onActivation(handler);\r\n };\r\n BindingWhenOnSyntax.prototype.onDeactivation = function (handler) {\r\n return this._bindingOnSyntax.onDeactivation(handler);\r\n };\r\n return BindingWhenOnSyntax;\r\n}());\r\nexport { BindingWhenOnSyntax };\r\n", "import { BindingScopeEnum } from '../constants/literal_types';\r\nimport { BindingWhenOnSyntax } from './binding_when_on_syntax';\r\nvar BindingInSyntax = (function () {\r\n function BindingInSyntax(binding) {\r\n this._binding = binding;\r\n }\r\n BindingInSyntax.prototype.inRequestScope = function () {\r\n this._binding.scope = BindingScopeEnum.Request;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingInSyntax.prototype.inSingletonScope = function () {\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingInSyntax.prototype.inTransientScope = function () {\r\n this._binding.scope = BindingScopeEnum.Transient;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n return BindingInSyntax;\r\n}());\r\nexport { BindingInSyntax };\r\n", "import { BindingInSyntax } from './binding_in_syntax';\r\nimport { BindingOnSyntax } from './binding_on_syntax';\r\nimport { BindingWhenSyntax } from './binding_when_syntax';\r\nvar BindingInWhenOnSyntax = (function () {\r\n function BindingInWhenOnSyntax(binding) {\r\n this._binding = binding;\r\n this._bindingWhenSyntax = new BindingWhenSyntax(this._binding);\r\n this._bindingOnSyntax = new BindingOnSyntax(this._binding);\r\n this._bindingInSyntax = new BindingInSyntax(binding);\r\n }\r\n BindingInWhenOnSyntax.prototype.inRequestScope = function () {\r\n return this._bindingInSyntax.inRequestScope();\r\n };\r\n BindingInWhenOnSyntax.prototype.inSingletonScope = function () {\r\n return this._bindingInSyntax.inSingletonScope();\r\n };\r\n BindingInWhenOnSyntax.prototype.inTransientScope = function () {\r\n return this._bindingInSyntax.inTransientScope();\r\n };\r\n BindingInWhenOnSyntax.prototype.when = function (constraint) {\r\n return this._bindingWhenSyntax.when(constraint);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenTargetNamed = function (name) {\r\n return this._bindingWhenSyntax.whenTargetNamed(name);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenTargetIsDefault = function () {\r\n return this._bindingWhenSyntax.whenTargetIsDefault();\r\n };\r\n BindingInWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\r\n return this._bindingWhenSyntax.whenInjectedInto(parent);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenParentNamed = function (name) {\r\n return this._bindingWhenSyntax.whenParentNamed(name);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\r\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\r\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\r\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\r\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\r\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\r\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\r\n };\r\n BindingInWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\r\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\r\n };\r\n BindingInWhenOnSyntax.prototype.onActivation = function (handler) {\r\n return this._bindingOnSyntax.onActivation(handler);\r\n };\r\n BindingInWhenOnSyntax.prototype.onDeactivation = function (handler) {\r\n return this._bindingOnSyntax.onDeactivation(handler);\r\n };\r\n return BindingInWhenOnSyntax;\r\n}());\r\nexport { BindingInWhenOnSyntax };\r\n", "import * as ERROR_MSGS from \"../constants/error_msgs\";\r\nimport { BindingScopeEnum, BindingTypeEnum } from \"../constants/literal_types\";\r\nimport { BindingInWhenOnSyntax } from \"./binding_in_when_on_syntax\";\r\nimport { BindingWhenOnSyntax } from \"./binding_when_on_syntax\";\r\nvar BindingToSyntax = (function () {\r\n function BindingToSyntax(binding) {\r\n this._binding = binding;\r\n }\r\n BindingToSyntax.prototype.to = function (constructor) {\r\n this._binding.type = BindingTypeEnum.Instance;\r\n this._binding.implementationType = constructor;\r\n return new BindingInWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toSelf = function () {\r\n if (typeof this._binding.serviceIdentifier !== \"function\") {\r\n throw new Error(\"\" + ERROR_MSGS.INVALID_TO_SELF_VALUE);\r\n }\r\n var self = this._binding.serviceIdentifier;\r\n return this.to(self);\r\n };\r\n BindingToSyntax.prototype.toConstantValue = function (value) {\r\n this._binding.type = BindingTypeEnum.ConstantValue;\r\n this._binding.cache = value;\r\n this._binding.dynamicValue = null;\r\n this._binding.implementationType = null;\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toDynamicValue = function (func) {\r\n this._binding.type = BindingTypeEnum.DynamicValue;\r\n this._binding.cache = null;\r\n this._binding.dynamicValue = func;\r\n this._binding.implementationType = null;\r\n return new BindingInWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toConstructor = function (constructor) {\r\n this._binding.type = BindingTypeEnum.Constructor;\r\n this._binding.implementationType = constructor;\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toFactory = function (factory) {\r\n this._binding.type = BindingTypeEnum.Factory;\r\n this._binding.factory = factory;\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toFunction = function (func) {\r\n if (typeof func !== \"function\") {\r\n throw new Error(ERROR_MSGS.INVALID_FUNCTION_BINDING);\r\n }\r\n var bindingWhenOnSyntax = this.toConstantValue(func);\r\n this._binding.type = BindingTypeEnum.Function;\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return bindingWhenOnSyntax;\r\n };\r\n BindingToSyntax.prototype.toAutoFactory = function (serviceIdentifier) {\r\n this._binding.type = BindingTypeEnum.Factory;\r\n this._binding.factory = function (context) {\r\n var autofactory = function () { return context.container.get(serviceIdentifier); };\r\n return autofactory;\r\n };\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toAutoNamedFactory = function (serviceIdentifier) {\r\n this._binding.type = BindingTypeEnum.Factory;\r\n this._binding.factory = function (context) {\r\n return function (named) { return context.container.getNamed(serviceIdentifier, named); };\r\n };\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toProvider = function (provider) {\r\n this._binding.type = BindingTypeEnum.Provider;\r\n this._binding.provider = provider;\r\n this._binding.scope = BindingScopeEnum.Singleton;\r\n return new BindingWhenOnSyntax(this._binding);\r\n };\r\n BindingToSyntax.prototype.toService = function (service) {\r\n this.toDynamicValue(function (context) { return context.container.get(service); });\r\n };\r\n return BindingToSyntax;\r\n}());\r\nexport { BindingToSyntax };\r\n", "var ContainerSnapshot = (function () {\r\n function ContainerSnapshot() {\r\n }\r\n ContainerSnapshot.of = function (bindings, middleware, activations, deactivations, moduleActivationStore) {\r\n var snapshot = new ContainerSnapshot();\r\n snapshot.bindings = bindings;\r\n snapshot.middleware = middleware;\r\n snapshot.deactivations = deactivations;\r\n snapshot.activations = activations;\r\n snapshot.moduleActivationStore = moduleActivationStore;\r\n return snapshot;\r\n };\r\n return ContainerSnapshot;\r\n}());\r\nexport { ContainerSnapshot };\r\n", "function isClonable(obj) {\r\n return (typeof obj === 'object')\r\n && (obj !== null)\r\n && ('clone' in obj)\r\n && typeof obj.clone === 'function';\r\n}\r\nexport { isClonable };\r\n", "import * as ERROR_MSGS from '../constants/error_msgs';\r\nimport { isClonable } from '../utils/clonable';\r\nvar Lookup = (function () {\r\n function Lookup() {\r\n this._map = new Map();\r\n }\r\n Lookup.prototype.getMap = function () {\r\n return this._map;\r\n };\r\n Lookup.prototype.add = function (serviceIdentifier, value) {\r\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\r\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\r\n }\r\n if (value === null || value === undefined) {\r\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\r\n }\r\n var entry = this._map.get(serviceIdentifier);\r\n if (entry !== undefined) {\r\n entry.push(value);\r\n }\r\n else {\r\n this._map.set(serviceIdentifier, [value]);\r\n }\r\n };\r\n Lookup.prototype.get = function (serviceIdentifier) {\r\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\r\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\r\n }\r\n var entry = this._map.get(serviceIdentifier);\r\n if (entry !== undefined) {\r\n return entry;\r\n }\r\n else {\r\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\r\n }\r\n };\r\n Lookup.prototype.remove = function (serviceIdentifier) {\r\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\r\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\r\n }\r\n if (!this._map.delete(serviceIdentifier)) {\r\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\r\n }\r\n };\r\n Lookup.prototype.removeIntersection = function (lookup) {\r\n var _this = this;\r\n this.traverse(function (serviceIdentifier, value) {\r\n var lookupActivations = lookup.hasKey(serviceIdentifier) ? lookup.get(serviceIdentifier) : undefined;\r\n if (lookupActivations !== undefined) {\r\n var filteredValues = value.filter(function (lookupValue) {\r\n return !lookupActivations.some(function (moduleActivation) { return lookupValue === moduleActivation; });\r\n });\r\n _this._setValue(serviceIdentifier, filteredValues);\r\n }\r\n });\r\n };\r\n Lookup.prototype.removeByCondition = function (condition) {\r\n var _this = this;\r\n var removals = [];\r\n this._map.forEach(function (entries, key) {\r\n var updatedEntries = [];\r\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n var entry = entries_1[_i];\r\n var remove = condition(entry);\r\n if (remove) {\r\n removals.push(entry);\r\n }\r\n else {\r\n updatedEntries.push(entry);\r\n }\r\n }\r\n _this._setValue(key, updatedEntries);\r\n });\r\n return removals;\r\n };\r\n Lookup.prototype.hasKey = function (serviceIdentifier) {\r\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\r\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\r\n }\r\n return this._map.has(serviceIdentifier);\r\n };\r\n Lookup.prototype.clone = function () {\r\n var copy = new Lookup();\r\n this._map.forEach(function (value, key) {\r\n value.forEach(function (b) { return copy.add(key, isClonable(b) ? b.clone() : b); });\r\n });\r\n return copy;\r\n };\r\n Lookup.prototype.traverse = function (func) {\r\n this._map.forEach(function (value, key) {\r\n func(key, value);\r\n });\r\n };\r\n Lookup.prototype._setValue = function (serviceIdentifier, value) {\r\n if (value.length > 0) {\r\n this._map.set(serviceIdentifier, value);\r\n }\r\n else {\r\n this._map.delete(serviceIdentifier);\r\n }\r\n };\r\n return Lookup;\r\n}());\r\nexport { Lookup };\r\n", "import { Lookup } from './lookup';\r\nvar ModuleActivationStore = (function () {\r\n function ModuleActivationStore() {\r\n this._map = new Map();\r\n }\r\n ModuleActivationStore.prototype.remove = function (moduleId) {\r\n if (this._map.has(moduleId)) {\r\n var handlers = this._map.get(moduleId);\r\n this._map.delete(moduleId);\r\n return handlers;\r\n }\r\n return this._getEmptyHandlersStore();\r\n };\r\n ModuleActivationStore.prototype.addDeactivation = function (moduleId, serviceIdentifier, onDeactivation) {\r\n this._getModuleActivationHandlers(moduleId)\r\n .onDeactivations.add(serviceIdentifier, onDeactivation);\r\n };\r\n ModuleActivationStore.prototype.addActivation = function (moduleId, serviceIdentifier, onActivation) {\r\n this._getModuleActivationHandlers(moduleId)\r\n .onActivations.add(serviceIdentifier, onActivation);\r\n };\r\n ModuleActivationStore.prototype.clone = function () {\r\n var clone = new ModuleActivationStore();\r\n this._map.forEach(function (handlersStore, moduleId) {\r\n clone._map.set(moduleId, {\r\n onActivations: handlersStore.onActivations.clone(),\r\n onDeactivations: handlersStore.onDeactivations.clone(),\r\n });\r\n });\r\n return clone;\r\n };\r\n ModuleActivationStore.prototype._getModuleActivationHandlers = function (moduleId) {\r\n var moduleActivationHandlers = this._map.get(moduleId);\r\n if (moduleActivationHandlers === undefined) {\r\n moduleActivationHandlers = this._getEmptyHandlersStore();\r\n this._map.set(moduleId, moduleActivationHandlers);\r\n }\r\n return moduleActivationHandlers;\r\n };\r\n ModuleActivationStore.prototype._getEmptyHandlersStore = function () {\r\n var handlersStore = {\r\n onActivations: new Lookup(),\r\n onDeactivations: new Lookup()\r\n };\r\n return handlersStore;\r\n };\r\n return ModuleActivationStore;\r\n}());\r\nexport { ModuleActivationStore };\r\n", "var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nimport { Binding } from '../bindings/binding';\r\nimport * as ERROR_MSGS from '../constants/error_msgs';\r\nimport { BindingScopeEnum, TargetTypeEnum } from '../constants/literal_types';\r\nimport * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { MetadataReader } from '../planning/metadata_reader';\r\nimport { createMockRequest, getBindingDictionary, plan } from '../planning/planner';\r\nimport { resolve } from '../resolution/resolver';\r\nimport { BindingToSyntax } from '../syntax/binding_to_syntax';\r\nimport { isPromise, isPromiseOrContainsPromise } from '../utils/async';\r\nimport { id } from '../utils/id';\r\nimport { getServiceIdentifierAsString } from '../utils/serialization';\r\nimport { ContainerSnapshot } from './container_snapshot';\r\nimport { Lookup } from './lookup';\r\nimport { ModuleActivationStore } from './module_activation_store';\r\nvar Container = (function () {\r\n function Container(containerOptions) {\r\n var options = containerOptions || {};\r\n if (typeof options !== 'object') {\r\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT);\r\n }\r\n if (options.defaultScope === undefined) {\r\n options.defaultScope = BindingScopeEnum.Transient;\r\n }\r\n else if (options.defaultScope !== BindingScopeEnum.Singleton &&\r\n options.defaultScope !== BindingScopeEnum.Transient &&\r\n options.defaultScope !== BindingScopeEnum.Request) {\r\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE);\r\n }\r\n if (options.autoBindInjectable === undefined) {\r\n options.autoBindInjectable = false;\r\n }\r\n else if (typeof options.autoBindInjectable !== 'boolean') {\r\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE);\r\n }\r\n if (options.skipBaseClassChecks === undefined) {\r\n options.skipBaseClassChecks = false;\r\n }\r\n else if (typeof options.skipBaseClassChecks !== 'boolean') {\r\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK);\r\n }\r\n this.options = {\r\n autoBindInjectable: options.autoBindInjectable,\r\n defaultScope: options.defaultScope,\r\n skipBaseClassChecks: options.skipBaseClassChecks\r\n };\r\n this.id = id();\r\n this._bindingDictionary = new Lookup();\r\n this._snapshots = [];\r\n this._middleware = null;\r\n this._activations = new Lookup();\r\n this._deactivations = new Lookup();\r\n this.parent = null;\r\n this._metadataReader = new MetadataReader();\r\n this._moduleActivationStore = new ModuleActivationStore();\r\n }\r\n Container.merge = function (container1, container2) {\r\n var containers = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n containers[_i - 2] = arguments[_i];\r\n }\r\n var container = new Container();\r\n var targetContainers = __spreadArray([container1, container2], containers, true).map(function (targetContainer) { return getBindingDictionary(targetContainer); });\r\n var bindingDictionary = getBindingDictionary(container);\r\n function copyDictionary(origin, destination) {\r\n origin.traverse(function (_key, value) {\r\n value.forEach(function (binding) {\r\n destination.add(binding.serviceIdentifier, binding.clone());\r\n });\r\n });\r\n }\r\n targetContainers.forEach(function (targetBindingDictionary) {\r\n copyDictionary(targetBindingDictionary, bindingDictionary);\r\n });\r\n return container;\r\n };\r\n Container.prototype.load = function () {\r\n var modules = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n modules[_i] = arguments[_i];\r\n }\r\n var getHelpers = this._getContainerModuleHelpersFactory();\r\n for (var _a = 0, modules_1 = modules; _a < modules_1.length; _a++) {\r\n var currentModule = modules_1[_a];\r\n var containerModuleHelpers = getHelpers(currentModule.id);\r\n currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction, containerModuleHelpers.unbindAsyncFunction, containerModuleHelpers.onActivationFunction, containerModuleHelpers.onDeactivationFunction);\r\n }\r\n };\r\n Container.prototype.loadAsync = function () {\r\n var modules = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n modules[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getHelpers, _a, modules_2, currentModule, containerModuleHelpers;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n getHelpers = this._getContainerModuleHelpersFactory();\r\n _a = 0, modules_2 = modules;\r\n _b.label = 1;\r\n case 1:\r\n if (!(_a < modules_2.length)) return [3, 4];\r\n currentModule = modules_2[_a];\r\n containerModuleHelpers = getHelpers(currentModule.id);\r\n return [4, currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction, containerModuleHelpers.unbindAsyncFunction, containerModuleHelpers.onActivationFunction, containerModuleHelpers.onDeactivationFunction)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3:\r\n _a++;\r\n return [3, 1];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype.unload = function () {\r\n var _this = this;\r\n var modules = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n modules[_i] = arguments[_i];\r\n }\r\n modules.forEach(function (module) {\r\n var deactivations = _this._removeModuleBindings(module.id);\r\n _this._deactivateSingletons(deactivations);\r\n _this._removeModuleHandlers(module.id);\r\n });\r\n };\r\n Container.prototype.unloadAsync = function () {\r\n var modules = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n modules[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, modules_3, module_1, deactivations;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = 0, modules_3 = modules;\r\n _b.label = 1;\r\n case 1:\r\n if (!(_a < modules_3.length)) return [3, 4];\r\n module_1 = modules_3[_a];\r\n deactivations = this._removeModuleBindings(module_1.id);\r\n return [4, this._deactivateSingletonsAsync(deactivations)];\r\n case 2:\r\n _b.sent();\r\n this._removeModuleHandlers(module_1.id);\r\n _b.label = 3;\r\n case 3:\r\n _a++;\r\n return [3, 1];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype.bind = function (serviceIdentifier) {\r\n var scope = this.options.defaultScope || BindingScopeEnum.Transient;\r\n var binding = new Binding(serviceIdentifier, scope);\r\n this._bindingDictionary.add(serviceIdentifier, binding);\r\n return new BindingToSyntax(binding);\r\n };\r\n Container.prototype.rebind = function (serviceIdentifier) {\r\n this.unbind(serviceIdentifier);\r\n return this.bind(serviceIdentifier);\r\n };\r\n Container.prototype.rebindAsync = function (serviceIdentifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.unbindAsync(serviceIdentifier)];\r\n case 1:\r\n _a.sent();\r\n return [2, this.bind(serviceIdentifier)];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype.unbind = function (serviceIdentifier) {\r\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\r\n var bindings = this._bindingDictionary.get(serviceIdentifier);\r\n this._deactivateSingletons(bindings);\r\n }\r\n this._removeServiceFromDictionary(serviceIdentifier);\r\n };\r\n Container.prototype.unbindAsync = function (serviceIdentifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var bindings;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._bindingDictionary.hasKey(serviceIdentifier)) return [3, 2];\r\n bindings = this._bindingDictionary.get(serviceIdentifier);\r\n return [4, this._deactivateSingletonsAsync(bindings)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n this._removeServiceFromDictionary(serviceIdentifier);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype.unbindAll = function () {\r\n var _this = this;\r\n this._bindingDictionary.traverse(function (_key, value) {\r\n _this._deactivateSingletons(value);\r\n });\r\n this._bindingDictionary = new Lookup();\r\n };\r\n Container.prototype.unbindAllAsync = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n promises = [];\r\n this._bindingDictionary.traverse(function (_key, value) {\r\n promises.push(_this._deactivateSingletonsAsync(value));\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n this._bindingDictionary = new Lookup();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype.onActivation = function (serviceIdentifier, onActivation) {\r\n this._activations.add(serviceIdentifier, onActivation);\r\n };\r\n Container.prototype.onDeactivation = function (serviceIdentifier, onDeactivation) {\r\n this._deactivations.add(serviceIdentifier, onDeactivation);\r\n };\r\n Container.prototype.isBound = function (serviceIdentifier) {\r\n var bound = this._bindingDictionary.hasKey(serviceIdentifier);\r\n if (!bound && this.parent) {\r\n bound = this.parent.isBound(serviceIdentifier);\r\n }\r\n return bound;\r\n };\r\n Container.prototype.isCurrentBound = function (serviceIdentifier) {\r\n return this._bindingDictionary.hasKey(serviceIdentifier);\r\n };\r\n Container.prototype.isBoundNamed = function (serviceIdentifier, named) {\r\n return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\r\n };\r\n Container.prototype.isBoundTagged = function (serviceIdentifier, key, value) {\r\n var bound = false;\r\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\r\n var bindings = this._bindingDictionary.get(serviceIdentifier);\r\n var request_1 = createMockRequest(this, serviceIdentifier, key, value);\r\n bound = bindings.some(function (b) { return b.constraint(request_1); });\r\n }\r\n if (!bound && this.parent) {\r\n bound = this.parent.isBoundTagged(serviceIdentifier, key, value);\r\n }\r\n return bound;\r\n };\r\n Container.prototype.snapshot = function () {\r\n this._snapshots.push(ContainerSnapshot.of(this._bindingDictionary.clone(), this._middleware, this._activations.clone(), this._deactivations.clone(), this._moduleActivationStore.clone()));\r\n };\r\n Container.prototype.restore = function () {\r\n var snapshot = this._snapshots.pop();\r\n if (snapshot === undefined) {\r\n throw new Error(ERROR_MSGS.NO_MORE_SNAPSHOTS_AVAILABLE);\r\n }\r\n this._bindingDictionary = snapshot.bindings;\r\n this._activations = snapshot.activations;\r\n this._deactivations = snapshot.deactivations;\r\n this._middleware = snapshot.middleware;\r\n this._moduleActivationStore = snapshot.moduleActivationStore;\r\n };\r\n Container.prototype.createChild = function (containerOptions) {\r\n var child = new Container(containerOptions || this.options);\r\n child.parent = this;\r\n return child;\r\n };\r\n Container.prototype.applyMiddleware = function () {\r\n var middlewares = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n middlewares[_i] = arguments[_i];\r\n }\r\n var initial = (this._middleware) ? this._middleware : this._planAndResolve();\r\n this._middleware = middlewares.reduce(function (prev, curr) { return curr(prev); }, initial);\r\n };\r\n Container.prototype.applyCustomMetadataReader = function (metadataReader) {\r\n this._metadataReader = metadataReader;\r\n };\r\n Container.prototype.get = function (serviceIdentifier) {\r\n var getArgs = this._getNotAllArgs(serviceIdentifier, false);\r\n return this._getButThrowIfAsync(getArgs);\r\n };\r\n Container.prototype.getAsync = function (serviceIdentifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getArgs;\r\n return __generator(this, function (_a) {\r\n getArgs = this._getNotAllArgs(serviceIdentifier, false);\r\n return [2, this._get(getArgs)];\r\n });\r\n });\r\n };\r\n Container.prototype.getTagged = function (serviceIdentifier, key, value) {\r\n var getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\r\n return this._getButThrowIfAsync(getArgs);\r\n };\r\n Container.prototype.getTaggedAsync = function (serviceIdentifier, key, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getArgs;\r\n return __generator(this, function (_a) {\r\n getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\r\n return [2, this._get(getArgs)];\r\n });\r\n });\r\n };\r\n Container.prototype.getNamed = function (serviceIdentifier, named) {\r\n return this.getTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\r\n };\r\n Container.prototype.getNamedAsync = function (serviceIdentifier, named) {\r\n return this.getTaggedAsync(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\r\n };\r\n Container.prototype.getAll = function (serviceIdentifier) {\r\n var getArgs = this._getAllArgs(serviceIdentifier);\r\n return this._getButThrowIfAsync(getArgs);\r\n };\r\n Container.prototype.getAllAsync = function (serviceIdentifier) {\r\n var getArgs = this._getAllArgs(serviceIdentifier);\r\n return this._getAll(getArgs);\r\n };\r\n Container.prototype.getAllTagged = function (serviceIdentifier, key, value) {\r\n var getArgs = this._getNotAllArgs(serviceIdentifier, true, key, value);\r\n return this._getButThrowIfAsync(getArgs);\r\n };\r\n Container.prototype.getAllTaggedAsync = function (serviceIdentifier, key, value) {\r\n var getArgs = this._getNotAllArgs(serviceIdentifier, true, key, value);\r\n return this._getAll(getArgs);\r\n };\r\n Container.prototype.getAllNamed = function (serviceIdentifier, named) {\r\n return this.getAllTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\r\n };\r\n Container.prototype.getAllNamedAsync = function (serviceIdentifier, named) {\r\n return this.getAllTaggedAsync(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\r\n };\r\n Container.prototype.resolve = function (constructorFunction) {\r\n var isBound = this.isBound(constructorFunction);\r\n if (!isBound) {\r\n this.bind(constructorFunction).toSelf();\r\n }\r\n var resolved = this.get(constructorFunction);\r\n if (!isBound) {\r\n this.unbind(constructorFunction);\r\n }\r\n return resolved;\r\n };\r\n Container.prototype._preDestroy = function (constructor, instance) {\r\n var _a, _b;\r\n if (Reflect.hasMetadata(METADATA_KEY.PRE_DESTROY, constructor)) {\r\n var data = Reflect.getMetadata(METADATA_KEY.PRE_DESTROY, constructor);\r\n return (_b = (_a = instance)[data.value]) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n };\r\n Container.prototype._removeModuleHandlers = function (moduleId) {\r\n var moduleActivationsHandlers = this._moduleActivationStore.remove(moduleId);\r\n this._activations.removeIntersection(moduleActivationsHandlers.onActivations);\r\n this._deactivations.removeIntersection(moduleActivationsHandlers.onDeactivations);\r\n };\r\n Container.prototype._removeModuleBindings = function (moduleId) {\r\n return this._bindingDictionary.removeByCondition(function (binding) { return binding.moduleId === moduleId; });\r\n };\r\n Container.prototype._deactivate = function (binding, instance) {\r\n var _this = this;\r\n var constructor = Object.getPrototypeOf(instance).constructor;\r\n try {\r\n if (this._deactivations.hasKey(binding.serviceIdentifier)) {\r\n var result = this._deactivateContainer(instance, this._deactivations.get(binding.serviceIdentifier).values());\r\n if (isPromise(result)) {\r\n return this._handleDeactivationError(result.then(function () { return _this._propagateContainerDeactivationThenBindingAndPreDestroyAsync(binding, instance, constructor); }), constructor);\r\n }\r\n }\r\n var propagateDeactivationResult = this._propagateContainerDeactivationThenBindingAndPreDestroy(binding, instance, constructor);\r\n if (isPromise(propagateDeactivationResult)) {\r\n return this._handleDeactivationError(propagateDeactivationResult, constructor);\r\n }\r\n }\r\n catch (ex) {\r\n if (ex instanceof Error) {\r\n throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));\r\n }\r\n }\r\n };\r\n Container.prototype._handleDeactivationError = function (asyncResult, constructor) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var ex_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, asyncResult];\r\n case 1:\r\n _a.sent();\r\n return [3, 3];\r\n case 2:\r\n ex_1 = _a.sent();\r\n if (ex_1 instanceof Error) {\r\n throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex_1.message));\r\n }\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype._deactivateContainer = function (instance, deactivationsIterator) {\r\n var _this = this;\r\n var deactivation = deactivationsIterator.next();\r\n while (deactivation.value) {\r\n var result = deactivation.value(instance);\r\n if (isPromise(result)) {\r\n return result.then(function () {\r\n return _this._deactivateContainerAsync(instance, deactivationsIterator);\r\n });\r\n }\r\n deactivation = deactivationsIterator.next();\r\n }\r\n };\r\n Container.prototype._deactivateContainerAsync = function (instance, deactivationsIterator) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deactivation;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n deactivation = deactivationsIterator.next();\r\n _a.label = 1;\r\n case 1:\r\n if (!deactivation.value) return [3, 3];\r\n return [4, deactivation.value(instance)];\r\n case 2:\r\n _a.sent();\r\n deactivation = deactivationsIterator.next();\r\n return [3, 1];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype._getContainerModuleHelpersFactory = function () {\r\n var _this = this;\r\n var setModuleId = function (bindingToSyntax, moduleId) {\r\n bindingToSyntax._binding.moduleId = moduleId;\r\n };\r\n var getBindFunction = function (moduleId) {\r\n return function (serviceIdentifier) {\r\n var bindingToSyntax = _this.bind(serviceIdentifier);\r\n setModuleId(bindingToSyntax, moduleId);\r\n return bindingToSyntax;\r\n };\r\n };\r\n var getUnbindFunction = function () {\r\n return function (serviceIdentifier) {\r\n return _this.unbind(serviceIdentifier);\r\n };\r\n };\r\n var getUnbindAsyncFunction = function () {\r\n return function (serviceIdentifier) {\r\n return _this.unbindAsync(serviceIdentifier);\r\n };\r\n };\r\n var getIsboundFunction = function () {\r\n return function (serviceIdentifier) {\r\n return _this.isBound(serviceIdentifier);\r\n };\r\n };\r\n var getRebindFunction = function (moduleId) {\r\n return function (serviceIdentifier) {\r\n var bindingToSyntax = _this.rebind(serviceIdentifier);\r\n setModuleId(bindingToSyntax, moduleId);\r\n return bindingToSyntax;\r\n };\r\n };\r\n var getOnActivationFunction = function (moduleId) {\r\n return function (serviceIdentifier, onActivation) {\r\n _this._moduleActivationStore.addActivation(moduleId, serviceIdentifier, onActivation);\r\n _this.onActivation(serviceIdentifier, onActivation);\r\n };\r\n };\r\n var getOnDeactivationFunction = function (moduleId) {\r\n return function (serviceIdentifier, onDeactivation) {\r\n _this._moduleActivationStore.addDeactivation(moduleId, serviceIdentifier, onDeactivation);\r\n _this.onDeactivation(serviceIdentifier, onDeactivation);\r\n };\r\n };\r\n return function (mId) { return ({\r\n bindFunction: getBindFunction(mId),\r\n isboundFunction: getIsboundFunction(),\r\n onActivationFunction: getOnActivationFunction(mId),\r\n onDeactivationFunction: getOnDeactivationFunction(mId),\r\n rebindFunction: getRebindFunction(mId),\r\n unbindFunction: getUnbindFunction(),\r\n unbindAsyncFunction: getUnbindAsyncFunction()\r\n }); };\r\n };\r\n Container.prototype._getAll = function (getArgs) {\r\n return Promise.all(this._get(getArgs));\r\n };\r\n Container.prototype._get = function (getArgs) {\r\n var planAndResolveArgs = __assign(__assign({}, getArgs), { contextInterceptor: function (context) { return context; }, targetType: TargetTypeEnum.Variable });\r\n if (this._middleware) {\r\n var middlewareResult = this._middleware(planAndResolveArgs);\r\n if (middlewareResult === undefined || middlewareResult === null) {\r\n throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN);\r\n }\r\n return middlewareResult;\r\n }\r\n return this._planAndResolve()(planAndResolveArgs);\r\n };\r\n Container.prototype._getButThrowIfAsync = function (getArgs) {\r\n var result = this._get(getArgs);\r\n if (isPromiseOrContainsPromise(result)) {\r\n throw new Error(ERROR_MSGS.LAZY_IN_SYNC(getArgs.serviceIdentifier));\r\n }\r\n return result;\r\n };\r\n Container.prototype._getAllArgs = function (serviceIdentifier) {\r\n var getAllArgs = {\r\n avoidConstraints: true,\r\n isMultiInject: true,\r\n serviceIdentifier: serviceIdentifier,\r\n };\r\n return getAllArgs;\r\n };\r\n Container.prototype._getNotAllArgs = function (serviceIdentifier, isMultiInject, key, value) {\r\n var getNotAllArgs = {\r\n avoidConstraints: false,\r\n isMultiInject: isMultiInject,\r\n serviceIdentifier: serviceIdentifier,\r\n key: key,\r\n value: value,\r\n };\r\n return getNotAllArgs;\r\n };\r\n Container.prototype._planAndResolve = function () {\r\n var _this = this;\r\n return function (args) {\r\n var context = plan(_this._metadataReader, _this, args.isMultiInject, args.targetType, args.serviceIdentifier, args.key, args.value, args.avoidConstraints);\r\n context = args.contextInterceptor(context);\r\n var result = resolve(context);\r\n return result;\r\n };\r\n };\r\n Container.prototype._deactivateIfSingleton = function (binding) {\r\n var _this = this;\r\n if (!binding.activated) {\r\n return;\r\n }\r\n if (isPromise(binding.cache)) {\r\n return binding.cache.then(function (resolved) { return _this._deactivate(binding, resolved); });\r\n }\r\n return this._deactivate(binding, binding.cache);\r\n };\r\n Container.prototype._deactivateSingletons = function (bindings) {\r\n for (var _i = 0, bindings_1 = bindings; _i < bindings_1.length; _i++) {\r\n var binding = bindings_1[_i];\r\n var result = this._deactivateIfSingleton(binding);\r\n if (isPromise(result)) {\r\n throw new Error(ERROR_MSGS.ASYNC_UNBIND_REQUIRED);\r\n }\r\n }\r\n };\r\n Container.prototype._deactivateSingletonsAsync = function (bindings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, Promise.all(bindings.map(function (b) { return _this._deactivateIfSingleton(b); }))];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype._propagateContainerDeactivationThenBindingAndPreDestroy = function (binding, instance, constructor) {\r\n if (this.parent) {\r\n return this._deactivate.bind(this.parent)(binding, instance);\r\n }\r\n else {\r\n return this._bindingDeactivationAndPreDestroy(binding, instance, constructor);\r\n }\r\n };\r\n Container.prototype._propagateContainerDeactivationThenBindingAndPreDestroyAsync = function (binding, instance, constructor) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.parent) return [3, 2];\r\n return [4, this._deactivate.bind(this.parent)(binding, instance)];\r\n case 1:\r\n _a.sent();\r\n return [3, 4];\r\n case 2: return [4, this._bindingDeactivationAndPreDestroyAsync(binding, instance, constructor)];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Container.prototype._removeServiceFromDictionary = function (serviceIdentifier) {\r\n try {\r\n this._bindingDictionary.remove(serviceIdentifier);\r\n }\r\n catch (e) {\r\n throw new Error(ERROR_MSGS.CANNOT_UNBIND + \" \" + getServiceIdentifierAsString(serviceIdentifier));\r\n }\r\n };\r\n Container.prototype._bindingDeactivationAndPreDestroy = function (binding, instance, constructor) {\r\n var _this = this;\r\n if (typeof binding.onDeactivation === 'function') {\r\n var result = binding.onDeactivation(instance);\r\n if (isPromise(result)) {\r\n return result.then(function () { return _this._preDestroy(constructor, instance); });\r\n }\r\n }\r\n return this._preDestroy(constructor, instance);\r\n };\r\n Container.prototype._bindingDeactivationAndPreDestroyAsync = function (binding, instance, constructor) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(typeof binding.onDeactivation === 'function')) return [3, 2];\r\n return [4, binding.onDeactivation(instance)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [4, this._preDestroy(constructor, instance)];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n return Container;\r\n}());\r\nexport { Container };\r\n", "import { id } from '../utils/id';\r\nvar ContainerModule = (function () {\r\n function ContainerModule(registry) {\r\n this.id = id();\r\n this.registry = registry;\r\n }\r\n return ContainerModule;\r\n}());\r\nexport { ContainerModule };\r\nvar AsyncContainerModule = (function () {\r\n function AsyncContainerModule(registry) {\r\n this.id = id();\r\n this.registry = registry;\r\n }\r\n return AsyncContainerModule;\r\n}());\r\nexport { AsyncContainerModule };\r\n", "export function getFirstArrayDuplicate(array) {\r\n var seenValues = new Set();\r\n for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {\r\n var entry = array_1[_i];\r\n if (seenValues.has(entry)) {\r\n return entry;\r\n }\r\n else {\r\n seenValues.add(entry);\r\n }\r\n }\r\n return undefined;\r\n}\r\n", "import * as ERROR_MSGS from '../constants/error_msgs';\r\nimport * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { getFirstArrayDuplicate } from '../utils/js';\r\nfunction targetIsConstructorFunction(target) {\r\n return target.prototype !== undefined;\r\n}\r\nfunction _throwIfMethodParameter(parameterName) {\r\n if (parameterName !== undefined) {\r\n throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION);\r\n }\r\n}\r\nfunction tagParameter(annotationTarget, parameterName, parameterIndex, metadata) {\r\n _throwIfMethodParameter(parameterName);\r\n _tagParameterOrProperty(METADATA_KEY.TAGGED, annotationTarget, parameterIndex.toString(), metadata);\r\n}\r\nfunction tagProperty(annotationTarget, propertyName, metadata) {\r\n if (targetIsConstructorFunction(annotationTarget)) {\r\n throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION);\r\n }\r\n _tagParameterOrProperty(METADATA_KEY.TAGGED_PROP, annotationTarget.constructor, propertyName, metadata);\r\n}\r\nfunction _ensureNoMetadataKeyDuplicates(metadata) {\r\n var metadatas = [];\r\n if (Array.isArray(metadata)) {\r\n metadatas = metadata;\r\n var duplicate = getFirstArrayDuplicate(metadatas.map(function (md) { return md.key; }));\r\n if (duplicate !== undefined) {\r\n throw new Error(ERROR_MSGS.DUPLICATED_METADATA + \" \" + duplicate.toString());\r\n }\r\n }\r\n else {\r\n metadatas = [metadata];\r\n }\r\n return metadatas;\r\n}\r\nfunction _tagParameterOrProperty(metadataKey, annotationTarget, key, metadata) {\r\n var metadatas = _ensureNoMetadataKeyDuplicates(metadata);\r\n var paramsOrPropertiesMetadata = {};\r\n if (Reflect.hasOwnMetadata(metadataKey, annotationTarget)) {\r\n paramsOrPropertiesMetadata = Reflect.getMetadata(metadataKey, annotationTarget);\r\n }\r\n var paramOrPropertyMetadata = paramsOrPropertiesMetadata[key];\r\n if (paramOrPropertyMetadata === undefined) {\r\n paramOrPropertyMetadata = [];\r\n }\r\n else {\r\n var _loop_1 = function (m) {\r\n if (metadatas.some(function (md) { return md.key === m.key; })) {\r\n throw new Error(ERROR_MSGS.DUPLICATED_METADATA + \" \" + m.key.toString());\r\n }\r\n };\r\n for (var _i = 0, paramOrPropertyMetadata_1 = paramOrPropertyMetadata; _i < paramOrPropertyMetadata_1.length; _i++) {\r\n var m = paramOrPropertyMetadata_1[_i];\r\n _loop_1(m);\r\n }\r\n }\r\n paramOrPropertyMetadata.push.apply(paramOrPropertyMetadata, metadatas);\r\n paramsOrPropertiesMetadata[key] = paramOrPropertyMetadata;\r\n Reflect.defineMetadata(metadataKey, paramsOrPropertiesMetadata, annotationTarget);\r\n}\r\nfunction createTaggedDecorator(metadata) {\r\n return function (target, targetKey, indexOrPropertyDescriptor) {\r\n if (typeof indexOrPropertyDescriptor === 'number') {\r\n tagParameter(target, targetKey, indexOrPropertyDescriptor, metadata);\r\n }\r\n else {\r\n tagProperty(target, targetKey, metadata);\r\n }\r\n };\r\n}\r\nfunction _decorate(decorators, target) {\r\n Reflect.decorate(decorators, target);\r\n}\r\nfunction _param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); };\r\n}\r\nfunction decorate(decorator, target, parameterIndexOrProperty) {\r\n if (typeof parameterIndexOrProperty === 'number') {\r\n _decorate([_param(parameterIndexOrProperty, decorator)], target);\r\n }\r\n else if (typeof parameterIndexOrProperty === 'string') {\r\n Reflect.decorate([decorator], target, parameterIndexOrProperty);\r\n }\r\n else {\r\n _decorate([decorator], target);\r\n }\r\n}\r\nexport { decorate, tagParameter, tagProperty, createTaggedDecorator };\r\n", "import * as ERRORS_MSGS from '../constants/error_msgs';\r\nimport * as METADATA_KEY from '../constants/metadata_keys';\r\nfunction injectable() {\r\n return function (target) {\r\n if (Reflect.hasOwnMetadata(METADATA_KEY.PARAM_TYPES, target)) {\r\n throw new Error(ERRORS_MSGS.DUPLICATED_INJECTABLE_DECORATOR);\r\n }\r\n var types = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, target) || [];\r\n Reflect.defineMetadata(METADATA_KEY.PARAM_TYPES, types, target);\r\n return target;\r\n };\r\n}\r\nexport { injectable };\r\n", "import { UNDEFINED_INJECT_ANNOTATION } from '../constants/error_msgs';\r\nimport { Metadata } from '../planning/metadata';\r\nimport { createTaggedDecorator } from './decorator_utils';\r\nexport function injectBase(metadataKey) {\r\n return function (serviceIdentifier) {\r\n return function (target, targetKey, indexOrPropertyDescriptor) {\r\n if (serviceIdentifier === undefined) {\r\n var className = typeof target === 'function' ? target.name : target.constructor.name;\r\n throw new Error(UNDEFINED_INJECT_ANNOTATION(className));\r\n }\r\n return createTaggedDecorator(new Metadata(metadataKey, serviceIdentifier))(target, targetKey, indexOrPropertyDescriptor);\r\n };\r\n };\r\n}\r\n", "import * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { injectBase } from './inject_base';\r\nvar inject = injectBase(METADATA_KEY.INJECT_TAG);\r\nexport { inject };\r\n", "import * as METADATA_KEY from '../constants/metadata_keys';\r\nimport { injectBase } from './inject_base';\r\nvar multiInject = injectBase(METADATA_KEY.MULTI_INJECT_TAG);\r\nexport { multiInject };\r\n", "export const loggerTypes = {\n LoggerPublisherServiceFactory: Symbol.for(\"LoggerPublisherServiceFactory\"),\n};\n", "import { inject, injectable } from \"inversify\";\n\nimport { Command } from \"@api/command/Command\";\nimport { CommandResult } from \"@api/command/model/CommandResult\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nexport type SendCommandUseCaseArgs<Response, ErrorStatusCodes, Args = void> = {\n /**\n * The device session id.\n */\n readonly sessionId: string;\n /**\n * The command to send.\n */\n readonly command: Command<Response, ErrorStatusCodes, Args>;\n};\n\n/**\n * Sends a command to a device through a device session.\n */\n@injectable()\nexport class SendCommandUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"SendCommandUseCase\");\n }\n\n /**\n * Sends a command to a device through a device session.\n *\n * @param sessionId - The device session id.\n * @param command - The command to send.\n * @returns The response from the command.\n */\n async execute<Response, Args, ErrorStatusCodes>({\n sessionId,\n command,\n }: SendCommandUseCaseArgs<Response, Args, ErrorStatusCodes>): Promise<\n CommandResult<Response, ErrorStatusCodes>\n > {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return deviceSessionOrError.caseOf({\n // Case device session found\n Right: async (deviceSession) =>\n await deviceSession.sendCommand<Response, Args, ErrorStatusCodes>(\n command,\n ),\n // Case device session not found\n Left: (error) => {\n this._logger.error(\"Error getting session\", {\n data: { error },\n });\n throw error;\n },\n });\n }\n}\n", "import { injectable } from \"inversify\";\n\n@injectable()\nexport class StubUseCase {\n execute = jest.fn(() => \"stub\");\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { SendCommandUseCase } from \"@api/command/use-case/SendCommandUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { commandTypes } from \"./commandTypes\";\n\ntype CommandModuleArgs = Partial<{\n readonly stub: boolean;\n}>;\n\nexport const commandModuleFactory = ({\n stub = false,\n}: CommandModuleArgs = {}) =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(commandTypes.SendCommandUseCase).to(SendCommandUseCase);\n if (stub) {\n rebind(commandTypes.SendCommandUseCase).to(StubUseCase);\n }\n },\n );\n", "import { inject, injectable } from \"inversify\";\n\nimport {\n DeviceAction,\n DeviceActionIntermediateValue,\n ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { SdkError } from \"@api/Error\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nexport type ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error extends SdkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n> = {\n /**\n * The device session id.\n */\n readonly sessionId: string;\n /**\n * The device action to execute.\n */\n readonly deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>;\n};\n\n/**\n * Executes a device action to a device through a device session.\n */\n@injectable()\nexport class ExecuteDeviceActionUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"ExecuteDeviceActionUseCase\");\n }\n\n /**\n * Executes a device action to a device through a device session.\n *\n * @param sessionId - The device session id.\n * @param deviceAction - The device action to execute\n * @returns An object containing an observable of the device action state, and a cancel function.\n */\n execute<\n Output,\n Error extends SdkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n Input,\n >({\n sessionId,\n deviceAction,\n }: ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error,\n IntermediateValue\n >): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return deviceSessionOrError.caseOf({\n // Case device session found\n Right: (deviceSession) =>\n deviceSession.executeDeviceAction<\n Output,\n Input,\n Error,\n IntermediateValue\n >(deviceAction),\n // Case device session not found\n Left: (error) => {\n this._logger.error(\"Error getting session\", {\n data: { error },\n });\n throw error;\n },\n });\n }\n}\n", "export const deviceActionTypes = {\n ExecuteDeviceActionUseCase: Symbol.for(\"ExecuteDeviceActionUseCase\"),\n};\n", "import { ContainerModule } from \"inversify\";\n\nimport { ExecuteDeviceActionUseCase } from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { deviceActionTypes } from \"./deviceActionTypes\";\n\ntype DeviceActionModuleArgs = Partial<{\n readonly stub: boolean;\n}>;\n\nexport const deviceActionModuleFactory = ({\n stub = false,\n}: DeviceActionModuleArgs = {}) =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(deviceActionTypes.ExecuteDeviceActionUseCase).to(\n ExecuteDeviceActionUseCase,\n );\n if (stub) {\n rebind(deviceActionTypes.ExecuteDeviceActionUseCase).to(StubUseCase);\n }\n },\n );\n", "import { Left, Right } from './Either.js';\nexport const Maybe = {\n of(value) {\n return just(value);\n },\n empty() {\n return nothing;\n },\n zero() {\n return nothing;\n },\n fromNullable(value) {\n return value == null ? nothing : just(value);\n },\n fromFalsy(value) {\n return value ? just(value) : nothing;\n },\n fromPredicate(pred, value) {\n switch (arguments.length) {\n case 1:\n return (value) => Maybe.fromPredicate(pred, value);\n default:\n return pred(value) ? just(value) : nothing;\n }\n },\n mapMaybe(f, list) {\n switch (arguments.length) {\n case 1:\n return (list) => Maybe.mapMaybe(f, list);\n default:\n return Maybe.catMaybes(list.map(f));\n }\n },\n catMaybes(list) {\n let res = [];\n for (const e of list) {\n if (e.isJust()) {\n res.push(e.extract());\n }\n }\n return res;\n },\n encase(thunk) {\n try {\n return just(thunk());\n }\n catch {\n return nothing;\n }\n },\n isMaybe(x) {\n return x instanceof Just || x instanceof Nothing;\n },\n sequence(maybes) {\n let res = [];\n for (const m of maybes) {\n if (m.isJust()) {\n res.push(m.extract());\n }\n else {\n return nothing;\n }\n }\n return just(res);\n },\n 'fantasy-land/of'(value) {\n return this.of(value);\n },\n 'fantasy-land/empty'() {\n return this.empty();\n },\n 'fantasy-land/zero'() {\n return this.zero();\n }\n};\nclass Just {\n constructor(__value) {\n this.__value = __value;\n this['fantasy-land/equals'] = this.equals;\n this['fantasy-land/map'] = this.map;\n this['fantasy-land/ap'] = this.ap;\n this['fantasy-land/alt'] = this.alt;\n this['fantasy-land/chain'] = this.chain;\n this['fantasy-land/reduce'] = this.reduce;\n this['fantasy-land/extend'] = this.extend;\n this['fantasy-land/filter'] = this.filter;\n }\n isJust() {\n return true;\n }\n isNothing() {\n return false;\n }\n inspect() {\n return `Just(${this.__value})`;\n }\n toString() {\n return this.inspect();\n }\n toJSON() {\n const value = this.__value;\n return value instanceof Date ? value.toJSON() : value;\n }\n equals(other) {\n return this.extract() === other.extract();\n }\n map(f) {\n return just(f(this.__value));\n }\n ap(maybeF) {\n return maybeF.isJust() ? this.map(maybeF.extract()) : nothing;\n }\n alt(_) {\n return this;\n }\n altLazy(_) {\n return this;\n }\n chain(f) {\n return f(this.__value);\n }\n chainNullable(f) {\n return Maybe.fromNullable(f(this.__value));\n }\n join() {\n return this.__value;\n }\n reduce(reducer, initialValue) {\n return reducer(initialValue, this.__value);\n }\n extend(f) {\n return just(f(this));\n }\n unsafeCoerce() {\n return this.__value;\n }\n caseOf(patterns) {\n return '_' in patterns ? patterns._() : patterns.Just(this.__value);\n }\n orDefault(_) {\n return this.__value;\n }\n orDefaultLazy(_) {\n return this.__value;\n }\n toList() {\n return [this.__value];\n }\n mapOrDefault(f, _) {\n return f(this.__value);\n }\n extract() {\n return this.__value;\n }\n extractNullable() {\n return this.__value;\n }\n toEither(_) {\n return Right(this.__value);\n }\n ifJust(effect) {\n return effect(this.__value), this;\n }\n ifNothing(_) {\n return this;\n }\n filter(pred) {\n return pred(this.__value) ? just(this.__value) : nothing;\n }\n}\nJust.prototype.constructor = Maybe;\nclass Nothing {\n constructor() {\n this['fantasy-land/equals'] = this.equals;\n this['fantasy-land/map'] = this.map;\n this['fantasy-land/ap'] = this.ap;\n this['fantasy-land/alt'] = this.alt;\n this['fantasy-land/chain'] = this.chain;\n this['fantasy-land/reduce'] = this.reduce;\n this['fantasy-land/extend'] = this.extend;\n this['fantasy-land/filter'] = this.filter;\n }\n isJust() {\n return false;\n }\n isNothing() {\n return true;\n }\n inspect() {\n return 'Nothing';\n }\n toString() {\n return this.inspect();\n }\n toJSON() {\n return this.__value;\n }\n equals(other) {\n return this.extract() === other.extract();\n }\n map(_) {\n return nothing;\n }\n ap(_) {\n return nothing;\n }\n alt(other) {\n return other;\n }\n altLazy(other) {\n return other();\n }\n chain(_) {\n return nothing;\n }\n chainNullable(_) {\n return nothing;\n }\n join() {\n return nothing;\n }\n reduce(_, initialValue) {\n return initialValue;\n }\n extend(_) {\n return nothing;\n }\n unsafeCoerce() {\n throw new Error('Maybe#unsafeCoerce was ran on a Nothing');\n }\n caseOf(patterns) {\n return '_' in patterns ? patterns._() : patterns.Nothing();\n }\n orDefault(defaultValue) {\n return defaultValue;\n }\n orDefaultLazy(getDefaultValue) {\n return getDefaultValue();\n }\n toList() {\n return [];\n }\n mapOrDefault(_, defaultValue) {\n return defaultValue;\n }\n extract() {\n return undefined;\n }\n extractNullable() {\n return null;\n }\n toEither(left) {\n return Left(left);\n }\n ifJust(_) {\n return this;\n }\n ifNothing(effect) {\n return effect(), this;\n }\n filter(_) {\n return nothing;\n }\n}\nNothing.prototype.constructor = Maybe;\n/** Constructs a Just. Represents an optional value that exists */\nconst just = (value) => new Just(value);\n/** Represents a missing value, you can think of it as a smart 'null' */\nconst nothing = new Nothing();\nexport { just as Just, nothing as Nothing };\n", "import { Just, Nothing } from './Maybe.js';\nexport const Either = {\n of(value) {\n return right(value);\n },\n lefts(list) {\n let result = [];\n for (const x of list) {\n if (x.isLeft()) {\n result.push(x.extract());\n }\n }\n return result;\n },\n rights(list) {\n let result = [];\n for (const x of list) {\n if (x.isRight()) {\n result.push(x.extract());\n }\n }\n return result;\n },\n encase(throwsF) {\n try {\n return right(throwsF());\n }\n catch (e) {\n return left(e);\n }\n },\n sequence(eithers) {\n let res = [];\n for (const e of eithers) {\n if (e.isLeft()) {\n return e;\n }\n res.push(e.extract());\n }\n return right(res);\n },\n isEither(x) {\n return x instanceof Left || x instanceof Right;\n },\n 'fantasy-land/of'(value) {\n return Either.of(value);\n }\n};\nclass Right {\n constructor(__value) {\n this.__value = __value;\n this._ = 'R';\n this['fantasy-land/bimap'] = this.bimap;\n this['fantasy-land/map'] = this.map;\n this['fantasy-land/ap'] = this.ap;\n this['fantasy-land/equals'] = this.equals;\n this['fantasy-land/chain'] = this.chain;\n this['fantasy-land/alt'] = this.alt;\n this['fantasy-land/reduce'] = this.reduce;\n this['fantasy-land/extend'] = this.extend;\n }\n isLeft() {\n return false;\n }\n isRight() {\n return true;\n }\n toJSON() {\n return this.__value;\n }\n inspect() {\n return `Right(${this.__value})`;\n }\n toString() {\n return this.inspect();\n }\n bimap(_, g) {\n return right(g(this.__value));\n }\n map(f) {\n return right(f(this.__value));\n }\n mapLeft(_) {\n return this;\n }\n ap(other) {\n return other.isRight() ? this.map(other.extract()) : other;\n }\n equals(other) {\n return other.isRight() ? this.__value === other.extract() : false;\n }\n chain(f) {\n return f(this.__value);\n }\n chainLeft(_) {\n return this;\n }\n join() {\n return this.__value;\n }\n alt(_) {\n return this;\n }\n altLazy(_) {\n return this;\n }\n reduce(reducer, initialValue) {\n return reducer(initialValue, this.__value);\n }\n extend(f) {\n return right(f(this));\n }\n unsafeCoerce() {\n return this.__value;\n }\n caseOf(patterns) {\n return '_' in patterns ? patterns._() : patterns.Right(this.__value);\n }\n leftOrDefault(defaultValue) {\n return defaultValue;\n }\n orDefault(_) {\n return this.__value;\n }\n orDefaultLazy(_) {\n return this.__value;\n }\n leftOrDefaultLazy(getDefaultValue) {\n return getDefaultValue();\n }\n ifLeft(_) {\n return this;\n }\n ifRight(effect) {\n return effect(this.__value), this;\n }\n toMaybe() {\n return Just(this.__value);\n }\n leftToMaybe() {\n return Nothing;\n }\n extract() {\n return this.__value;\n }\n swap() {\n return left(this.__value);\n }\n}\nRight.prototype.constructor = Either;\nclass Left {\n constructor(__value) {\n this.__value = __value;\n this._ = 'L';\n this['fantasy-land/bimap'] = this.bimap;\n this['fantasy-land/map'] = this.map;\n this['fantasy-land/ap'] = this.ap;\n this['fantasy-land/equals'] = this.equals;\n this['fantasy-land/chain'] = this.chain;\n this['fantasy-land/alt'] = this.alt;\n this['fantasy-land/reduce'] = this.reduce;\n this['fantasy-land/extend'] = this.extend;\n }\n isLeft() {\n return true;\n }\n isRight() {\n return false;\n }\n toJSON() {\n return this.__value;\n }\n inspect() {\n return `Left(${JSON.stringify(this.__value)})`;\n }\n toString() {\n return this.inspect();\n }\n bimap(f, _) {\n return left(f(this.__value));\n }\n map(_) {\n return this;\n }\n mapLeft(f) {\n return left(f(this.__value));\n }\n ap(other) {\n return other.isLeft() ? other : this;\n }\n equals(other) {\n return other.isLeft() ? other.extract() === this.__value : false;\n }\n chain(_) {\n return this;\n }\n chainLeft(f) {\n return f(this.__value);\n }\n join() {\n return this;\n }\n alt(other) {\n return other;\n }\n altLazy(other) {\n return other();\n }\n reduce(_, initialValue) {\n return initialValue;\n }\n extend(_) {\n return this;\n }\n unsafeCoerce() {\n if (this.__value instanceof Error) {\n throw this.__value;\n }\n throw new Error('Either#unsafeCoerce was ran on a Left');\n }\n caseOf(patterns) {\n return '_' in patterns ? patterns._() : patterns.Left(this.__value);\n }\n leftOrDefault(_) {\n return this.__value;\n }\n orDefault(defaultValue) {\n return defaultValue;\n }\n orDefaultLazy(getDefaultValue) {\n return getDefaultValue();\n }\n leftOrDefaultLazy(_) {\n return this.__value;\n }\n ifLeft(effect) {\n return effect(this.__value), this;\n }\n ifRight(_) {\n return this;\n }\n toMaybe() {\n return Nothing;\n }\n leftToMaybe() {\n return Just(this.__value);\n }\n extract() {\n return this.__value;\n }\n swap() {\n return right(this.__value);\n }\n}\nLeft.prototype.constructor = Either;\nconst left = (value) => new Left(value);\nconst right = (value) => new Right(value);\nexport { left as Left, right as Right };\n", "/** The identity function, returns the value it was given */\nexport const identity = (x) => x;\n/** Returns a function that always returns the same value. Also known as `const` in other languages */\nexport const always = (x) => () => x;\nexport const Order = {\n LT: 'LT',\n EQ: 'EQ',\n GT: 'GT'\n};\n/** Compares two values using the default \"<\" and \">\" operators */\nexport const compare = (x, y) => {\n if (x > y) {\n return Order.GT;\n }\n else if (x < y) {\n return Order.LT;\n }\n else {\n return Order.EQ;\n }\n};\n/** Maps the Order enum to the values expected by the standard ECMAScript library when doing comparison (Array.prototype.sort, for example) */\nexport const orderToNumber = (order) => {\n switch (order) {\n case Order.LT:\n return -1;\n case Order.EQ:\n return 0;\n case Order.GT:\n return 1;\n }\n};\n/** Takes a function that receives multiple arguments and returns a \"curried\" version of that function that can take any number of those arguments and if they are less than needed a new function that takes the rest of them will be returned */\nexport const curry = (fn) => function currify(...args) {\n return args.length >= fn.length\n ? fn.apply(undefined, args)\n : currify.bind(undefined, ...args);\n};\n", "import { Just, Nothing } from './Maybe.js';\nconst NonEmptyListConstructor = (list) => list;\nexport const NonEmptyList = Object.assign(NonEmptyListConstructor, {\n fromArray: (source) => NonEmptyList.isNonEmpty(source) ? Just(source) : Nothing,\n unsafeCoerce: (source) => {\n if (NonEmptyList.isNonEmpty(source)) {\n return source;\n }\n throw new Error('NonEmptyList#unsafeCoerce was ran on an empty array');\n },\n fromTuple: (source) => NonEmptyList(source.toArray()),\n head: (list) => list[0],\n last: (list) => list[list.length - 1],\n isNonEmpty: (list) => list.length > 0,\n tail: (list) => list.slice(1)\n});\n", "import { Either, Right, Left } from './Either.js';\nimport { identity } from './Function.js';\nimport { Maybe, Just, Nothing } from './Maybe.js';\nimport { NonEmptyList } from './NonEmptyList.js';\nconst serializeValue = (_, value) => {\n return typeof value === 'bigint' ? value.toString() : value;\n};\nconst isEmptySchema = (schema) => Object.keys(schema).length === 0;\nconst isObject = (obj) => typeof obj === 'object' && obj !== null && !Array.isArray(obj);\nconst reportError = (expectedType, input) => {\n let receivedString = '';\n switch (typeof input) {\n case 'undefined':\n receivedString = 'undefined';\n break;\n case 'object':\n receivedString =\n input === null\n ? 'null'\n : Array.isArray(input)\n ? 'an array with value ' + JSON.stringify(input, serializeValue)\n : 'an object with value ' + JSON.stringify(input, serializeValue);\n break;\n case 'boolean':\n receivedString = 'a boolean';\n break;\n case 'symbol':\n receivedString = 'a symbol';\n break;\n case 'function':\n receivedString = 'a function';\n break;\n case 'bigint':\n receivedString = `a bigint with value ${input.toString()}`;\n }\n receivedString =\n receivedString ||\n `a ${typeof input} with value ${JSON.stringify(input, serializeValue)}`;\n return `Expected ${expectedType}, but received ${receivedString}`;\n};\nconst removeOneOfWithSingleElement = (schema) => {\n const schemaKeys = Object.keys(schema);\n if (schemaKeys.length === 1 &&\n schema.oneOf?.length === 1 &&\n typeof schema.oneOf[0] === 'object') {\n Object.assign(schema, schema.oneOf[0]);\n delete schema.oneOf;\n }\n return schema;\n};\nconst flattenNestedOneOf = (schema) => {\n if (Array.isArray(schema.oneOf)) {\n for (let i = 0; i < schema.oneOf.length; i++) {\n const e = schema.oneOf[i];\n if (typeof e === 'object' && e.oneOf) {\n schema.oneOf.splice(i, 1);\n schema.oneOf.push(...e.oneOf);\n return optimizeSchema(schema);\n }\n }\n }\n return schema;\n};\nconst optimizeSchema = (schema) => {\n flattenNestedOneOf(schema);\n removeOneOfWithSingleElement(schema);\n return schema;\n};\nexport const Codec = {\n /** Creates a codec for any JSON object */\n interface(properties) {\n const keys = Object.keys(properties);\n const decode = (input) => {\n if (!isObject(input)) {\n return Left(reportError('an object', input));\n }\n const result = {};\n for (const key of keys) {\n if (!input.hasOwnProperty(key) &&\n !properties[key]._isOptional) {\n return Left(`Problem with property \"${key}\": it does not exist in received object ${JSON.stringify(input, serializeValue)}`);\n }\n const decodedProperty = properties[key].decode(input[key]);\n if (decodedProperty.isLeft()) {\n return Left(`Problem with the value of property \"${key}\": ${decodedProperty.extract()}`);\n }\n const value = decodedProperty.extract();\n if (value !== undefined) {\n result[key] = value;\n }\n }\n return Right(result);\n };\n const encode = (input) => {\n const result = {};\n for (const key of keys) {\n result[key] = properties[key].encode(input[key]);\n }\n return result;\n };\n return {\n decode,\n encode,\n unsafeDecode: (input) => decode(input).mapLeft(Error).unsafeCoerce(),\n schema: () => keys.reduce((acc, key) => {\n const isOptional = properties[key]._isOptional;\n if (!isOptional) {\n acc.required.push(key);\n }\n acc.properties[key] = optimizeSchema(properties[key].schema());\n return acc;\n }, {\n type: 'object',\n properties: {},\n required: []\n })\n };\n },\n /** Creates a codec for any type, you can add your own deserialization/validation logic in the decode argument */\n custom({ decode, encode, schema }) {\n return {\n decode,\n encode,\n unsafeDecode: (input) => decode(input).mapLeft(Error).unsafeCoerce(),\n schema: schema ?? (() => ({}))\n };\n }\n};\n/** A codec for any string value. Most of the time you will use it to implement an interface codec (see the Codec#interface example above). Encoding a string acts like the identity function */\nexport const string = Codec.custom({\n decode: (input) => typeof input === 'string'\n ? Right(input)\n : Left(reportError('a string', input)),\n encode: identity,\n schema: () => ({ type: 'string' })\n});\n/** A codec for any number value. This includes anything that has a typeof number - NaN, Infinity etc. Encoding a number acts like the identity function */\nexport const number = Codec.custom({\n decode: (input) => typeof input === 'number'\n ? Right(input)\n : Left(reportError('a number', input)),\n encode: identity,\n schema: () => ({ type: 'number' })\n});\n/** A codec for null only */\nexport const nullType = Codec.custom({\n decode: (input) => input === null ? Right(input) : Left(reportError('a null', input)),\n encode: identity,\n schema: () => ({ type: 'null' })\n});\nconst undefinedType = Codec.custom({\n decode: (input) => input === undefined\n ? Right(input)\n : Left(reportError('an undefined', input)),\n encode: identity\n});\nexport const optional = (codec) => ({\n ...oneOf([codec, undefinedType]),\n schema: codec.schema,\n _isOptional: true\n});\n/** A codec for a value T or null. Keep in mind if you use `nullable` inside `Codec.interface` the property will still be required */\nexport const nullable = (codec) => oneOf([codec, nullType]);\n/** A codec for a boolean value */\nexport const boolean = Codec.custom({\n decode: (input) => typeof input === 'boolean'\n ? Right(input)\n : Left(reportError('a boolean', input)),\n encode: identity,\n schema: () => ({ type: 'boolean' })\n});\n/** A codec that can never fail, but of course you get no type information. Encoding an unknown acts like the identity function */\nexport const unknown = Codec.custom({\n decode: Right,\n encode: identity,\n schema: () => ({})\n});\n/** A codec for a TypeScript enum */\nexport const enumeration = (e) => {\n const enumValues = Object.values(e);\n return Codec.custom({\n decode: (input) => {\n return oneOf([string, number])\n .decode(input)\n .chain((x) => {\n const enumIndex = enumValues.indexOf(x);\n return enumIndex !== -1\n ? Right(enumValues[enumIndex])\n : Left(reportError('an enum member', input));\n });\n },\n encode: identity,\n schema: () => ({ enum: enumValues })\n });\n};\n/** A codec combinator that receives a list of codecs and runs them one after another during decode and resolves to whichever returns Right or to Left if all fail */\nexport const oneOf = (codecs) => Codec.custom({\n decode: (input) => {\n let errors = [];\n for (const codec of codecs) {\n const res = codec.decode(input);\n if (res.isRight()) {\n return res;\n }\n else {\n errors.push(res.extract());\n }\n }\n return Left(`One of the following problems occured: ${errors\n .map((err, i) => `(${i}) ${err}`)\n .join(', ')}`);\n },\n encode: (input) => {\n for (const codec of codecs) {\n const res = Either.encase(() => codec.encode(input))\n .mapLeft((_) => '')\n .chain(codec.decode);\n if (res.isRight()) {\n return codec.encode(input);\n }\n }\n return input;\n },\n schema: () => ({ oneOf: codecs.map((x) => x.schema()) })\n});\n/** A codec for an array */\nexport const array = (codec) => Codec.custom({\n decode: (input) => {\n if (!Array.isArray(input)) {\n return Left(reportError('an array', input));\n }\n else {\n const result = [];\n for (let i = 0; i < input.length; i++) {\n const decoded = codec.decode(input[i]);\n if (decoded.isRight()) {\n result.push(decoded.extract());\n }\n else {\n return Left(`Problem with the value at index ${i}: ${decoded.extract()}`);\n }\n }\n return Right(result);\n }\n },\n encode: (input) => input.map(codec.encode),\n schema: () => ({\n type: 'array',\n items: codec.schema()\n })\n});\nconst numberString = Codec.custom({\n decode: (input) => string\n .decode(input)\n .chain((x) => isFinite(+x) ? Right(x) : Left(reportError('a number', input))),\n encode: identity,\n schema: number.schema\n});\n/** A codec for an object without specific properties, its restrictions are equivalent to the Record<K, V> type so you can only check for number and string keys */\nexport const record = (keyCodec, valueCodec) => Codec.custom({\n decode: (input) => {\n const result = {};\n const keyCodecOverride = keyCodec === number ? numberString : keyCodec;\n if (!isObject(input)) {\n return Left(reportError('an object', input));\n }\n for (const key of Object.keys(input)) {\n if (input.hasOwnProperty(key)) {\n const decodedKey = keyCodecOverride.decode(key);\n const decodedValue = valueCodec.decode(input[key]);\n if (decodedKey.isRight() && decodedValue.isRight()) {\n result[decodedKey.extract()] = decodedValue.extract();\n }\n else if (decodedKey.isLeft()) {\n return Left(`Problem with key type of property \"${key}\": ${decodedKey.extract()}`);\n }\n else if (decodedValue.isLeft()) {\n return Left(`Problem with the value of property \"${key}\": ${decodedValue.extract()}`);\n }\n }\n }\n return Right(result);\n },\n encode: (input) => {\n const result = {};\n for (const key in input) {\n if (input.hasOwnProperty(key)) {\n result[keyCodec.encode(key)] = valueCodec.encode(input[key]);\n }\n }\n return result;\n },\n schema: () => ({\n type: 'object',\n additionalProperties: valueCodec.schema()\n })\n});\n/** A codec that only succeeds decoding when the value is exactly what you've constructed the codec with */\nexport const exactly = (...expectedValues) => Codec.custom({\n decode: (input) => expectedValues.includes(input)\n ? Right(input)\n : Left(reportError(expectedValues.map((x) => JSON.stringify(x)).join(', '), input)),\n encode: identity,\n schema: () => ({\n oneOf: expectedValues.map((value) => ({\n type: typeof value,\n enum: [value]\n }))\n })\n});\n/** A special codec used when dealing with recursive data structures, it allows a codec to be recursively defined by itself */\nexport const lazy = (getCodec) => Codec.custom({\n decode: (input) => getCodec().decode(input),\n encode: (input) => getCodec().encode(input),\n schema: () => ({\n $comment: 'Lazy codecs are not supported when generating a JSON schema'\n })\n});\n/** A codec for purify's Maybe type. Encode runs Maybe#toJSON, which effectively returns the value inside if it's a Just or undefined if it's Nothing */\nexport const maybe = (codec) => {\n const baseCodec = Codec.custom({\n decode: (input) => Maybe.fromNullable(input).caseOf({\n Just: (x) => codec.decode(x).map(Just),\n Nothing: () => Right(Nothing)\n }),\n encode: (input) => input.map(codec.encode).orDefault(undefined),\n schema: () => isEmptySchema(codec.schema())\n ? {}\n : { oneOf: [codec.schema(), { type: 'null' }] }\n });\n return {\n ...baseCodec,\n _isOptional: true\n };\n};\n/** A codec for purify's NEL type */\nexport const nonEmptyList = (codec) => {\n const arrayCodec = array(codec);\n return Codec.custom({\n decode: (input) => arrayCodec\n .decode(input)\n .chain((x) => NonEmptyList.fromArray(x).toEither(`Expected an array with one or more elements, but received an empty array`)),\n encode: arrayCodec.encode,\n schema: () => ({ ...arrayCodec.schema(), minItems: 1 })\n });\n};\n/** The same as the array decoder, but accepts a fixed amount of array elements and you can specify each element type, much like the tuple type */\nexport const tuple = (codecs) => Codec.custom({\n decode: (input) => {\n if (!Array.isArray(input)) {\n return Left(reportError('an array', input));\n }\n else if (codecs.length !== input.length) {\n return Left(`Expected an array of length ${codecs.length}, but received an array with length of ${input.length}`);\n }\n else {\n const result = [];\n for (let i = 0; i < codecs.length; i++) {\n const decoded = codecs[i].decode(input[i]);\n if (decoded.isRight()) {\n result.push(decoded.extract());\n }\n else {\n return Left(`Problem with the value at index ${i}: ${decoded.extract()}`);\n }\n }\n return Right(result);\n }\n },\n encode: (input) => input.map((x, i) => codecs[i].encode(x)),\n schema: () => ({\n type: 'array',\n items: codecs.map((x) => x.schema()),\n additionalItems: false,\n minItems: codecs.length,\n maxItems: codecs.length\n })\n});\n/** A codec for a parsable date string, on successful decoding it resolves to a Date object. The validity of the date string during decoding is decided by the browser implementation of Date.parse. Encode runs toISOString on the passed in date object */\nexport const date = Codec.custom({\n decode: (input) => string\n .decode(input)\n .mapLeft((err) => `Problem with date string: ${err}`)\n .chain((x) => Number.isNaN(Date.parse(x))\n ? Left('Expected a valid date string, but received a string that cannot be parsed')\n : Right(new Date(x))),\n encode: (input) => input.toISOString(),\n schema: () => ({ type: 'string', format: 'date-time' })\n});\n/** Creates an intersection between two codecs. If the provided codecs are not for an object, the second decode result will be returned */\nexport const intersect = (t, u) => Codec.custom({\n decode: (input) => {\n const et = t.decode(input);\n if (et.isLeft()) {\n return et;\n }\n const eu = u.decode(input);\n if (eu.isLeft()) {\n return eu;\n }\n const valuet = et.extract();\n const valueu = eu.extract();\n return isObject(valuet) && isObject(valueu)\n ? Right(Object.assign(valuet, valueu))\n : Right(valueu);\n },\n encode: (input) => {\n const valuet = t.encode(input);\n const valueu = u.encode(input);\n return isObject(valuet) && isObject(valueu)\n ? Object.assign(valuet, valueu)\n : valueu;\n },\n schema: () => ({ allOf: [t, u].map((x) => x.schema()) })\n});\n/** A codec for the built-in Map type */\nexport const map = (keyCodec, valueCodec) => Codec.custom({\n decode: (input) => array(tuple([keyCodec, valueCodec]))\n .decode(input)\n .map((pairs) => new Map(pairs)),\n encode: (input) => Array.from(input.entries()).map(([k, v]) => [\n keyCodec.encode(k),\n valueCodec.encode(v)\n ]),\n schema: () => ({\n type: 'array',\n items: {\n type: 'array',\n items: [keyCodec.schema(), valueCodec.schema()],\n additionalItems: false,\n minItems: 2,\n maxItems: 2\n }\n })\n});\nconst oneofRegex = /^(One of the following problems occured:)\\s/;\nconst oneOfCounterRegex = /\\(\\d\\)\\s/;\nconst oneOfSeparatorRegex = /\\, (?=\\()/g;\nconst failureRegex = /^(Expected ).+(, but received )/;\nconst failureReceivedSeparator = ' with value';\nconst missingPropertyMarker = 'Problem with property \"';\nconst badPropertyMarker = 'Problem with the value of property \"';\nconst badPropertyKeyMarker = 'Problem with key type of property \"';\nconst dateFailureMarket = 'Problem with date string: ';\nconst indexMarker = 'Problem with the value at index ';\nconst expectedTypesMap = {\n 'an object': 'object',\n 'a number': 'number',\n 'a string': 'string',\n 'an undefined': 'undefined',\n 'a boolean': 'boolean',\n 'an array': 'array',\n 'a null': 'null',\n 'an enum member': 'enum'\n};\nconst receivedTypesMap = {\n 'a string': 'string',\n 'a number': 'number',\n null: 'null',\n undefined: 'undefined',\n 'a boolean': 'boolean',\n 'an array': 'array',\n 'an object': 'object',\n 'a symbol': 'symbol',\n 'a function': 'function',\n 'a bigint': 'bigint'\n};\nconst receivedTypesWithoutValue = [\n 'null',\n 'undefined',\n 'boolean',\n 'symbol',\n 'function',\n 'bigint'\n];\n/** Turns a string error message produced by a built-in purify codec into a meta object */\nexport const parseError = (error) => {\n const oneOfCheck = error.match(oneofRegex);\n // One of the following problems occured: (0) *, (1) *\n if (oneOfCheck) {\n const remainer = error.replace(oneOfCheck[0], '');\n return {\n type: 'oneOf',\n errors: remainer\n .split(oneOfSeparatorRegex)\n .map((x) => parseError(x.replace(x.match(oneOfCounterRegex)[0], '')))\n };\n }\n const failureCheck = error.match(failureRegex);\n // Expected an object, but received an array with value []\n if (failureCheck) {\n const receivedTypeRaw = error.split(failureCheck[2]).pop();\n const receivedType = receivedTypesMap[receivedTypeRaw.split(failureReceivedSeparator)[0]];\n if (receivedType) {\n const expectedTypeRaw = error\n .replace(failureCheck[1], '')\n .split(failureCheck[2])[0];\n return {\n type: 'failure',\n expectedType: expectedTypesMap[expectedTypeRaw],\n receivedType,\n receivedValue: receivedTypesWithoutValue.includes(receivedType)\n ? undefined\n : JSON.parse(receivedTypeRaw.split(failureReceivedSeparator).pop())\n };\n }\n }\n // Problem with property \"a\": it does not exist in received object {}\n if (error.startsWith(missingPropertyMarker)) {\n const property = error.replace(missingPropertyMarker, '').split('\": ')[0];\n return {\n type: 'property',\n property,\n error: {\n type: 'failure',\n receivedType: 'undefined'\n }\n };\n }\n // Problem with the value of property \"a\": *\n // Problem with key type of property \"a\": *\n if (error.startsWith(badPropertyMarker) ||\n error.startsWith(badPropertyKeyMarker)) {\n const [property, ...restOfError] = error\n .replace(badPropertyMarker, '')\n .replace(badPropertyKeyMarker, '')\n .split(/\": (.+)/);\n return {\n type: 'property',\n property: property,\n error: parseError(restOfError.join(''))\n };\n }\n // Problem with date string: *\n if (error.startsWith(dateFailureMarket)) {\n return parseError(error.replace(dateFailureMarket, ''));\n }\n // Problem with the value at index 0: *\n if (error.startsWith(indexMarker)) {\n const [index, ...restOfError] = error\n .replace(indexMarker, '')\n .split(/: (.+)/);\n return {\n type: 'index',\n index: Number(index),\n error: parseError(restOfError.join(''))\n };\n }\n return { type: 'custom', message: error };\n};\n", "class TupleImpl {\n constructor(first, second) {\n this.first = first;\n this.second = second;\n this.length = 2;\n this['fantasy-land/equals'] = this.equals;\n this['fantasy-land/bimap'] = this.bimap;\n this['fantasy-land/map'] = this.map;\n this['fantasy-land/reduce'] = this.reduce;\n this['fantasy-land/ap'] = this.ap;\n this[0] = first;\n this[1] = second;\n }\n *[Symbol.iterator]() {\n yield this.first;\n yield this.second;\n }\n toJSON() {\n return this.toArray();\n }\n inspect() {\n return `Tuple(${JSON.stringify(this.first)}, ${JSON.stringify(this.second)})`;\n }\n toString() {\n return this.inspect();\n }\n fst() {\n return this.first;\n }\n snd() {\n return this.second;\n }\n equals(other) {\n return this.first === other.fst() && this.second === other.snd();\n }\n bimap(f, g) {\n return Tuple(f(this.first), g(this.second));\n }\n mapFirst(f) {\n return Tuple(f(this.first), this.second);\n }\n map(f) {\n return Tuple(this.first, f(this.second));\n }\n reduce(reducer, initialValue) {\n return reducer(initialValue, this.second);\n }\n toArray() {\n return [this.first, this.second];\n }\n swap() {\n return Tuple(this.second, this.first);\n }\n ap(f) {\n return Tuple(this.first, f.snd()(this.second));\n }\n every(pred) {\n return pred(this.first) && pred(this.second);\n }\n some(pred) {\n return pred(this.first) || pred(this.second);\n }\n}\nexport const Tuple = Object.assign((fst, snd) => new TupleImpl(fst, snd), {\n fromArray: ([fst, snd]) => {\n return Tuple(fst, snd);\n },\n fanout: (...args) => {\n const [f, g, value] = args;\n switch (args.length) {\n case 3:\n return Tuple(f(value), g(value));\n case 2:\n return (value) => Tuple.fanout(f, g, value);\n default:\n return (g) => (value) => Tuple.fanout(f, g, value);\n }\n }\n});\nTupleImpl.prototype.constructor = Tuple;\n", "var _a;\nimport { Either, Left, Right } from './Either.js';\nimport { MaybeAsync } from './MaybeAsync.js';\nconst helpers = {\n liftEither(either) {\n if (either.isRight()) {\n return Promise.resolve(either.extract());\n }\n throw either.extract();\n },\n fromPromise(promise) {\n return promise.then(helpers.liftEither);\n },\n throwE(error) {\n throw error;\n }\n};\nclass EitherAsyncImpl {\n constructor(runPromise) {\n this.runPromise = runPromise;\n this[_a] = 'EitherAsync';\n this['fantasy-land/chain'] = this.chain;\n this['fantasy-land/alt'] = this.alt;\n this.then = (onfulfilled, onrejected) => {\n return this.run().then(onfulfilled, onrejected);\n };\n }\n leftOrDefault(defaultValue) {\n return this.run().then((x) => x.leftOrDefault(defaultValue));\n }\n orDefault(defaultValue) {\n return this.run().then((x) => x.orDefault(defaultValue));\n }\n join() {\n return EitherAsync(async (helpers) => {\n const either = await this;\n if (either.isRight()) {\n const nestedEither = await either.extract();\n return helpers.liftEither(nestedEither);\n }\n return helpers.liftEither(either);\n });\n }\n ap(eitherF) {\n return EitherAsync(async (helpers) => {\n const otherValue = await eitherF;\n if (otherValue.isRight()) {\n const thisValue = await this.run();\n if (thisValue.isRight()) {\n return otherValue.extract()(thisValue.extract());\n }\n else {\n return helpers.liftEither(thisValue);\n }\n }\n return helpers.liftEither(otherValue);\n });\n }\n alt(other) {\n return EitherAsync(async (helpers) => {\n const thisValue = await this.run();\n if (thisValue.isRight()) {\n return thisValue.extract();\n }\n else {\n const otherValue = await other;\n return helpers.liftEither(otherValue);\n }\n });\n }\n extend(f) {\n return EitherAsync(async (helpers) => {\n const either = await this.run();\n if (either.isRight()) {\n const v = EitherAsync.liftEither(either);\n return helpers.liftEither(Right(f(v)));\n }\n return helpers.liftEither(either);\n });\n }\n async run() {\n try {\n return Right(await this.runPromise(helpers));\n }\n catch (e) {\n return Left(e);\n }\n }\n bimap(f, g) {\n return EitherAsync(async (helpers) => {\n const either = await this.run();\n try {\n return (await helpers.liftEither(either.bimap(f, g)));\n }\n catch (e) {\n throw await e;\n }\n });\n }\n map(f) {\n return EitherAsync((helpers) => this.runPromise(helpers).then(f));\n }\n mapLeft(f) {\n return EitherAsync(async (helpers) => {\n try {\n return await this.runPromise(helpers);\n }\n catch (e) {\n throw await f(e);\n }\n });\n }\n chain(f) {\n return EitherAsync(async (helpers) => {\n const value = await this.runPromise(helpers);\n return helpers.fromPromise(f(value));\n });\n }\n chainLeft(f) {\n return EitherAsync(async (helpers) => {\n try {\n return await this.runPromise(helpers);\n }\n catch (e) {\n return helpers.fromPromise(f(e));\n }\n });\n }\n toMaybeAsync() {\n return MaybeAsync(async ({ liftMaybe }) => {\n const either = await this.run();\n return liftMaybe(either.toMaybe());\n });\n }\n swap() {\n return EitherAsync(async (helpers) => {\n const either = await this.run();\n if (either.isRight())\n helpers.throwE(either.extract());\n return helpers.liftEither(Right(either.extract()));\n });\n }\n ifLeft(effect) {\n return EitherAsync(async (helpers) => {\n const either = await this.run();\n either.ifLeft(effect);\n return helpers.liftEither(either);\n });\n }\n ifRight(effect) {\n return EitherAsync(async (helpers) => {\n const either = await this.run();\n either.ifRight(effect);\n return helpers.liftEither(either);\n });\n }\n void() {\n return this.map((_) => { });\n }\n caseOf(patterns) {\n return this.run().then((x) => x.caseOf(patterns));\n }\n finally(effect) {\n return EitherAsync(({ fromPromise }) => fromPromise(this.run().finally(effect)));\n }\n}\n_a = Symbol.toStringTag;\nexport const EitherAsync = Object.assign((runPromise) => new EitherAsyncImpl(runPromise), {\n fromPromise: (f) => EitherAsync(({ fromPromise: fP }) => fP(f())),\n liftEither: (either) => EitherAsync(({ liftEither }) => liftEither(either)),\n lefts: (list) => Promise.all(list.map((x) => x.run())).then(Either.lefts),\n rights: (list) => Promise.all(list.map((x) => x.run())).then(Either.rights),\n sequence: (eas) => EitherAsync(async (helpers) => {\n let res = [];\n for await (const e of eas) {\n if (e.isLeft()) {\n return helpers.liftEither(e);\n }\n res.push(e.extract());\n }\n return helpers.liftEither(Right(res));\n }),\n all: (eas) => EitherAsync.fromPromise(async () => Promise.all(eas).then(Either.sequence))\n});\nEitherAsyncImpl.prototype.constructor = EitherAsync;\n", "var _a;\nimport { Maybe, Just, Nothing } from './Maybe.js';\nimport { EitherAsync } from './EitherAsync.js';\nconst helpers = {\n liftMaybe(maybe) {\n if (maybe.isJust()) {\n return Promise.resolve(maybe.extract());\n }\n throw Nothing;\n },\n fromPromise(promise) {\n return promise.then(helpers.liftMaybe);\n }\n};\nclass MaybeAsyncImpl {\n constructor(runPromise) {\n this.runPromise = runPromise;\n this[_a] = 'MaybeAsync';\n this['fantasy-land/chain'] = this.chain;\n this['fantasy-land/filter'] = this.filter;\n this['fantasy-land/alt'] = this.alt;\n }\n orDefault(defaultValue) {\n return this.run().then((x) => x.orDefault(defaultValue));\n }\n join() {\n return MaybeAsync(async (helpers) => {\n const maybe = await this.run();\n if (maybe.isJust()) {\n const nestedMaybe = await maybe.extract();\n return helpers.liftMaybe(nestedMaybe);\n }\n return helpers.liftMaybe(Nothing);\n });\n }\n ap(maybeF) {\n return MaybeAsync(async (helpers) => {\n const otherValue = await maybeF;\n if (otherValue.isJust()) {\n const thisValue = await this.run();\n if (thisValue.isJust()) {\n return otherValue.extract()(thisValue.extract());\n }\n else {\n return helpers.liftMaybe(Nothing);\n }\n }\n return helpers.liftMaybe(Nothing);\n });\n }\n alt(other) {\n return MaybeAsync(async (helpers) => {\n const thisValue = await this.run();\n if (thisValue.isJust()) {\n return thisValue.extract();\n }\n else {\n const otherValue = await other;\n return helpers.liftMaybe(otherValue);\n }\n });\n }\n extend(f) {\n return MaybeAsync(async (helpers) => {\n const maybe = await this.run();\n if (maybe.isJust()) {\n const v = MaybeAsync.liftMaybe(maybe);\n return helpers.liftMaybe(Just(f(v)));\n }\n return helpers.liftMaybe(Nothing);\n });\n }\n filter(pred) {\n return MaybeAsync(async (helpers) => {\n const value = await this.run();\n return helpers.liftMaybe(value.filter(pred));\n });\n }\n async run() {\n try {\n return Just(await this.runPromise(helpers));\n }\n catch {\n return Nothing;\n }\n }\n map(f) {\n return MaybeAsync((helpers) => this.runPromise(helpers).then(f));\n }\n chain(f) {\n return MaybeAsync(async (helpers) => {\n const value = await this.runPromise(helpers);\n return helpers.fromPromise(f(value));\n });\n }\n toEitherAsync(error) {\n return EitherAsync(async ({ liftEither }) => {\n const maybe = await this.run();\n return liftEither(maybe.toEither(error));\n });\n }\n ifJust(effect) {\n return MaybeAsync(async (helpers) => {\n const maybe = await this.run();\n maybe.ifJust(effect);\n return helpers.liftMaybe(maybe);\n });\n }\n ifNothing(effect) {\n return MaybeAsync(async (helpers) => {\n const maybe = await this.run();\n maybe.ifNothing(effect);\n return helpers.liftMaybe(maybe);\n });\n }\n void() {\n return this.map((_) => { });\n }\n caseOf(patterns) {\n return this.run().then((x) => x.caseOf(patterns));\n }\n finally(effect) {\n return MaybeAsync(({ fromPromise }) => fromPromise(this.run().finally(effect)));\n }\n then(onfulfilled, onrejected) {\n return this.run().then(onfulfilled, onrejected);\n }\n}\n_a = Symbol.toStringTag;\nexport const MaybeAsync = Object.assign((runPromise) => new MaybeAsyncImpl(runPromise), {\n catMaybes: (list) => Promise.all(list).then(Maybe.catMaybes),\n fromPromise: (f) => MaybeAsync(({ fromPromise: fP }) => fP(f())),\n liftMaybe: (maybe) => MaybeAsync(({ liftMaybe }) => liftMaybe(maybe))\n});\nMaybeAsyncImpl.prototype.constructor = MaybeAsync;\n", "// Domain scoped types\n\nexport type Config = {\n version: string;\n name: string;\n};\n\n/**\n * Checks if the provided object is a valid Config object.\n * @param obj - The object to be checked.\n * @returns A boolean indicating whether the object is a Config object.\n */\nexport function isConfig(obj: unknown): obj is Config {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"version\" in obj &&\n \"name\" in obj &&\n typeof obj.version === \"string\" &&\n typeof obj.name === \"string\"\n );\n}\n", "export class ApiCallError {\n readonly _tag = \"ApiCallError\";\n originalError?: Error;\n constructor(readonly err?: Error) {\n this.originalError = err;\n }\n}\n\nexport class ParseResponseError {\n readonly _tag = \"ParseResponseError\";\n originalError?: Error;\n constructor(readonly err?: Error) {\n this.originalError = err;\n }\n}\n\nexport class JSONParseError {\n readonly _tag = \"JSONParseError\";\n originalError?: Error;\n constructor(readonly err?: Error) {\n this.originalError = err;\n }\n}\n\nexport type RemoteConfigFailure =\n | ApiCallError\n | ParseResponseError\n | JSONParseError;\n\nexport class ReadFileError {\n readonly _tag = \"ReadFileError\";\n originalError?: Error;\n constructor(readonly err?: Error) {\n this.originalError = err;\n }\n}\n\nexport type LocalConfigFailure = JSONParseError | ReadFileError;\n", "{\n \"name\": \"@ledgerhq/device-management-kit\",\n \"version\": \"0.4.0\",\n \"license\": \"MIT\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/types/index.d.ts\",\n \"import\": \"./lib/esm/index.js\",\n \"require\": \"./lib/cjs/index.js\"\n },\n \"./*\": {\n \"types\": \"./lib/types/*\"\n }\n },\n \"files\": [\n \"./lib\"\n ],\n \"scripts\": {\n \"prebuild\": \"rimraf lib\",\n \"build\": \"pnpm lmdk-build --entryPoints index.ts --tsconfig tsconfig.prod.json\",\n \"dev\": \"concurrently \\\"pnpm watch:builds\\\" \\\"pnpm watch:types\\\"\",\n \"watch:builds\": \"pnpm lmdk-watch --entryPoints index.ts --tsconfig tsconfig.prod.json\",\n \"watch:types\": \"concurrently \\\"tsc --watch -p tsconfig.prod.json\\\" \\\"tsc-alias --watch -p tsconfig.prod.json\\\"\",\n \"lint\": \"eslint\",\n \"lint:fix\": \"pnpm lint --fix\",\n \"postpack\": \"find . -name '*.tgz' -exec cp {} ../../dist/ \\\\; \",\n \"prettier\": \"prettier . --check\",\n \"prettier:fix\": \"prettier . --write\",\n \"test\": \"jest\",\n \"test:watch\": \"pnpm test -- --watch\",\n \"test:coverage\": \"pnpm test -- --coverage\",\n \"typecheck\": \"tsc --noEmit\",\n \"module:create\": \"pnpm hygen core-module with-prompt\"\n },\n \"dependencies\": {\n \"@ledgerhq/device-sdk-transport-mock\": \"workspace:*\",\n \"@sentry/minimal\": \"^6.19.7\",\n \"@statelyai/inspect\": \"^0.4.0\",\n \"axios\": \"^1.7.7\",\n \"inversify\": \"^6.0.2\",\n \"inversify-logger-middleware\": \"^3.1.0\",\n \"purify-ts\": \"^2.1.0\",\n \"reflect-metadata\": \"^0.2.2\",\n \"rxjs\": \"^7.8.1\",\n \"semver\": \"^7.6.3\",\n \"uuid\": \"^10.0.0\",\n \"xstate\": \"^5.18.2\"\n },\n \"devDependencies\": {\n \"@ledgerhq/esbuild-tools\": \"workspace:*\",\n \"@ledgerhq/eslint-config-dsdk\": \"workspace:*\",\n \"@ledgerhq/jest-config-dsdk\": \"workspace:*\",\n \"@ledgerhq/prettier-config-dsdk\": \"workspace:*\",\n \"@ledgerhq/tsconfig-dsdk\": \"workspace:*\",\n \"@types/semver\": \"^7.5.8\",\n \"@types/uuid\": \"^10.0.0\",\n \"@types/w3c-web-hid\": \"^1.0.6\",\n \"ts-node\": \"^10.9.2\"\n }\n}\n", "import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { Config, isConfig } from \"@internal/config/model/Config\";\nimport {\n JSONParseError,\n LocalConfigFailure,\n ReadFileError,\n} from \"@internal/config/model/Errors\";\nimport pkg from \"@root/package.json\";\n\nimport { LocalConfigDataSource } from \"./ConfigDataSource\";\n\nconst version = {\n name: pkg.name,\n version: pkg.version,\n};\n\nexport const stubFsReadFile = () => JSON.stringify(version);\n\n@injectable()\n/**\n * The data source for retrieving local configuration.\n */\nexport class FileLocalConfigDataSource implements LocalConfigDataSource {\n /**\n * Retrieves the local configuration.\n * @returns An `Either` containing either a `LocalConfigFailure` or a `Config` object.\n */\n getConfig(): Either<LocalConfigFailure, Config> {\n return Either.encase(() => stubFsReadFile())\n .mapLeft((error) => new ReadFileError(error))\n .chain((str) => {\n return Either.encase(() => {\n const config: unknown = JSON.parse(str);\n if (isConfig(config)) {\n return config;\n }\n throw new Error(\"Invalid config file\");\n }).mapLeft((error) => new JSONParseError(error));\n });\n }\n}\n", "import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { Config } from \"@internal/config/model/Config\";\n\nimport { LocalConfigDataSource } from \"./ConfigDataSource\";\n\n/**\n *\n * class StubLocalConfigDataSource\n *\n */\n@injectable()\nexport class StubLocalConfigDataSource implements LocalConfigDataSource {\n getConfig(): Either<never, Config> {\n return Either.of({\n name: \"DeviceSDK\",\n version: \"0.0.0-stub.1\",\n });\n }\n}\n", "import { injectable } from \"inversify\";\nimport { Either, Left } from \"purify-ts\";\n\nimport { Config } from \"@internal/config/model/Config\";\nimport {\n ApiCallError,\n JSONParseError,\n ParseResponseError,\n RemoteConfigFailure,\n} from \"@internal/config/model/Errors\";\n\nimport { RemoteConfigDataSource } from \"./ConfigDataSource\";\nimport { ConfigDto } from \"./Dto\";\n\n/**\n * class RemoteRestConfigDataSource\n * This is a remote data source that reads the config from a remote API (example).\n */\n@injectable()\nexport class RestRemoteConfigDataSource implements RemoteConfigDataSource {\n async getConfig(): Promise<Either<RemoteConfigFailure, Config>> {\n const call = await this._callApi();\n if (call.isLeft()) {\n return Left(new ApiCallError(call.extract()));\n }\n\n if (!call.extract().ok) {\n return Left(new ApiCallError(new Error(\"response not ok\")));\n }\n\n const json = await call.extract().json();\n if (json.isLeft()) {\n return Left(new JSONParseError());\n }\n\n return json\n .chain((dto) => this._parseResponse(dto))\n .map((config) => config);\n }\n\n // Parser for the Dto\n // parserResponse: ConfigDto => Config\n private _parseResponse(dto: ConfigDto): Either<ParseResponseError, Config> {\n const { name, version } = dto;\n if (!name || !version) {\n return Left(new ParseResponseError());\n }\n return Either.of({ name, version });\n }\n\n private _callApi(): Promise<\n Either<\n never,\n {\n ok: boolean;\n json: () => Promise<Either<JSONParseError, ConfigDto>>;\n }\n >\n > {\n return new Promise((res) => {\n res(\n Either.of({\n ok: true,\n json: async () =>\n new Promise((r) => {\n r(\n Either.of({\n name: \"DeviceSDK\",\n version: \"0.0.0-fake.1\",\n yolo: \"yolo\",\n }),\n );\n }),\n }),\n );\n });\n }\n}\n", "import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { Config } from \"@internal/config/model/Config\";\n\nimport { RemoteConfigDataSource } from \"./ConfigDataSource\";\n\n/**\n * class RemoteRestConfigDataSource\n * This is a remote data source that reads the config from a remote API (example).\n */\n@injectable()\nexport class StubRemoteConfigDataSource implements RemoteConfigDataSource {\n async getConfig(): Promise<Either<never, Config>> {\n return new Promise((res) =>\n res(\n Either.of({\n name: \"DeviceSDK\",\n version: \"0.0.0-fake.2\",\n }),\n ),\n );\n }\n}\n", "import { inject, injectable } from \"inversify\";\n\nimport type {\n LocalConfigDataSource,\n RemoteConfigDataSource,\n} from \"@internal/config/data/ConfigDataSource\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { Config } from \"@internal/config/model/Config\";\nimport {\n LocalConfigFailure,\n RemoteConfigFailure,\n} from \"@internal/config/model/Errors\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport type { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nimport { ConfigService } from \"./ConfigService\";\n\n@injectable()\nexport class DefaultConfigService implements ConfigService {\n private _local: LocalConfigDataSource;\n private _remote: RemoteConfigDataSource;\n private _logger: LoggerPublisherService;\n constructor(\n @inject(configTypes.LocalConfigDataSource) local: LocalConfigDataSource,\n @inject(configTypes.RemoteConfigDataSource) remote: RemoteConfigDataSource,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._local = local;\n this._remote = remote;\n this._logger = loggerServiceFactory(\"config\");\n }\n\n async getSdkConfig(): Promise<Config> {\n // Returns an Either<ReadFileError | JsonParseError, Config>\n const localConfig = this._local\n .getConfig()\n .ifLeft((error: LocalConfigFailure) => {\n this._logger.error(\"Local config not available\", {\n data: { error },\n });\n });\n\n if (localConfig.isRight()) {\n const val = localConfig.extract();\n this._logger.info(\"Local config available\", { data: { config: val } });\n return val;\n }\n\n return this._remote.getConfig().then((config) => {\n return config\n .mapLeft((error: RemoteConfigFailure) => {\n // Here we handle the error and return a default value\n this._logger.error(\"Local config available\", { data: { error } });\n return { name: \"DeadSdk\", version: \"0.0.0-dead.1\" };\n })\n .extract();\n });\n }\n}\n", "import { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport type { ConfigService } from \"@internal/config/service/ConfigService\";\n\n/**\n * class GetSDKVersionUseCase\n * This is our actual use case that our SDK will use.\n * We will have many use cases in our SDK, and each should be contained in its own file.\n */\n@injectable()\nexport class GetSdkVersionUseCase {\n private _configService: ConfigService;\n constructor(@inject(configTypes.ConfigService) configService: ConfigService) {\n this._configService = configService;\n }\n async getSdkVersion(): Promise<string> {\n return (await this._configService.getSdkConfig()).version;\n }\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { FileLocalConfigDataSource } from \"@internal/config/data/LocalConfigDataSource\";\nimport { StubLocalConfigDataSource } from \"@internal/config/data/LocalConfigDataSource.stub\";\nimport { RestRemoteConfigDataSource } from \"@internal/config/data/RemoteConfigDataSource\";\nimport { StubRemoteConfigDataSource } from \"@internal/config/data/RemoteConfigDataSource.stub\";\nimport { DefaultConfigService } from \"@internal/config/service/DefaultConfigService\";\nimport { GetSdkVersionUseCase } from \"@internal/config/use-case/GetSdkVersionUseCase\";\n\nimport { configTypes } from \"./configTypes\";\n\n// This module is used to configure the dependency injection container\n// This is where we will bind our interfaces to their implementations (or mocks...)\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const configModuleFactory = ({ stub }: FactoryProps) =>\n new ContainerModule((bind, _unbind, _isBound, rebind) => {\n bind(configTypes.LocalConfigDataSource).to(FileLocalConfigDataSource);\n bind(configTypes.RemoteConfigDataSource).to(RestRemoteConfigDataSource);\n bind(configTypes.GetSdkVersionUseCase).to(GetSdkVersionUseCase);\n bind(configTypes.ConfigService).to(DefaultConfigService);\n\n if (stub) {\n // We can rebind our interfaces to their mock implementations\n rebind(configTypes.LocalConfigDataSource).to(StubLocalConfigDataSource);\n rebind(configTypes.RemoteConfigDataSource).to(StubRemoteConfigDataSource);\n }\n });\n", "import semver from \"semver\";\n\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\n\n/**\n * The info of a device model\n */\nexport class InternalDeviceModel {\n id: DeviceModelId;\n productName: string;\n usbProductId: number;\n bootloaderUsbProductId: number;\n usbOnly: boolean;\n memorySize: number;\n masks: number[];\n bluetoothSpec?: {\n serviceUuid: string;\n writeUuid: string;\n writeCmdUuid: string;\n notifyUuid: string;\n }[];\n\n constructor(props: {\n id: DeviceModelId;\n productName: string;\n usbProductId: number;\n bootloaderUsbProductId: number;\n usbOnly: boolean;\n memorySize: number;\n masks: number[];\n\n bluetoothSpec?: {\n serviceUuid: string;\n writeUuid: string;\n writeCmdUuid: string;\n notifyUuid: string;\n }[];\n }) {\n this.id = props.id;\n this.productName = props.productName;\n this.usbProductId = props.usbProductId;\n this.bootloaderUsbProductId = props.bootloaderUsbProductId;\n this.usbOnly = props.usbOnly;\n this.memorySize = props.memorySize;\n this.masks = props.masks;\n this.bluetoothSpec = props.bluetoothSpec;\n }\n\n getBlockSize(firmwareVersion: string): number {\n switch (this.id) {\n case DeviceModelId.NANO_S:\n return semver.lt(semver.coerce(firmwareVersion) ?? \"\", \"2.0.0\")\n ? 4 * 1024\n : 2 * 1024;\n case DeviceModelId.NANO_X:\n return 4 * 1024;\n case DeviceModelId.NANO_SP:\n case DeviceModelId.STAX:\n case DeviceModelId.FLEX:\n return 32;\n }\n }\n}\n", "import { injectable } from \"inversify\";\n\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { InternalDeviceModel } from \"@internal/device-model/model/DeviceModel\";\n\nimport { DeviceModelDataSource } from \"./DeviceModelDataSource\";\n\n/**\n * Static/in memory implementation of the device model data source\n */\n@injectable()\nexport class StaticDeviceModelDataSource implements DeviceModelDataSource {\n private static deviceModelByIds: {\n [key in DeviceModelId]: InternalDeviceModel;\n } = {\n [DeviceModelId.NANO_S]: new InternalDeviceModel({\n id: DeviceModelId.NANO_S,\n productName: \"Ledger Nano S\",\n usbProductId: 0x10,\n bootloaderUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n }),\n [DeviceModelId.NANO_SP]: new InternalDeviceModel({\n id: DeviceModelId.NANO_SP,\n productName: \"Ledger Nano S Plus\",\n usbProductId: 0x50,\n bootloaderUsbProductId: 0x0005,\n usbOnly: true,\n memorySize: 1533 * 1024,\n masks: [0x33100000],\n }),\n [DeviceModelId.NANO_X]: new InternalDeviceModel({\n id: DeviceModelId.NANO_X,\n productName: \"Ledger Nano X\",\n usbProductId: 0x40,\n bootloaderUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n masks: [0x33000000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-0004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.STAX]: new InternalDeviceModel({\n id: DeviceModelId.STAX,\n productName: \"Ledger Stax\",\n usbProductId: 0x60,\n bootloaderUsbProductId: 0x0006,\n usbOnly: false,\n memorySize: 1533 * 1024,\n masks: [0x33200000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-6004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-6004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-6004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-6004-0003-4c6564676572\",\n },\n ],\n }),\n [DeviceModelId.FLEX]: new InternalDeviceModel({\n id: DeviceModelId.FLEX,\n productName: \"Ledger Flex\",\n usbProductId: 0x70,\n bootloaderUsbProductId: 0x0007,\n usbOnly: false,\n memorySize: 1533 * 1024,\n masks: [0x33300000],\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-3004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-3004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-3004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-3004-0003-4c6564676572\",\n },\n ],\n }),\n };\n\n getAllDeviceModels(): InternalDeviceModel[] {\n return Object.values(StaticDeviceModelDataSource.deviceModelByIds);\n }\n\n getDeviceModel(params: { id: DeviceModelId }): InternalDeviceModel {\n return StaticDeviceModelDataSource.deviceModelByIds[params.id];\n }\n\n /**\n * Returns the list of device models that match all the given parameters\n */\n filterDeviceModels(\n params: Partial<InternalDeviceModel>,\n ): InternalDeviceModel[] {\n return this.getAllDeviceModels().filter((deviceModel) => {\n return Object.entries(params).every(([key, value]) => {\n return deviceModel[key as keyof InternalDeviceModel] === value;\n });\n });\n }\n}\n", "export const deviceModelTypes = {\n DeviceModelDataSource: Symbol.for(\"DeviceModelDataSource\"),\n};\n", "import { ContainerModule } from \"inversify\";\n\nimport { StaticDeviceModelDataSource } from \"@internal/device-model/data/StaticDeviceModelDataSource\";\n\nimport { deviceModelTypes } from \"./deviceModelTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const deviceModelModuleFactory = ({ stub }: FactoryProps) =>\n new ContainerModule((bind, _unbind, _isBound, _rebind) => {\n bind(deviceModelTypes.DeviceModelDataSource).to(\n StaticDeviceModelDataSource,\n );\n\n if (stub) {\n // We can rebind our interfaces to their mock implementations\n // rebind(...).to(....);\n }\n });\n", "import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;", "// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}", "var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;", "export const APDU_RESPONSE_STATUS_CODE_LENGTH = 2;\n", "export const HEAD_TAG = 0x05;\nexport const HEAD_TAG_LENGTH = 1;\nexport const CHANNEL_LENGTH = 2;\nexport const INDEX_LENGTH = 2;\nexport const APDU_DATA_LENGTH_LENGTH = 2;\n", "import { SdkError } from \"@root/src/api/Error\";\n\nexport class FramerOverflowError implements SdkError {\n readonly _tag = \"FramerOverflowError\";\n originalError?: Error;\n constructor() {\n this.originalError = new Error(\n \"Frame header length is greater than frame size\",\n );\n }\n}\n\nexport class FramerApduError implements SdkError {\n readonly _tag = \"FramerApduError\";\n originalError?: Error;\n\n constructor() {\n this.originalError = new Error(\"Frame offset is greater than apdu length\");\n }\n}\n\nexport class ReceiverApduError implements SdkError {\n readonly _tag = \"ReceiverApduError\";\n originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unable to parse apdu\");\n }\n}\n\nexport class DeviceSessionNotFound implements SdkError {\n readonly _tag = \"DeviceSessionNotFound\";\n originalError?: Error;\n\n constructor(originalError?: Error) {\n this.originalError = originalError ?? new Error(\"Device session not found\");\n }\n}\n\nexport class DeviceSessionRefresherError implements SdkError {\n readonly _tag = \"DeviceSessionRefresherError\";\n originalError?: Error;\n\n constructor(originalError?: Error) {\n this.originalError =\n originalError ?? new Error(\"Device session refresher error\");\n }\n}\n", "import { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\n\ntype FrameConstructorArgs = {\n header: FrameHeader;\n data: Uint8Array;\n};\n\nexport class Frame {\n protected _header: FrameHeader;\n protected _data: Uint8Array;\n\n constructor({ header, data }: FrameConstructorArgs) {\n this._header = header;\n this._data = data;\n }\n\n toString(): string {\n return JSON.stringify(\n {\n header: this._header.toString(),\n data: this._data.toString(),\n },\n null,\n 2,\n );\n }\n\n getRawData(): Uint8Array {\n const headerRaw = this._header.getRawData();\n const raw = new Uint8Array(headerRaw.length + this._data.length);\n\n raw.set(headerRaw, 0);\n raw.set(this._data, headerRaw.length);\n return raw;\n }\n\n getHeader(): FrameHeader {\n return this._header;\n }\n\n getData(): Uint8Array {\n return this._data;\n }\n}\n", "export const FramerUtils = {\n /*\n * Get last bytes of Uint8Array\n *\n * @param Uint8Array\n */\n getLastBytesFrom(array: Uint8Array, size: number): Uint8Array {\n return array.slice(-size);\n },\n\n /*\n * Get first bytes of Uint8Array\n *\n * @param Uint8Array\n */\n getFirstBytesFrom(array: Uint8Array, size: number): Uint8Array {\n return array.slice(0, size);\n },\n\n /*\n * Get number from Uint8Array\n *\n * @param Uint8Array\n */\n bytesToNumber(array: Uint8Array): number {\n return array.reduce(\n (acc, val, index) =>\n acc + val * Math.pow(0x100, array.length - 1 - index),\n 0,\n );\n },\n\n /*\n * Get bytes Uint8Array from number\n *\n * @param number\n * @param size\n */\n numberToByteArray(number: number, size: number): Uint8Array {\n return new Uint8Array(size).map((_el, index) => {\n return (number >> (8 * (size - 1 - index))) & 0xff;\n });\n },\n};\n", "import { Maybe } from \"purify-ts\";\n\nimport { FramerUtils } from \"@internal/device-session/utils/FramerUtils\";\n\ntype FrameHeaderConstructorArgs = {\n uuid: string;\n channel: Maybe<Uint8Array>;\n headTag: Uint8Array;\n index: Uint8Array;\n length: number;\n dataSize: Maybe<Uint8Array>;\n};\n\nexport class FrameHeader {\n protected _uuid: string;\n protected _channel: Maybe<Uint8Array>;\n protected _headTag: Uint8Array;\n protected _index: Uint8Array;\n protected _length: number;\n protected _dataLength: Maybe<Uint8Array>;\n constructor({\n uuid,\n dataSize,\n index,\n headTag,\n length,\n channel,\n }: FrameHeaderConstructorArgs) {\n this._uuid = uuid;\n this._dataLength = dataSize;\n this._index = index;\n this._headTag = headTag;\n this._length = length;\n this._channel = channel;\n }\n getDataLength(): Maybe<number> {\n return this._dataLength.map((value) => FramerUtils.bytesToNumber(value));\n }\n setDataSize(dataSize: Maybe<Uint8Array>): FrameHeader {\n this._dataLength = dataSize;\n return this;\n }\n getLength(): number {\n return this._length;\n }\n toString(): string {\n return JSON.stringify({\n uuid: this._uuid.toString(),\n dataSize: this._dataLength.extract()?.toString(),\n index: this._index.toString(),\n headTag: this._headTag.toString(),\n length: this._length.toString(),\n channel: this._channel.extract()?.toString(),\n });\n }\n getRawData(): Uint8Array {\n return new Uint8Array([\n ...this._channel.caseOf({\n Just: (channel) => [...channel],\n Nothing: () => [],\n }),\n ...this._headTag,\n ...this._index,\n ...this._dataLength.caseOf({\n Just: (dataSize) => [...dataSize],\n Nothing: () => [],\n }),\n ]);\n }\n}\n", "import { inject, injectable } from \"inversify\";\nimport { Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\nimport { v4 } from \"uuid\";\n\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { APDU_RESPONSE_STATUS_CODE_LENGTH } from \"@internal/device-session/data/ApduResponseConst\";\nimport {\n APDU_DATA_LENGTH_LENGTH,\n CHANNEL_LENGTH,\n HEAD_TAG_LENGTH,\n INDEX_LENGTH,\n} from \"@internal/device-session/data/FramerConst\";\nimport { ReceiverApduError } from \"@internal/device-session/model/Errors\";\nimport { Frame } from \"@internal/device-session/model/Frame\";\nimport { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\nimport { FramerUtils } from \"@internal/device-session/utils/FramerUtils\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nimport { ApduReceiverService } from \"./ApduReceiverService\";\n\nexport type DefaultApduReceiverConstructorArgs = {\n channel?: Maybe<Uint8Array>;\n};\n\n@injectable()\nexport class DefaultApduReceiverService implements ApduReceiverService {\n private readonly _channel: Maybe<Uint8Array>;\n private readonly _logger: LoggerPublisherService;\n private _pendingFrames: Frame[];\n\n constructor(\n { channel = Maybe.zero() }: DefaultApduReceiverConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._channel = channel;\n this._logger = loggerModuleFactory(\"ApduReceiverService\");\n this._pendingFrames = [];\n }\n\n /*\n * Return\n * - A complete ApduResponse\n * - Or a Nothing if not all the data has been received\n * - Or a ReceiverApduError if the apdu is not formatted correctly\n *\n * @param Uint8Array\n */\n public handleFrame(\n frameBytes: Uint8Array,\n ): Either<ReceiverApduError, Maybe<ApduResponse>> {\n const frame = this.getFrameFromBytes(frameBytes);\n\n return frame.map((value) => {\n this._logger.debug(\"handle frame\", {\n data: { frame: value.getRawData() },\n });\n this._pendingFrames.push(value);\n if (!this._pendingFrames[0]) {\n return Nothing;\n }\n const dataSize = this._pendingFrames[0].getHeader().getDataLength();\n return this.getCompleteFrame(dataSize);\n });\n }\n\n /*\n * Return\n * - A complete ApduResponse\n * - Or a Nothing if not all the data has been received\n *\n * @param Maybe<number>\n */\n private getCompleteFrame(dataSize: Maybe<number>): Maybe<ApduResponse> {\n return dataSize.chain((value) => {\n if (!this.isComplete(value)) {\n this._logger.debug(\"frame is not complete, waiting for more\");\n return Nothing;\n }\n\n const concatenatedFramesData = FramerUtils.getFirstBytesFrom(\n this.concatFrames(this._pendingFrames),\n value,\n );\n const data = FramerUtils.getFirstBytesFrom(\n concatenatedFramesData,\n concatenatedFramesData.length - APDU_RESPONSE_STATUS_CODE_LENGTH,\n );\n const statusCode = FramerUtils.getLastBytesFrom(\n concatenatedFramesData,\n APDU_RESPONSE_STATUS_CODE_LENGTH,\n );\n\n this._pendingFrames = [];\n\n return Just(\n new ApduResponse({\n data: data,\n statusCode,\n }),\n );\n });\n }\n\n /*\n * Parse an Uint8Array to a Frame\n * Return an error if the frame is not formatted correctly\n *\n * @param Uint8Array\n */\n private getFrameFromBytes(\n rawFrame: Uint8Array,\n ): Either<ReceiverApduError, Frame> {\n const channelSize = this._channel.caseOf({\n Just: () => CHANNEL_LENGTH,\n Nothing: () => 0,\n });\n\n const headTag = rawFrame.slice(channelSize, channelSize + HEAD_TAG_LENGTH);\n const index = rawFrame.slice(\n channelSize + HEAD_TAG_LENGTH,\n channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH,\n );\n\n const isFirstIndex = index.reduce((curr, val) => curr + val, 0) === 0;\n\n if (!isFirstIndex && this._pendingFrames.length === 0) {\n return Left(new ReceiverApduError());\n }\n\n const dataSizeIndex = channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH;\n const dataSizeLength = isFirstIndex ? APDU_DATA_LENGTH_LENGTH : 0;\n\n if (\n rawFrame.length <\n channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH + dataSizeLength\n ) {\n return Left(new ReceiverApduError(\"Unable to parse header from apdu\"));\n }\n\n const dataSize = isFirstIndex\n ? Just(rawFrame.slice(dataSizeIndex, dataSizeIndex + dataSizeLength))\n : Nothing;\n\n const dataIndex = dataSizeIndex + dataSizeLength;\n const data = rawFrame.slice(dataIndex);\n\n const frame = new Frame({\n header: new FrameHeader({\n uuid: v4(),\n channel: this._channel,\n dataSize,\n headTag,\n index,\n length: channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH + dataSizeLength,\n }),\n data,\n });\n\n return Right(frame);\n }\n\n /*\n * Return true if all the datas has been received\n *\n * @param number\n */\n private isComplete(dataSize: number): boolean {\n const totalReceiveLength = this._pendingFrames.reduce(\n (prev, curr) => prev + curr.getData().length,\n 0,\n );\n\n return totalReceiveLength >= dataSize;\n }\n\n private concatFrames(frames: Frame[]): Uint8Array {\n return frames.reduce(\n (prev: Uint8Array, curr: Frame) =>\n Uint8Array.from([...prev, ...curr.getData()]),\n new Uint8Array(0),\n );\n }\n}\n", "import { inject, injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\nimport { v4 } from \"uuid\";\n\nimport {\n APDU_DATA_LENGTH_LENGTH,\n CHANNEL_LENGTH,\n HEAD_TAG,\n HEAD_TAG_LENGTH,\n INDEX_LENGTH,\n} from \"@internal/device-session/data/FramerConst\";\nimport {\n FramerApduError,\n FramerOverflowError,\n} from \"@internal/device-session/model/Errors\";\nimport { Frame } from \"@internal/device-session/model/Frame\";\nimport { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\nimport { FramerUtils } from \"@internal/device-session/utils/FramerUtils\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { SdkError } from \"@root/src/api/Error\";\n\nimport type { ApduSenderService } from \"./ApduSenderService\";\n\nexport type DefaultApduSenderServiceConstructorArgs = {\n frameSize: number;\n channel?: Maybe<Uint8Array>;\n padding?: boolean;\n};\n\n/**\n * Default implementation of ApduSenderService\n *\n * Split APDU in an array of frames readies to send to a InternalConnectedDevice\n */\n@injectable()\nexport class DefaultApduSenderService implements ApduSenderService {\n protected _frameSize: number;\n protected _channel: Maybe<Uint8Array>;\n protected _padding: boolean;\n private _logger: LoggerPublisherService;\n\n /**\n * Constructor\n *\n * @param frameSize\n * @param channel\n * @param padding\n * @param loggerServiceFactory\n */\n constructor(\n {\n frameSize,\n channel = Maybe.zero(),\n padding = false,\n }: DefaultApduSenderServiceConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._frameSize = frameSize;\n this._channel = channel;\n this._padding = padding;\n this._logger = loggerServiceFactory(\"framer\");\n }\n\n /**\n * Get frames from apdu\n *\n * @param apdu\n */\n public getFrames(apdu: Uint8Array): Frame[] {\n const frames: Frame[] = [];\n let count = 0;\n let frame = this.getFrameAtIndex(apdu, count);\n\n while (frame.isRight()) {\n frames.push(frame.extract());\n count += 1;\n frame = this.getFrameAtIndex(apdu, count).mapLeft((error) => {\n if (error instanceof FramerOverflowError) {\n this._logger.debug(\"Frames parsed\", { data: { count } });\n } else {\n this._logger.error(\"Error while parsing frame\", { data: { error } });\n }\n return error;\n });\n }\n return frames;\n }\n\n /**\n * Get apdu frame at index\n * Split every {{PACKET_SIZE - HEADER_SIZE}} bytes of apdu\n * @param apdu\n * @param frameIndex\n * @private\n */\n private getFrameAtIndex(\n apdu: Uint8Array,\n frameIndex: number,\n ): Either<SdkError, Frame> {\n const header = this.getFrameHeaderFrom(frameIndex, apdu.length);\n const frameOffset =\n frameIndex * this._frameSize - this.getHeaderSizeSumFrom(frameIndex);\n\n if (frameOffset > apdu.length) {\n return Left(new FramerOverflowError());\n }\n if (header.getLength() > this._frameSize) {\n return Left(new FramerApduError());\n }\n const dataMaxSize = this._frameSize - header.getLength();\n const data = apdu.slice(\n frameIndex === 0 ? 0 : frameOffset,\n frameIndex === 0\n ? dataMaxSize\n : frameOffset + this._frameSize - header.getLength(),\n );\n const frameData = this._padding\n ? new Uint8Array(dataMaxSize).fill(0)\n : new Uint8Array(data.length < dataMaxSize ? data.length : dataMaxSize);\n frameData.set(data, 0);\n const frame = new Frame({\n header,\n data: frameData,\n });\n return Right(frame);\n }\n\n /**\n * Get frame header\n * @param frameIndex\n * @param apduSize\n * @private\n */\n private getFrameHeaderFrom(\n frameIndex: number,\n apduSize: number,\n ): FrameHeader {\n const header = new FrameHeader({\n uuid: v4(),\n channel: this._channel.map((channel) =>\n FramerUtils.getLastBytesFrom(channel, CHANNEL_LENGTH),\n ),\n headTag: new Uint8Array([HEAD_TAG]),\n index: FramerUtils.numberToByteArray(frameIndex, INDEX_LENGTH),\n length: this.getFrameHeaderSizeFromIndex(frameIndex),\n dataSize: Maybe.zero(),\n });\n if (frameIndex === 0) {\n header.setDataSize(\n Maybe.of(\n FramerUtils.numberToByteArray(apduSize, APDU_DATA_LENGTH_LENGTH),\n ),\n );\n }\n return header;\n }\n\n /**\n * Get frame offset\n * First frame has more bytes of header\n * Padding append means a 0 bytes is added at the end of each frame\n * @private\n * @param frameIndex\n */\n private getHeaderSizeSumFrom(frameIndex: number): number {\n let sum = this.getFrameHeaderSizeFromIndex(0);\n let i = 1;\n while (i < frameIndex) {\n sum += this.getFrameHeaderSizeFromIndex(i);\n i += 1;\n }\n return sum;\n }\n\n /**\n * Get frame header size\n * @private\n * @param frameIndex\n */\n private getFrameHeaderSizeFromIndex(frameIndex: number): number {\n return (\n this._channel.caseOf({\n Just: () => CHANNEL_LENGTH,\n Nothing: () => 0,\n }) +\n INDEX_LENGTH +\n HEAD_TAG_LENGTH +\n (frameIndex === 0 ? APDU_DATA_LENGTH_LENGTH : 0)\n );\n }\n}\n", "import { inject, injectable } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\n\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\n@injectable()\nexport class DefaultDeviceSessionService implements DeviceSessionService {\n private _sessions: DeviceSession[];\n private _logger: LoggerPublisherService;\n\n constructor(\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessions = [];\n this._logger = loggerModuleFactory(\"DeviceSessionService\");\n }\n\n addDeviceSession(deviceSession: DeviceSession) {\n const found = this._sessions.find((s) => s.id === deviceSession.id);\n if (found) {\n this._logger.warn(\"DeviceSession already exists\", {\n data: { deviceSession },\n });\n return this;\n }\n\n this._sessions.push(deviceSession);\n this._logger.info(\"DeviceSession added\", { data: { deviceSession } });\n return this;\n }\n\n removeDeviceSession(sessionId: string) {\n const found = this._sessions.find((s) => s.id === sessionId);\n if (found) {\n found.close();\n this._sessions = this._sessions.filter((s) => s.id !== sessionId);\n this._logger.info(\"DeviceSession removed\", { data: { sessionId } });\n return this;\n }\n\n this._logger.warn(\"DeviceSession not found\", { data: { sessionId } });\n return this;\n }\n\n getDeviceSessionById(sessionId: string) {\n const deviceSession = Maybe.fromNullable(\n this._sessions.find((s) => s.id === sessionId),\n );\n\n return deviceSession.toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessionByDeviceId(deviceId: string) {\n const deviceSession = Maybe.fromNullable(\n this._sessions.find((s) => s.connectedDevice.id === deviceId),\n );\n\n return deviceSession.toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessions() {\n return this._sessions;\n }\n}\n", "import { inject, injectable } from \"inversify\";\n\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\n\n@injectable()\nexport class CloseSessionsUseCase {\n private readonly _sessionService: DeviceSessionService;\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n ) {\n this._sessionService = sessionService;\n }\n\n execute() {\n const deviceSessions = this._sessionService.getDeviceSessions();\n\n for (const dSession of deviceSessions) {\n dSession.close();\n }\n }\n}\n", "import { inject, injectable } from \"inversify\";\n\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nexport type GetSessionDeviceStateUseCaseArgs = {\n sessionId: DeviceSessionId;\n};\n\n/**\n * Get deviceSession state from its id.\n */\n@injectable()\nexport class GetDeviceSessionStateUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"GetDeviceSessionStateUseCase\");\n }\n\n execute({ sessionId }: GetSessionDeviceStateUseCaseArgs) {\n const errorOrDeviceSession =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return errorOrDeviceSession.caseOf({\n Left: (error) => {\n this._logger.error(\"Error getting session device\", { data: { error } });\n throw error;\n },\n Right: (deviceSession) => deviceSession.state,\n });\n }\n}\n", "import { inject, injectable } from \"inversify\";\n\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\n/**\n * List all device sessions.\n */\n@injectable()\nexport class ListDeviceSessionsUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"ListDeviceSessionsUseCase\");\n }\n\n execute(): DeviceSession[] {\n this._logger.info(\"Listing device sessions\");\n return this._sessionService.getDeviceSessions();\n }\n}\n", "import { ContainerModule, interfaces } from \"inversify\";\n\nimport { ApduReceiverService } from \"@internal/device-session/service/ApduReceiverService\";\nimport { ApduSenderService } from \"@internal/device-session/service/ApduSenderService\";\nimport {\n DefaultApduReceiverConstructorArgs,\n DefaultApduReceiverService,\n} from \"@internal/device-session/service/DefaultApduReceiverService\";\nimport {\n DefaultApduSenderService,\n DefaultApduSenderServiceConstructorArgs,\n} from \"@internal/device-session/service/DefaultApduSenderService\";\nimport { DefaultDeviceSessionService } from \"@internal/device-session/service/DefaultDeviceSessionService\";\nimport { CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { GetDeviceSessionStateUseCase } from \"@internal/device-session/use-case/GetDeviceSessionStateUseCase\";\nimport { ListDeviceSessionsUseCase } from \"@internal/device-session/use-case/ListDeviceSessionsUseCase\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { deviceSessionTypes } from \"./deviceSessionTypes\";\n\nexport type DeviceSessionModuleArgs = Partial<{\n stub: boolean;\n}>;\n\nexport const deviceSessionModuleFactory = (\n { stub }: DeviceSessionModuleArgs = { stub: false },\n) =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind<interfaces.Factory<ApduSenderService>>(\n deviceSessionTypes.ApduSenderServiceFactory,\n ).toFactory((context) => {\n const logger = context.container.get<\n (name: string) => LoggerPublisherService\n >(loggerTypes.LoggerPublisherServiceFactory);\n\n return (args: DefaultApduSenderServiceConstructorArgs) => {\n return new DefaultApduSenderService(args, logger);\n };\n });\n\n bind<interfaces.Factory<ApduReceiverService>>(\n deviceSessionTypes.ApduReceiverServiceFactory,\n ).toFactory((context) => {\n const logger = context.container.get<\n (name: string) => LoggerPublisherService\n >(loggerTypes.LoggerPublisherServiceFactory);\n\n return (args: DefaultApduReceiverConstructorArgs) => {\n return new DefaultApduReceiverService(args, logger);\n };\n });\n\n bind(deviceSessionTypes.DeviceSessionService)\n .to(DefaultDeviceSessionService)\n .inSingletonScope();\n\n bind(deviceSessionTypes.GetDeviceSessionStateUseCase).to(\n GetDeviceSessionStateUseCase,\n );\n bind(deviceSessionTypes.CloseSessionsUseCase).to(CloseSessionsUseCase);\n\n bind(deviceSessionTypes.ListDeviceSessionsUseCase).to(\n ListDeviceSessionsUseCase,\n );\n\n if (stub) {\n rebind(deviceSessionTypes.GetDeviceSessionStateUseCase).to(StubUseCase);\n rebind(deviceSessionTypes.ListDeviceSessionsUseCase).to(StubUseCase);\n }\n },\n );\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude<TeardownLogic, void>[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude<TeardownLogic, void>): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create<T>(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber<T> {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber<any> | Observer<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber<any> | Observer<any>) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind<Fn extends (...args: any[]) => any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver<T> implements Observer<T> {\n constructor(private partialObserver: Partial<Observer<T>>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber<T> extends Subscriber<T> {\n constructor(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial<Observer<T>>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification<any>, subscriber: Subscriber<any>) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly<Observer<any>> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>,\n ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (fns.length === 0) {\n return identity as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable<any> | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator<any, T> | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift<R>(operator?: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise<void>;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor<void>((resolve, reject) => {\n const subscriber = new SafeSubscriber<T>({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise<void>;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n pipe<A, B, C, D>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>\n ): Observable<D>;\n pipe<A, B, C, D, E>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>\n ): Observable<E>;\n pipe<A, B, C, D, E, F>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>\n ): Observable<F>;\n pipe<A, B, C, D, E, F, G>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>\n ): Observable<G>;\n pipe<A, B, C, D, E, F, G, H>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>\n ): Observable<H>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>\n ): Observable<I>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n ...operations: OperatorFunction<any, any>[]\n ): Observable<unknown>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise<T | undefined>;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType<typeof Observable>['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate<T, R>(\n init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void\n): OperatorFunction<T, R> {\n return (source: Observable<T>) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber<T>(\n destination: Subscriber<any>,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber<T> {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber<T> extends Subscriber<T> {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber<any>,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber<T>, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber<T>, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber<T>) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject<T> extends Observable<T> implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer<T>[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer<T>[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n return new AnonymousSubject<T>(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber<any>) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber<any>) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable<T> {\n const observable: any = new Observable<T>();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject<T>\n */\nexport class AnonymousSubject<T> extends Subject<T> {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer<T>,\n source?: Observable<T>\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject<T>\n */\nexport class BehaviorSubject<T> extends Subject<T> {\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n\n getValue(): T {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n\n next(value: T): void {\n super.next((this._value = value));\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject<T> extends Subject<T> {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nexport class Action<T> extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction<T>, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction<T> extends Action<T> {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor<T>(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array<AsyncAction<any>> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction<any>): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last<T>(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike<any> {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable<any> {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable<T>(obj: any): obj is AsyncIterable<T> {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable<any> {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an <iframe>.\n return isFunction(obj?.getReader);\n}\n", "import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ObservedValueOf, ReadableStreamLike } from '../types';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\nexport function innerFrom<T>(input: ObservableInput<T>): Observable<T> {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable<T>(obj: any) {\n return new Observable((subscriber: Subscriber<T>) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike<T>(array: ArrayLike<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n // Loop over the array and emit each value. Note two things here:\n // 1. We're making sure that the subscriber is not closed on each loop.\n // This is so we don't continue looping over a very large array after\n // something like a `take`, `takeWhile`, or other synchronous unsubscription\n // has already unsubscribed.\n // 2. In this form, reentrant code can alter that array we're looping over.\n // This is a known issue, but considered an edge case. The alternative would\n // be to copy the array before executing the loop, but this has\n // performance implications.\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\n\nexport function fromPromise<T>(promise: PromiseLike<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n promise\n .then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, reportUnhandledError);\n });\n}\n\nexport function fromIterable<T>(iterable: Iterable<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\n\nexport function fromAsyncIterable<T>(asyncIterable: AsyncIterable<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\n\nexport function fromReadableStreamLike<T>(readableStream: ReadableStreamLike<T>) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process<T>(asyncIterable: AsyncIterable<T>, subscriber: Subscriber<T>) {\n for await (const value of asyncIterable) {\n subscriber.next(value);\n // A side-effect may have closed our subscriber,\n // check before the next iteration.\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n}\n", "import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay: number,\n repeat: true\n): void;\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay?: number,\n repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay = 0,\n repeat = false\n): Subscription | void {\n const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n } else {\n this.unsubscribe();\n }\n }, delay);\n\n parentSubscription.add(scheduleSubscription);\n\n if (!repeat) {\n // Because user-land scheduler implementations are unlikely to properly reuse\n // Actions for repeat scheduling, we can't trust that the returned subscription\n // will control repeat subscription scenarios. So we're trying to avoid using them\n // incorrectly within this library.\n return scheduleSubscription;\n }\n}\n", "/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn<T>(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * \n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise<T>(input: PromiseLike<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n // The current array index.\n let i = 0;\n // Start iterating over the array like on a schedule.\n return scheduler.schedule(function () {\n if (i === input.length) {\n // If we have hit the end of the array like in the\n // previous job, we can complete.\n subscriber.complete();\n } else {\n // Otherwise let's next the value at the current index,\n // then increment our index.\n subscriber.next(input[i++]);\n // If the last emission didn't cause us to close the subscriber\n // (via take or some side effect), reschedule the job and we'll\n // make another pass.\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n let iterator: Iterator<T, T>;\n\n // Schedule the initial creation of the iterator from\n // the iterable. This is so the code in the iterable is\n // not called until the scheduled job fires.\n executeSchedule(subscriber, scheduler, () => {\n // Create the iterator.\n iterator = (input as any)[Symbol_iterator]();\n\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n let value: T;\n let done: boolean | undefined;\n try {\n // Pull the value out of the iterator\n ({ value, done } = iterator.next());\n } catch (err) {\n // We got an error while pulling from the iterator\n subscriber.error(err);\n return;\n }\n\n if (done) {\n // If it is \"done\" we just complete. This mimics the\n // behavior of JavaScript's `for..of` consumption of\n // iterables, which will not emit the value from an iterator\n // result of `{ done: true: value: 'here' }`.\n subscriber.complete();\n } else {\n // The iterable is not done, emit the value.\n subscriber.next(value);\n }\n },\n 0,\n true\n );\n });\n\n // During finalization, if we see this iterator has a `return` method,\n // then we know it is a Generator, and not just an Iterator. So we call\n // the `return()` function. This will ensure that any `finally { }` blocks\n // inside of the generator we can hit will be hit properly.\n return () => isFunction(iterator?.return) && iterator.return();\n });\n}\n", "import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable<T>((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n iterator.next().then((result) => {\n if (result.done) {\n // This will remove the subscriptions from\n // the parent subscription.\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n }\n });\n },\n 0,\n true\n );\n });\n });\n}\n", "import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike<T>(input: ReadableStreamLike<T>, scheduler: SchedulerLike): Observable<T> {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n", "import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled<T>(input: ObservableInput<T>, scheduler: SchedulerLike): Observable<T> {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from<O extends ObservableInput<any>>(input: O, scheduler: SchedulerLike | undefined): Observable<ObservedValueOf<O>>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * \n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\" target=\"_blank\">iterable</a>\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput<T>} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable<T>}\n */\nexport function from<T>(input: ObservableInput<T>, scheduler?: SchedulerLike): Observable<T> {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n", "import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable<null>;\nexport function of(value: undefined): Observable<undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable<never>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of<A extends readonly unknown[]>(...valuesAndScheduler: [...A, SchedulerLike]): Observable<ValueFromArray<A>>;\n\nexport function of(): Observable<never>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of<T>(): Observable<T>;\nexport function of<T>(value: T): Observable<T>;\nexport function of<A extends readonly unknown[]>(...values: A): Observable<ValueFromArray<A>>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * <span class=\"informal\">Each argument becomes a `next` notification.</span>\n *\n * \n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n */\nexport function of<T>(...args: Array<T | SchedulerLike>): Observable<T> {\n const scheduler = popScheduler(args);\n return from(args as T[], scheduler);\n}\n", "/**\n * Checks to see if a value is not only a `Date` object,\n * but a *valid* `Date` object that can be converted to a\n * number. For example, `new Date('blah')` is indeed an\n * `instanceof Date`, however it cannot be converted to a\n * number.\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { isValidDate } from '../util/isDate';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport interface TimeoutConfig<T, O extends ObservableInput<unknown> = ObservableInput<T>, M = unknown> {\n /**\n * The time allowed between values from the source before timeout is triggered.\n */\n each?: number;\n\n /**\n * The relative time as a `number` in milliseconds, or a specific time as a `Date` object,\n * by which the first value must arrive from the source before timeout is triggered.\n */\n first?: number | Date;\n\n /**\n * The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n */\n scheduler?: SchedulerLike;\n\n /**\n * A factory used to create observable to switch to when timeout occurs. Provides\n * a {@link TimeoutInfo} about the source observable's emissions and what delay or\n * exact time triggered the timeout.\n */\n with?: (info: TimeoutInfo<T, M>) => O;\n\n /**\n * Optional additional metadata you can provide to code that handles\n * the timeout, will be provided through the {@link TimeoutError}.\n * This can be used to help identify the source of a timeout or pass along\n * other information related to the timeout.\n */\n meta?: M;\n}\n\nexport interface TimeoutInfo<T, M = unknown> {\n /** Optional metadata that was provided to the timeout configuration. */\n readonly meta: M;\n /** The number of messages seen before the timeout */\n readonly seen: number;\n /** The last message seen */\n readonly lastValue: T | null;\n}\n\n/**\n * An error emitted when a timeout occurs.\n */\nexport interface TimeoutError<T = unknown, M = unknown> extends Error {\n /**\n * The information provided to the error by the timeout\n * operation that created the error. Will be `null` if\n * used directly in non-RxJS code with an empty constructor.\n * (Note that using this constructor directly is not recommended,\n * you should create your own errors)\n */\n info: TimeoutInfo<T, M> | null;\n}\n\nexport interface TimeoutErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new <T = unknown, M = unknown>(info?: TimeoutInfo<T, M>): TimeoutError<T, M>;\n}\n\n/**\n * An error thrown by the {@link timeout} operator.\n *\n * Provided so users can use as a type and do quality comparisons.\n * We recommend you do not subclass this or create instances of this class directly.\n * If you have need of a error representing a timeout, you should\n * create your own error class and use that.\n *\n * @see {@link timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = createErrorClass(\n (_super) =>\n function TimeoutErrorImpl(this: any, info: TimeoutInfo<any> | null = null) {\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n }\n);\n\n/**\n * If `with` is provided, this will return an observable that will switch to a different observable if the source\n * does not push values within the specified time parameters.\n *\n * <span class=\"informal\">The most flexible option for creating a timeout behavior.</span>\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ## Examples\n *\n * Emit a custom error if there is too much time between values\n *\n * ```ts\n * import { interval, timeout, throwError } from 'rxjs';\n *\n * class CustomTimeoutError extends Error {\n * constructor() {\n * super('It was too slow');\n * this.name = 'CustomTimeoutError';\n * }\n * }\n *\n * const slow$ = interval(900);\n *\n * slow$.pipe(\n * timeout({\n * each: 1000,\n * with: () => throwError(() => new CustomTimeoutError())\n * })\n * )\n * .subscribe({\n * error: console.error\n * });\n * ```\n *\n * Switch to a faster observable if your source is slow.\n *\n * ```ts\n * import { interval, timeout } from 'rxjs';\n *\n * const slow$ = interval(900);\n * const fast$ = interval(500);\n *\n * slow$.pipe(\n * timeout({\n * each: 1000,\n * with: () => fast$,\n * })\n * )\n * .subscribe(console.log);\n * ```\n * @param config The configuration for the timeout.\n */\nexport function timeout<T, O extends ObservableInput<unknown>, M = unknown>(\n config: TimeoutConfig<T, O, M> & { with: (info: TimeoutInfo<T, M>) => O }\n): OperatorFunction<T, T | ObservedValueOf<O>>;\n\n/**\n * Returns an observable that will error or switch to a different observable if the source does not push values\n * within the specified time parameters.\n *\n * <span class=\"informal\">The most flexible option for creating a timeout behavior.</span>\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ### Handling TimeoutErrors\n *\n * If no `with` property was provided, subscriptions to the resulting observable may emit an error of {@link TimeoutError}.\n * The timeout error provides useful information you can examine when you're handling the error. The most common way to handle\n * the error would be with {@link catchError}, although you could use {@link tap} or just the error handler in your `subscribe` call\n * directly, if your error handling is only a side effect (such as notifying the user, or logging).\n *\n * In this case, you would check the error for `instanceof TimeoutError` to validate that the error was indeed from `timeout`, and\n * not from some other source. If it's not from `timeout`, you should probably rethrow it if you're in a `catchError`.\n *\n * ## Examples\n *\n * Emit a {@link TimeoutError} if the first value, and _only_ the first value, does not arrive within 5 seconds\n *\n * ```ts\n * import { interval, timeout } from 'rxjs';\n *\n * // A random interval that lasts between 0 and 10 seconds per tick\n * const source$ = interval(Math.round(Math.random() * 10_000));\n *\n * source$.pipe(\n * timeout({ first: 5_000 })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * Emit a {@link TimeoutError} if the source waits longer than 5 seconds between any two values or the first value\n * and subscription.\n *\n * ```ts\n * import { timer, timeout, expand } from 'rxjs';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10_000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime())\n * .pipe(expand(() => timer(getRandomTime())));\n *\n * source$\n * .pipe(timeout({ each: 5_000 }))\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * Emit a {@link TimeoutError} if the source does not emit before 7 seconds, _or_ if the source waits longer than\n * 5 seconds between any two values after the first.\n *\n * ```ts\n * import { timer, timeout, expand } from 'rxjs';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10_000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime())\n * .pipe(expand(() => timer(getRandomTime())));\n *\n * source$\n * .pipe(timeout({ first: 7_000, each: 5_000 }))\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n */\nexport function timeout<T, M = unknown>(config: Omit<TimeoutConfig<T, any, M>, 'with'>): OperatorFunction<T, T>;\n\n/**\n * Returns an observable that will error if the source does not push its first value before the specified time passed as a `Date`.\n * This is functionally the same as `timeout({ first: someDate })`.\n *\n * <span class=\"informal\">Errors if the first value doesn't show up before the given date and time</span>\n *\n * \n *\n * @param first The date to at which the resulting observable will timeout if the source observable\n * does not emit at least one value.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout<T>(first: Date, scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an observable that will error if the source does not push a value within the specified time in milliseconds.\n * This is functionally the same as `timeout({ each: milliseconds })`.\n *\n * <span class=\"informal\">Errors if it waits too long between any value</span>\n *\n * \n *\n * @param each The time allowed between each pushed value from the source before the resulting observable\n * will timeout.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout<T>(each: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * <span class=\"informal\">Timeouts on Observable that doesn't emit values fast enough.</span>\n *\n * \n *\n * @see {@link timeoutWith}\n *\n * @return A function that returns an Observable that mirrors behaviour of the\n * source Observable, unless timeout happens when it throws an error.\n */\nexport function timeout<T, O extends ObservableInput<any>, M>(\n config: number | Date | TimeoutConfig<T, O, M>,\n schedulerArg?: SchedulerLike\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n // Intentionally terse code.\n // If the first argument is a valid `Date`, then we use it as the `first` config.\n // Otherwise, if the first argument is a `number`, then we use it as the `each` config.\n // Otherwise, it can be assumed the first argument is the configuration object itself, and\n // we destructure that into what we're going to use, setting important defaults as we do.\n // NOTE: The default for `scheduler` will be the `scheduler` argument if it exists, or\n // it will default to the `asyncScheduler`.\n const {\n first,\n each,\n with: _with = timeoutErrorFactory,\n scheduler = schedulerArg ?? asyncScheduler,\n meta = null!,\n } = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config) as TimeoutConfig<T, O, M>;\n\n if (first == null && each == null) {\n // Ensure timeout was provided at runtime.\n throw new TypeError('No timeout provided.');\n }\n\n return operate((source, subscriber) => {\n // This subscription encapsulates our subscription to the\n // source for this operator. We're capturing it separately,\n // because if there is a `with` observable to fail over to,\n // we want to unsubscribe from our original subscription, and\n // hand of the subscription to that one.\n let originalSourceSubscription: Subscription;\n // The subscription for our timeout timer. This changes\n // every time we get a new value.\n let timerSubscription: Subscription;\n // A bit of state we pass to our with and error factories to\n // tell what the last value we saw was.\n let lastValue: T | null = null;\n // A bit of state we pass to the with and error factories to\n // tell how many values we have seen so far.\n let seen = 0;\n const startTimer = (delay: number) => {\n timerSubscription = executeSchedule(\n subscriber,\n scheduler,\n () => {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(\n _with!({\n meta,\n lastValue,\n seen,\n })\n ).subscribe(subscriber);\n } catch (err) {\n subscriber.error(err);\n }\n },\n delay\n );\n };\n\n originalSourceSubscription = source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value: T) => {\n // clear the timer so we can emit and start another one.\n timerSubscription?.unsubscribe();\n seen++;\n // Emit\n subscriber.next((lastValue = value));\n // null | undefined are both < 0. Thanks, JavaScript.\n each! > 0 && startTimer(each!);\n },\n undefined,\n undefined,\n () => {\n if (!timerSubscription?.closed) {\n timerSubscription?.unsubscribe();\n }\n // Be sure not to hold the last value in memory after unsubscription\n // it could be quite large.\n lastValue = null;\n }\n )\n );\n\n // Intentionally terse code.\n // If we've `seen` a value, that means the \"first\" clause was met already, if it existed.\n // it also means that a timer was already started for \"each\" (in the next handler above).\n // If `first` was provided, and it's a number, then use it.\n // If `first` was provided and it's not a number, it's a Date, and we get the difference between it and \"now\".\n // If `first` was not provided at all, then our first timer will be the value from `each`.\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler!.now()) : each!);\n });\n}\n\n/**\n * The default function to use to emit an error when timeout occurs and a `with` function\n * is not specified.\n * @param info The information about the timeout to pass along to the error\n */\nfunction timeoutErrorFactory(info: TimeoutInfo<any>): Observable<never> {\n throw new TimeoutError(info);\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * \n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n return operate((source, subscriber) => {\n // The index of the value from the source. Used with projection.\n let index = 0;\n // Subscribe to the source, all errors and completions are sent along\n // to the consumer.\n source.subscribe(\n createOperatorSubscriber(subscriber, (value: T) => {\n // Call the projection function with the appropriate this context,\n // and send the resulting value to the consumer.\n subscriber.next(project.call(thisArg, value, index++));\n })\n );\n });\n}\n", "import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals<T, R>(\n source: Observable<T>,\n subscriber: Subscriber<R>,\n project: (value: T, index: number) => ObservableInput<R>,\n concurrent: number,\n onBeforeNext?: (innerValue: R) => void,\n expand?: boolean,\n innerSubScheduler?: SchedulerLike,\n additionalFinalizer?: () => void\n) {\n // Buffered values, in the event of going over our concurrency limit\n const buffer: T[] = [];\n // The number of active inner subscriptions.\n let active = 0;\n // An index to pass to our accumulator function\n let index = 0;\n // Whether or not the outer source has completed.\n let isComplete = false;\n\n /**\n * Checks to see if we can complete our result or not.\n */\n const checkComplete = () => {\n // If the outer has completed, and nothing is left in the buffer,\n // and we don't have any active inner subscriptions, then we can\n // Emit the state and complete.\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n const doInnerSub = (value: T) => {\n // If we're expanding, we need to emit the outer values and the inner values\n // as the inners will \"become outers\" in a way as they are recursively fed\n // back to the projection mechanism.\n expand && subscriber.next(value as any);\n\n // Increment the number of active subscriptions so we can track it\n // against our concurrency limit later.\n active++;\n\n // A flag used to show that the inner observable completed.\n // This is checked during finalization to see if we should\n // move to the next item in the buffer, if there is on.\n let innerComplete = false;\n\n // Start our inner subscription.\n innerFrom(project(value, index++)).subscribe(\n createOperatorSubscriber(\n subscriber,\n (innerValue) => {\n // `mergeScan` has additional handling here. For example\n // taking the inner value and updating state.\n onBeforeNext?.(innerValue);\n\n if (expand) {\n // If we're expanding, then just recurse back to our outer\n // handler. It will emit the value first thing.\n outerNext(innerValue as any);\n } else {\n // Otherwise, emit the inner value.\n subscriber.next(innerValue);\n }\n },\n () => {\n // Flag that we have completed, so we know to check the buffer\n // during finalization.\n innerComplete = true;\n },\n // Errors are passed to the destination.\n undefined,\n () => {\n // During finalization, if the inner completed (it wasn't errored or\n // cancelled), then we want to try the next item in the buffer if\n // there is one.\n if (innerComplete) {\n // We have to wrap this in a try/catch because it happens during\n // finalization, possibly asynchronously, and we want to pass\n // any errors that happen (like in a projection function) to\n // the outer Subscriber.\n try {\n // INNER SOURCE COMPLETE\n // Decrement the active count to ensure that the next time\n // we try to call `doInnerSub`, the number is accurate.\n active--;\n // If we have more values in the buffer, try to process those\n // Note that this call will increment `active` ahead of the\n // next conditional, if there were any more inner subscriptions\n // to start.\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift()!;\n // Particularly for `expand`, we need to check to see if a scheduler was provided\n // for when we want to start our inner subscription. Otherwise, we just start\n // are next inner subscription.\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n } else {\n doInnerSub(bufferedValue);\n }\n }\n // Check to see if we can complete, and complete if so.\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }\n )\n );\n };\n\n // Subscribe to our source observable.\n source.subscribe(\n createOperatorSubscriber(subscriber, outerNext, () => {\n // Outer completed, make a note of it, and check to see if we can complete everything.\n isComplete = true;\n checkComplete();\n })\n );\n\n // Additional finalization (for when the destination is torn down).\n // Other finalization is added implicitly via subscription above.\n return () => {\n additionalFinalizer?.();\n };\n}\n", "import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n if (isFunction(resultSelector)) {\n // DEPRECATED PATH\n return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\n\n/**\n * Creates an observable that will wait for a specified time period, or exact date, before\n * emitting the number 0.\n *\n * <span class=\"informal\">Used to emit a notification after a delay.</span>\n *\n * This observable is useful for creating delays in code, or racing against other values\n * for ad-hoc timeouts.\n *\n * The `delay` is specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Examples\n *\n * Wait 3 seconds and start another observable\n *\n * You might want to use `timer` to delay subscription to an\n * observable by a set amount of time. Here we use a timer with\n * {@link concatMapTo} or {@link concatMap} in order to wait\n * a few seconds and start a subscription to a source.\n *\n * ```ts\n * import { of, timer, concatMap } from 'rxjs';\n *\n * // This could be any observable\n * const source = of(1, 2, 3);\n *\n * timer(3000)\n * .pipe(concatMap(() => source))\n * .subscribe(console.log);\n * ```\n *\n * Take all values until the start of the next minute\n *\n * Using a `Date` as the trigger for the first emission, you can\n * do things like wait until midnight to fire an event, or in this case,\n * wait until a new minute starts (chosen so the example wouldn't take\n * too long to run) in order to stop watching a stream. Leveraging\n * {@link takeUntil}.\n *\n * ```ts\n * import { interval, takeUntil, timer } from 'rxjs';\n *\n * // Build a Date object that marks the\n * // next minute.\n * const currentDate = new Date();\n * const startOfNextMinute = new Date(\n * currentDate.getFullYear(),\n * currentDate.getMonth(),\n * currentDate.getDate(),\n * currentDate.getHours(),\n * currentDate.getMinutes() + 1\n * );\n *\n * // This could be any observable stream\n * const source = interval(1000);\n *\n * const result = source.pipe(\n * takeUntil(timer(startOfNextMinute))\n * );\n *\n * result.subscribe(console.log);\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `dueTime`.\n *\n * @param due If a `number`, the amount of time in milliseconds to wait before emitting.\n * If a `Date`, the exact time at which to emit.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>;\n\n/**\n * Creates an observable that starts an interval after a specified delay, emitting incrementing numbers -- starting at `0` --\n * on each interval after words.\n *\n * The `delay` and `intervalDuration` are specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Example\n *\n * ### Start an interval that starts right away\n *\n * Since {@link interval} waits for the passed delay before starting,\n * sometimes that's not ideal. You may want to start an interval immediately.\n * `timer` works well for this. Here we have both side-by-side so you can\n * see them in comparison.\n *\n * Note that this observable will never complete.\n *\n * ```ts\n * import { timer, interval } from 'rxjs';\n *\n * timer(0, 1000).subscribe(n => console.log('timer', n));\n * interval(1000).subscribe(n => console.log('interval', n));\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `startDue`.\n * @param startDue If a `number`, is the time to wait before starting the interval.\n * If a `Date`, is the exact time at which to start the interval.\n * @param intervalDuration The delay between each value emitted in the interval. Passing a\n * negative number here will result in immediate completion after the first value is emitted, as though\n * no `intervalDuration` was passed at all.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable<number>;\n\n/**\n * @deprecated The signature allowing `undefined` to be passed for `intervalDuration` will be removed in v8. Use the `timer(dueTime, scheduler?)` signature instead.\n */\nexport function timer(dueTime: number | Date, unused: undefined, scheduler?: SchedulerLike): Observable<0>;\n\nexport function timer(\n dueTime: number | Date = 0,\n intervalOrScheduler?: number | SchedulerLike,\n scheduler: SchedulerLike = asyncScheduler\n): Observable<number> {\n // Since negative intervalDuration is treated as though no\n // interval was specified at all, we start with a negative number.\n let intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n // If we have a second argument, and it's a scheduler,\n // override the scheduler we had defaulted. Otherwise,\n // it must be an interval.\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n // Note that this *could* be negative, in which case\n // it's like not passing an intervalDuration at all.\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable((subscriber) => {\n // If a valid date is passed, calculate how long to wait before\n // executing the first value... otherwise, if it's a number just schedule\n // that many milliseconds (or scheduler-specified unit size) in the future.\n let due = isValidDate(dueTime) ? +dueTime - scheduler!.now() : dueTime;\n\n if (due < 0) {\n // Ensure we don't schedule in the future.\n due = 0;\n }\n\n // The incrementing value we emit.\n let n = 0;\n\n // Start the timer.\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n // Emit the next value and increment.\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n // If we have a interval after the initial timer,\n // reschedule with the period.\n this.schedule(undefined, intervalDuration);\n } else {\n // We didn't have an interval. So just complete.\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n", "import { Observable } from '../Observable';\nimport { asyncScheduler } from '../scheduler/async';\nimport { SchedulerLike } from '../types';\nimport { timer } from './timer';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * <span class=\"informal\">Emits incremental numbers periodically in time.</span>\n *\n * \n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n *\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n */\nexport function interval(period = 0, scheduler: SchedulerLike = asyncScheduler): Observable<number> {\n if (period < 0) {\n // We cannot schedule an interval in the past.\n period = 0;\n }\n\n return timer(period, period, scheduler);\n}\n", "import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, S extends T, A>(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function filter<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, A>(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction<T>;\nexport function filter<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * \n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n *\n * Emit only click events whose target was a DIV element\n *\n * ```ts\n * import { fromEvent, filter } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n // An index passed to our predicate function on each call.\n let index = 0;\n\n // Subscribe to the source, all errors and completions are\n // forwarded to the consumer.\n source.subscribe(\n // Call the predicate with the appropriate `this` context,\n // if the predicate returns `true`, then send the value\n // to the consumer.\n createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n );\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubjectLike, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\n\nexport interface ShareConfig<T> {\n /**\n * The factory used to create the subject that will connect the source observable to\n * multicast consumers.\n */\n connector?: () => SubjectLike<T>;\n /**\n * If `true`, the resulting observable will reset internal state on error from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"retried\" in the event of an error.\n * If `false`, when an error comes from the source it will push the error into the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent retries\n * or resubscriptions will resubscribe to that same subject. In all cases, RxJS subjects will emit the same error again, however\n * {@link ReplaySubject} will also push its buffered values before pushing the error.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnError?: boolean | ((error: any) => ObservableInput<any>);\n /**\n * If `true`, the resulting observable will reset internal state on completion from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"repeated\" after it is done.\n * If `false`, when the source completes, it will push the completion through the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent repeats\n * or resubscriptions will resubscribe to that same subject.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnComplete?: boolean | (() => ObservableInput<any>);\n /**\n * If `true`, when the number of subscribers to the resulting observable reaches zero due to those subscribers unsubscribing, the\n * internal state will be reset and the resulting observable will return to a \"cold\" state. This means that the next\n * time the resulting observable is subscribed to, a new subject will be created and the source will be subscribed to\n * again.\n * If `false`, when the number of subscribers to the resulting observable reaches zero due to unsubscription, the subject\n * will remain connected to the source, and new subscriptions to the result will be connected through that same subject.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnRefCountZero?: boolean | (() => ObservableInput<any>);\n}\n\nexport function share<T>(): MonoTypeOperatorFunction<T>;\n\nexport function share<T>(options: ShareConfig<T>): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * The subscription to the underlying source Observable can be reset (unsubscribe and resubscribe for new subscribers),\n * if the subscriber count to the shared observable drops to 0, or if the source Observable errors or completes. It is\n * possible to use notifier factories for the resets to allow for behaviors like conditional or delayed resets. Please\n * note that resetting on error or complete of the source Observable does not behave like a transparent retry or restart\n * of the source because the error or complete will be forwarded to all subscribers and their subscription will be\n * closed. Only new subscribers after a reset on error or complete happened will cause a fresh subscription to the\n * source. To achieve transparent retries or restarts pipe the source through appropriate operators before sharing.\n *\n * \n *\n * ## Example\n *\n * Generate new multicast Observable from the `source` Observable value\n *\n * ```ts\n * import { interval, tap, map, take, share } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n * tap(x => console.log('Processing: ', x)),\n * map(x => x * x),\n * take(6),\n * share()\n * );\n *\n * source.subscribe(x => console.log('subscription 1: ', x));\n * source.subscribe(x => console.log('subscription 2: ', x));\n *\n * // Logs:\n * // Processing: 0\n * // subscription 1: 0\n * // subscription 2: 0\n * // Processing: 1\n * // subscription 1: 1\n * // subscription 2: 1\n * // Processing: 2\n * // subscription 1: 4\n * // subscription 2: 4\n * // Processing: 3\n * // subscription 1: 9\n * // subscription 2: 9\n * // Processing: 4\n * // subscription 1: 16\n * // subscription 2: 16\n * // Processing: 5\n * // subscription 1: 25\n * // subscription 2: 25\n * ```\n *\n * ## Example with notifier factory: Delayed reset\n *\n * ```ts\n * import { interval, take, share, timer } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n * take(3),\n * share({\n * resetOnRefCountZero: () => timer(1000)\n * })\n * );\n *\n * const subscriptionOne = source.subscribe(x => console.log('subscription 1: ', x));\n * setTimeout(() => subscriptionOne.unsubscribe(), 1300);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 2: ', x)), 1700);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 3: ', x)), 5000);\n *\n * // Logs:\n * // subscription 1: 0\n * // (subscription 1 unsubscribes here)\n * // (subscription 2 subscribes here ~400ms later, source was not reset)\n * // subscription 2: 1\n * // subscription 2: 2\n * // (subscription 2 unsubscribes here)\n * // (subscription 3 subscribes here ~2000ms later, source did reset before)\n * // subscription 3: 0\n * // subscription 3: 1\n * // subscription 3: 2\n * ```\n *\n * @see {@link shareReplay}\n *\n * @return A function that returns an Observable that mirrors the source.\n */\nexport function share<T>(options: ShareConfig<T> = {}): MonoTypeOperatorFunction<T> {\n const { connector = () => new Subject<T>(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n // It's necessary to use a wrapper here, as the _operator_ must be\n // referentially transparent. Otherwise, it cannot be used in calls to the\n // static `pipe` function - to create a partial pipeline.\n //\n // The _operator function_ - the function returned by the _operator_ - will\n // not be referentially transparent - as it shares its source - but the\n // _operator function_ is called when the complete pipeline is composed via a\n // call to a source observable's `pipe` method - not when the static `pipe`\n // function is called.\n return (wrapperSource) => {\n let connection: SafeSubscriber<T> | undefined;\n let resetConnection: Subscription | undefined;\n let subject: SubjectLike<T> | undefined;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n\n const cancelReset = () => {\n resetConnection?.unsubscribe();\n resetConnection = undefined;\n };\n // Used to reset the internal state to a \"cold\"\n // state, as though it had never been subscribed to.\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n // We need to capture the connection before\n // we reset (if we need to reset).\n const conn = connection;\n reset();\n conn?.unsubscribe();\n };\n\n return operate<T, T>((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n\n // Create the subject if we don't have one yet. Grab a local reference to\n // it as well, which avoids non-null assertions when using it and, if we\n // connect to it now, then error/complete need a reference after it was\n // reset.\n const dest = (subject = subject ?? connector());\n\n // Add the finalization directly to the subscriber - instead of returning it -\n // so that the handling of the subscriber's unsubscription will be wired\n // up _before_ the subscription to the source occurs. This is done so that\n // the assignment to the source connection's `closed` property will be seen\n // by synchronous firehose sources.\n subscriber.add(() => {\n refCount--;\n\n // If we're resetting on refCount === 0, and it's 0, we only want to do\n // that on \"unsubscribe\", really. Resetting on error or completion is a different\n // configuration.\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n\n // The following line adds the subscription to the subscriber passed.\n // Basically, `subscriber === dest.subscribe(subscriber)` is `true`.\n dest.subscribe(subscriber);\n\n if (\n !connection &&\n // Check this shareReplay is still activate - it can be reset to 0\n // and be \"unsubscribed\" _before_ it actually subscribes.\n // If we were to subscribe then, it'd leak and get stuck.\n refCount > 0\n ) {\n // We need to create a subscriber here - rather than pass an observer and\n // assign the returned subscription to connection - because it's possible\n // for reentrant subscriptions to the shared observable to occur and in\n // those situations we want connection to be already-assigned so that we\n // don't create another connection to the source.\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\n\nfunction handleReset<T extends unknown[] = never[]>(\n reset: () => void,\n on: boolean | ((...args: T) => ObservableInput<any>),\n ...args: T\n): Subscription | undefined {\n if (on === true) {\n reset();\n return;\n }\n\n if (on === false) {\n return;\n }\n\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n", "import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switchAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n *\n * Generate new Observable according to source Observable values\n *\n * ```ts\n * import { of, switchMap } from 'rxjs';\n *\n * const switched = of(1, 2, 3).pipe(switchMap(x => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // 3\n * // 9\n * // 27\n * ```\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMap, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return operate((source, subscriber) => {\n let innerSubscriber: Subscriber<ObservedValueOf<O>> | null = null;\n let index = 0;\n // Whether or not the source subscription has completed\n let isComplete = false;\n\n // We only complete the result if the source is complete AND we don't have an active inner subscription.\n // This is called both when the source completes and when the inners complete.\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Cancel the previous inner subscription if there was one\n innerSubscriber?.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n // Start the next inner subscription\n innerFrom(project(value, outerIndex)).subscribe(\n (innerSubscriber = createOperatorSubscriber(\n subscriber,\n // When we get a new inner value, next it through. Note that this is\n // handling the deprecate result selector here. This is because with this architecture\n // it ends up being smaller than using the map operator.\n (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n () => {\n // The inner has completed. Null out the inner subscriber to\n // free up memory and to signal that we have no inner subscription\n // currently.\n innerSubscriber = null!;\n checkComplete();\n }\n ))\n );\n },\n () => {\n isComplete = true;\n checkComplete();\n }\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\n/**\n * An extension to the {@link Observer} interface used only by the {@link tap} operator.\n *\n * It provides a useful set of callbacks a user can register to do side-effects in\n * cases other than what the usual {@link Observer} callbacks are\n * ({@link guide/glossary-and-semantics#next next},\n * {@link guide/glossary-and-semantics#error error} and/or\n * {@link guide/glossary-and-semantics#complete complete}).\n *\n * ## Example\n *\n * ```ts\n * import { fromEvent, switchMap, tap, interval, take } from 'rxjs';\n *\n * const source$ = fromEvent(document, 'click');\n * const result$ = source$.pipe(\n * switchMap((_, i) => i % 2 === 0\n * ? fromEvent(document, 'mousemove').pipe(\n * tap({\n * subscribe: () => console.log('Subscribed to the mouse move events after click #' + i),\n * unsubscribe: () => console.log('Mouse move events #' + i + ' unsubscribed'),\n * finalize: () => console.log('Mouse move events #' + i + ' finalized')\n * })\n * )\n * : interval(1_000).pipe(\n * take(5),\n * tap({\n * subscribe: () => console.log('Subscribed to the 1-second interval events after click #' + i),\n * unsubscribe: () => console.log('1-second interval events #' + i + ' unsubscribed'),\n * finalize: () => console.log('1-second interval events #' + i + ' finalized')\n * })\n * )\n * )\n * );\n *\n * const subscription = result$.subscribe({\n * next: console.log\n * });\n *\n * setTimeout(() => {\n * console.log('Unsubscribe after 60 seconds');\n * subscription.unsubscribe();\n * }, 60_000);\n * ```\n */\nexport interface TapObserver<T> extends Observer<T> {\n /**\n * The callback that `tap` operator invokes at the moment when the source Observable\n * gets subscribed to.\n */\n subscribe: () => void;\n /**\n * The callback that `tap` operator invokes when an explicit\n * {@link guide/glossary-and-semantics#unsubscription unsubscribe} happens. It won't get invoked on\n * `error` or `complete` events.\n */\n unsubscribe: () => void;\n /**\n * The callback that `tap` operator invokes when any kind of\n * {@link guide/glossary-and-semantics#finalization finalization} happens - either when\n * the source Observable `error`s or `complete`s or when it gets explicitly unsubscribed\n * by the user. There is no difference in using this callback or the {@link finalize}\n * operator, but if you're already using `tap` operator, you can use this callback\n * instead. You'd get the same result in either case.\n */\n finalize: () => void;\n}\nexport function tap<T>(observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void)): MonoTypeOperatorFunction<T>;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap<T>(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * <span class=\"informal\">Used when you want to affect outside state with a notification without altering the notification</span>\n *\n * \n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Examples\n *\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit `'big'` or `'small'` depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of, tap, map } from 'rxjs';\n *\n * of(Math.random()).pipe(\n * tap(console.log),\n * map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of, tap } from 'rxjs';\n *\n * const source = of(1, 2, 3, 4, 5);\n *\n * source.pipe(\n * tap(n => {\n * if (n > 3) {\n * throw new TypeError(`Value ${ n } is greater than 3`);\n * }\n * })\n * )\n * .subscribe({ next: console.log, error: err => console.log(err.message) });\n * ```\n *\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `'X'` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side effect of logging to console.\n *\n * ```ts\n * import { of, concatMap, interval, take, map, tap } from 'rxjs';\n *\n * of(1, 2, 3).pipe(\n * concatMap(n => interval(1000).pipe(\n * take(Math.round(Math.random() * 10)),\n * map(() => 'X'),\n * tap({ complete: () => console.log(`Done with ${ n }`) })\n * ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link TapObserver}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap<T>(\n observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void) | null,\n error?: ((e: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T> {\n // We have to check to see not only if next is a function,\n // but if error or complete were passed. This is because someone\n // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n const tapObserver =\n isFunction(observerOrNext) || error || complete\n ? // tslint:disable-next-line: no-object-literal-type-assertion\n ({ next: observerOrNext as Exclude<typeof observerOrNext, Partial<TapObserver<T>>>, error, complete } as Partial<TapObserver<T>>)\n : observerOrNext;\n\n return tapObserver\n ? operate((source, subscriber) => {\n tapObserver.subscribe?.();\n let isUnsub = true;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n tapObserver.next?.(value);\n subscriber.next(value);\n },\n () => {\n isUnsub = false;\n tapObserver.complete?.();\n subscriber.complete();\n },\n (err) => {\n isUnsub = false;\n tapObserver.error?.(err);\n subscriber.error(err);\n },\n () => {\n if (isUnsub) {\n tapObserver.unsubscribe?.();\n }\n tapObserver.finalize?.();\n }\n )\n );\n })\n : // Tap was called with no valid tap observer or handler\n // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n // so we're going to just mirror the source.\n identity;\n}\n", "import { GetAppAndVersionResponse } from \"@api/command/os/GetAppAndVersionCommand\";\nimport { BatteryStatusFlags } from \"@api/command/os/GetBatteryStatusCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { Application } from \"@internal/manager-api/model/ManagerApiType\";\n\n/**\n * The battery status of a device.\n */\nexport type BatteryStatus = {\n readonly level: number;\n readonly voltage: number;\n readonly temperature: number;\n readonly current: number;\n readonly status: BatteryStatusFlags;\n};\n\n/**\n * The firmware version of a device.\n */\nexport type FirmwareVersion = {\n /**\n * Microcontroller Unit version\n */\n readonly mcu: string;\n\n /**\n * Bootloader version\n */\n readonly bootloader: string;\n\n /**\n * Operating System version\n */\n readonly os: string;\n};\n\n/**\n * The current application running on a device. Alias of GetAppAndVersionResponse.\n */\nexport type RunningApp = GetAppAndVersionResponse;\n\n/**\n * The state types of a device session.\n */\nexport enum DeviceSessionStateType {\n Connected,\n ReadyWithoutSecureChannel,\n ReadyWithSecureChannel,\n}\n\ntype DeviceSessionBaseState = {\n readonly sessionStateType: DeviceSessionStateType;\n\n /**\n * The status of the device.\n */\n readonly deviceStatus: DeviceStatus;\n\n /**\n * The name of the device.\n */\n readonly deviceName?: string;\n};\n\ntype DeviceSessionReadyState = {\n /**\n * The battery status of the device.\n * TODO: This should not be optional, but it is not in the current implementation.\n */\n readonly batteryStatus?: BatteryStatus;\n\n /**\n * The firmware version of the device.\n * TODO: This should not be optional, but it is not in the current implementation.\n */\n readonly firmwareVersion?: FirmwareVersion;\n\n /**\n * The current application running on the device.\n */\n readonly currentApp: RunningApp;\n\n /**\n * The current applications installed on the device.\n */\n readonly installedApps: Application[];\n};\n\n/**\n * The state of a connected device session.\n */\nexport type ConnectedState = DeviceSessionBaseState & {\n /**\n * The type of the device session state.\n */\n readonly sessionStateType: DeviceSessionStateType.Connected;\n};\n\n/**\n * The state of a device session when it is ready without a secure channel.\n */\nexport type ReadyWithoutSecureChannelState = DeviceSessionBaseState &\n DeviceSessionReadyState & {\n /**\n * The type of the device session state.\n */\n readonly sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel;\n };\n\n/**\n * The state of a device session when it is ready with a secure channel.\n */\nexport type ReadyWithSecureChannelState = DeviceSessionBaseState &\n DeviceSessionReadyState & {\n /**\n * The type of the device session state.\n */\n readonly sessionStateType: DeviceSessionStateType.ReadyWithSecureChannel;\n };\n\n/**\n * The state of a device session.\n */\nexport type DeviceSessionState =\n | ConnectedState\n | ReadyWithoutSecureChannelState\n | ReadyWithSecureChannelState;\n", "import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\nimport { filter, interval, map, Subscription, switchMap } from \"rxjs\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { GetAppAndVersionCommand } from \"@api/command/os/GetAppAndVersionCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { SdkError } from \"@api/Error\";\nimport { type LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\n/**\n * The arguments for the DeviceSessionRefresher.\n */\nexport type DeviceSessionRefresherArgs = {\n /**\n * The refresh interval in milliseconds.\n */\n refreshInterval: number;\n\n /**\n * The current device status when the refresher is created.\n */\n deviceStatus: Exclude<DeviceStatus, DeviceStatus.NOT_CONNECTED>;\n\n /**\n * The function used to send APDU commands to the device.\n */\n sendApduFn: (rawApdu: Uint8Array) => Promise<Either<SdkError, ApduResponse>>;\n\n /**\n * Callback that updates the state of the device session with\n * polling response.\n * @param callback - A function that will take the previous state and return the new state.\n * @returns void\n */\n updateStateFn(\n callback: (state: DeviceSessionState) => DeviceSessionState,\n ): void;\n};\n\n/**\n * The session refresher that periodically sends a command to refresh the session.\n */\n@injectable()\nexport class DeviceSessionRefresher {\n private readonly _logger: LoggerPublisherService;\n private readonly _getAppAndVersionCommand = new GetAppAndVersionCommand();\n private _deviceStatus: DeviceStatus;\n private _subscription: Subscription;\n\n constructor(\n {\n refreshInterval,\n deviceStatus,\n sendApduFn,\n updateStateFn,\n }: DeviceSessionRefresherArgs,\n logger: LoggerPublisherService,\n ) {\n this._deviceStatus = deviceStatus;\n this._logger = logger;\n this._subscription = interval(refreshInterval)\n .pipe(\n filter(\n () =>\n ![DeviceStatus.BUSY, DeviceStatus.NOT_CONNECTED].includes(\n this._deviceStatus,\n ),\n ),\n switchMap(() => {\n const rawApdu = this._getAppAndVersionCommand.getApdu().getRawApdu();\n return sendApduFn(rawApdu);\n }),\n map((resp) =>\n resp.caseOf({\n Left: (error) => {\n this._logger.error(\"Error in sending APDU when polling\", {\n data: { error },\n });\n return null;\n },\n Right: (data: ApduResponse) => {\n try {\n return this._getAppAndVersionCommand.parseResponse(data);\n } catch (error) {\n this._logger.error(\"Error in parsing APDU response\", {\n data: { error },\n });\n return null;\n }\n },\n }),\n ),\n filter((parsedResponse) => parsedResponse !== null),\n )\n .subscribe((parsedResponse) => {\n if (!isSuccessCommandResult(parsedResponse)) {\n return;\n }\n // `batteryStatus` and `firmwareVersion` are not available in the polling response.\n updateStateFn((state) => ({\n ...state,\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: this._deviceStatus,\n currentApp: parsedResponse.data,\n installedApps: \"installedApps\" in state ? state.installedApps : [],\n }));\n });\n }\n\n /**\n * Maintain a device status to prevent sending APDU when the device is busy.\n *\n * @param {DeviceStatus} deviceStatus - The new device status.\n */\n setDeviceStatus(deviceStatus: DeviceStatus) {\n if (deviceStatus === DeviceStatus.NOT_CONNECTED) {\n this.stop();\n }\n this._deviceStatus = deviceStatus;\n }\n\n /**\n * Stops the session refresher.\n * The refresher will no longer send commands to refresh the session.\n */\n stop() {\n if (!this._subscription || this._subscription.closed) {\n return;\n }\n this._subscription.unsubscribe();\n }\n}\n", "import { BehaviorSubject } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { Command } from \"@api/command/Command\";\nimport { CommandResult } from \"@api/command/model/CommandResult\";\nimport { ListAppsResponse } from \"@api/command/os/ListAppsCommand\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n DeviceAction,\n DeviceActionIntermediateValue,\n ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { SdkError } from \"@api/Error\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { InternalConnectedDevice } from \"@internal/transport/model/InternalConnectedDevice\";\n\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: InternalConnectedDevice;\n id?: DeviceSessionId;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: InternalConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _refresher: DeviceSessionRefresher;\n private readonly _managerApiService: ManagerApiService;\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n });\n this._refresher = new DeviceSessionRefresher(\n {\n refreshInterval: 1000,\n deviceStatus: DeviceStatus.CONNECTED,\n sendApduFn: (rawApdu: Uint8Array) =>\n this.sendApdu(rawApdu, {\n isPolling: true,\n triggersDisconnection: false,\n }),\n updateStateFn: (callback) => {\n const state = this._deviceState.getValue();\n this.setDeviceSessionState(callback(state));\n },\n },\n loggerModuleFactory(\"device-session-refresher\"),\n );\n this._managerApiService = managerApiService;\n }\n\n public get id() {\n return this._id;\n }\n\n public get connectedDevice() {\n return this._connectedDevice;\n }\n\n public get state() {\n return this._deviceState.asObservable();\n }\n\n public setDeviceSessionState(state: DeviceSessionState) {\n this._deviceState.next(state);\n }\n\n private updateDeviceStatus(deviceStatus: DeviceStatus) {\n const sessionState = this._deviceState.getValue();\n this._refresher.setDeviceStatus(deviceStatus);\n this._deviceState.next({\n ...sessionState,\n deviceStatus,\n });\n }\n\n async sendApdu(\n rawApdu: Uint8Array,\n options: { isPolling: boolean; triggersDisconnection: boolean } = {\n isPolling: false,\n triggersDisconnection: false,\n },\n ) {\n if (!options.isPolling) this.updateDeviceStatus(DeviceStatus.BUSY);\n\n const errorOrResponse = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n );\n\n return errorOrResponse.ifRight((response: ApduResponse) => {\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this.updateDeviceStatus(DeviceStatus.LOCKED);\n } else {\n this.updateDeviceStatus(DeviceStatus.CONNECTED);\n }\n });\n }\n\n async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends SdkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n ) => this.sendCommand(command),\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n getMetadataForAppHashes: (apps: ListAppsResponse) =>\n this._managerApiService.getAppsByHash(apps),\n });\n\n return {\n observable,\n cancel,\n };\n }\n\n close() {\n this.updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n }\n}\n", "export const managerApiTypes = {\n ManagerApiService: Symbol.for(\"ManagerApiService\"),\n ManagerApiDataSource: Symbol.for(\"ManagerApiDataSource\"),\n SdkConfig: Symbol.for(\"ManagerApiSdkConfig\"),\n};\n", "export const transportDiTypes = {\n Transport: Symbol.for(\"Transport\"),\n SdkConfig: Symbol.for(\"TransportSdkConfig\"),\n};\n", "import { SdkError } from \"@api/Error\";\n\nexport type PromptDeviceAccessError =\n | UsbHidTransportNotSupportedError\n | NoAccessibleDeviceError;\n\nexport type ConnectError = UnknownDeviceError | OpeningConnectionError;\n\nclass GeneralSdkError implements SdkError {\n _tag = \"GeneralSdkError\";\n originalError?: unknown;\n constructor(err?: unknown) {\n if (err instanceof Error) {\n this.originalError = err;\n } else {\n this.originalError = new Error(String(err));\n }\n }\n}\n\nexport class DeviceNotRecognizedError extends GeneralSdkError {\n override readonly _tag = \"DeviceNotRecognizedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class NoAccessibleDeviceError extends GeneralSdkError {\n override readonly _tag = \"NoAccessibleDeviceError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class OpeningConnectionError extends GeneralSdkError {\n override readonly _tag = \"ConnectionOpeningError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class UnknownDeviceError extends GeneralSdkError {\n override readonly _tag = \"UnknownDeviceError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class TransportNotSupportedError extends GeneralSdkError {\n override readonly _tag = \"TransportNotSupportedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class UsbHidTransportNotSupportedError extends GeneralSdkError {\n override readonly _tag = \"UsbHidTransportNotSupportedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class SendApduConcurrencyError extends GeneralSdkError {\n override readonly _tag = \"SendApduConcurrencyError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class DisconnectError extends GeneralSdkError {\n override readonly _tag = \"DisconnectError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class ReconnectionFailedError extends GeneralSdkError {\n override readonly _tag = \"ReconnectionFailedError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class HidSendReportError extends GeneralSdkError {\n override readonly _tag = \"HidSendReportError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n", "import { inject, injectable, multiInject } from \"inversify\";\n\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport type { Transport } from \"@api/transport/model/Transport\";\nimport { DeviceId } from \"@api/types\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport type { ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { TransportNotSupportedError } from \"@internal/transport/model/Errors\";\n\n/**\n * The arguments for the ConnectUseCase.\n */\nexport type ConnectUseCaseArgs = {\n /**\n * UUID of the device got from device discovery `StartDiscoveringUseCase`\n */\n device: DiscoveredDevice;\n};\n\n/**\n * Connects to a discovered device.\n */\n@injectable()\nexport class ConnectUseCase {\n private readonly _transports: Transport[];\n private readonly _sessionService: DeviceSessionService;\n private readonly _loggerFactory: (tag: string) => LoggerPublisherService;\n private readonly _managerApi: ManagerApiService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @multiInject(transportDiTypes.Transport)\n transports: Transport[],\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(managerApiTypes.ManagerApiService)\n managerApi: ManagerApiService,\n ) {\n this._sessionService = sessionService;\n this._transports = transports;\n this._loggerFactory = loggerFactory;\n this._logger = loggerFactory(\"ConnectUseCase\");\n this._managerApi = managerApi;\n }\n\n private handleDeviceDisconnect(deviceId: DeviceId) {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionByDeviceId(deviceId);\n deviceSessionOrError.map((deviceSession) => {\n this._sessionService.removeDeviceSession(deviceSession.id);\n });\n }\n\n async execute({ device }: ConnectUseCaseArgs): Promise<DeviceSessionId> {\n const transport = this._transports.find(\n (t) => t.getIdentifier() === device.transport,\n );\n if (!transport) {\n throw new TransportNotSupportedError(new Error(\"Unknown transport\"));\n }\n const either = await transport.connect({\n deviceId: device.id,\n onDisconnect: (dId) => this.handleDeviceDisconnect(dId),\n });\n\n return either.caseOf({\n Left: (error) => {\n this._logger.error(\"Error connecting to device\", {\n data: { deviceId: device.id, error },\n });\n throw error;\n },\n Right: (connectedDevice) => {\n const deviceSession = new DeviceSession(\n { connectedDevice },\n this._loggerFactory,\n this._managerApi,\n );\n this._sessionService.addDeviceSession(deviceSession);\n return deviceSession.id;\n },\n });\n }\n}\n", "import { inject, injectable, multiInject } from \"inversify\";\n\nimport type { Transport } from \"@api/transport/model/Transport\";\nimport type { DeviceSessionId } from \"@api/types\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { TransportNotSupportedError } from \"@internal/transport/model/Errors\";\n\n/**\n * The arguments for the DisconnectUseCase.\n */\nexport type DisconnectUseCaseArgs = {\n /**\n * Device session identifier from `DeviceSdk.connect`.\n */\n sessionId: DeviceSessionId;\n};\n\n/**\n * Disconnects to a discovered device.\n */\n@injectable()\nexport class DisconnectUseCase {\n private readonly _transports: Transport[];\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @multiInject(transportDiTypes.Transport)\n transports: Transport[],\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._transports = transports;\n this._logger = loggerFactory(\"DisconnectUseCase\");\n }\n\n async execute({ sessionId }: DisconnectUseCaseArgs): Promise<void> {\n const errorOrSession = this._sessionService.getDeviceSessionById(sessionId);\n\n return errorOrSession.caseOf({\n Left: (error) => {\n this._logger.error(\"Device session not found\", {\n data: { sessionId, error },\n });\n throw error;\n },\n Right: async (deviceSession) => {\n const transportIdentifier = deviceSession.connectedDevice.transport;\n const transport = this._transports.find(\n (t) => t.getIdentifier() === transportIdentifier,\n );\n if (!transport) {\n throw new TransportNotSupportedError(new Error(\"Unknown transport\"));\n }\n\n deviceSession.close();\n this._sessionService.removeDeviceSession(sessionId);\n await transport\n .disconnect({\n connectedDevice: deviceSession.connectedDevice,\n })\n .then((errorOrDisconnected) =>\n errorOrDisconnected.mapLeft((error) => {\n throw error;\n }),\n );\n },\n });\n }\n}\n", "import { DeviceId, DeviceModelId } from \"@api/device/DeviceModel\";\nimport { ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { InternalConnectedDevice } from \"@internal/transport/model/InternalConnectedDevice\";\n\ntype ConnectedDeviceConstructorArgs = {\n readonly internalConnectedDevice: InternalConnectedDevice;\n};\n\nexport class ConnectedDevice {\n public readonly id: DeviceId;\n public readonly modelId: DeviceModelId;\n public readonly name: string;\n public readonly type: ConnectionType;\n\n constructor({\n internalConnectedDevice: {\n id,\n deviceModel: { id: deviceModelId, productName: deviceName },\n type,\n },\n }: ConnectedDeviceConstructorArgs) {\n this.id = id;\n this.modelId = deviceModelId;\n this.name = deviceName;\n this.type = type;\n }\n}\n", "import { inject, injectable } from \"inversify\";\n\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nexport type GetConnectedDeviceUseCaseArgs = {\n sessionId: DeviceSessionId;\n};\n\n/**\n * Get a connected device from deviceSession id.\n */\n@injectable()\nexport class GetConnectedDeviceUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"GetConnectedDeviceUseCase\");\n }\n\n execute({ sessionId }: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return deviceSessionOrError.caseOf({\n Right: (deviceSession) =>\n new ConnectedDevice({\n internalConnectedDevice: deviceSession.connectedDevice,\n }),\n Left: (error) => {\n this._logger.error(\"Error getting session\", {\n data: { error },\n });\n throw error;\n },\n });\n }\n}\n", "import { injectable, multiInject } from \"inversify\";\nimport { map, mergeMap, Observable, of } from \"rxjs\";\n\nimport { DeviceModel } from \"@api/device/DeviceModel\";\nimport { DiscoveredDevice } from \"@api/transport/model/DiscoveredDevice\";\nimport type { Transport } from \"@api/transport/model/Transport\";\nimport { TransportIdentifier } from \"@api/transport/model/TransportIdentifier\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { TransportNotSupportedError } from \"@internal/transport/model/Errors\";\nimport { InternalDiscoveredDevice } from \"@internal/transport/model/InternalDiscoveredDevice\";\n\nexport type StartDiscoveringUseCaseArgs = {\n /**\n * Identifier of the transport to start discovering devices.\n * Can be undefined to discover all available transports in parralel.\n */\n transport?: TransportIdentifier;\n};\n\n/**\n * Starts discovering devices connected.\n *\n * For the WebHID implementation, this use-case needs to be called as a result of an user interaction (button \"click\" event for ex).\n */\n@injectable()\nexport class StartDiscoveringUseCase {\n constructor(\n @multiInject(transportDiTypes.Transport)\n private transports: Transport[],\n ) {}\n\n private mapDiscoveredDevice(\n device: InternalDiscoveredDevice,\n ): DiscoveredDevice {\n const deviceModel = new DeviceModel({\n id: device.id,\n model: device.deviceModel.id,\n name: device.deviceModel.productName,\n });\n return {\n id: device.id,\n deviceModel,\n transport: device.transport,\n };\n }\n\n execute({\n transport,\n }: StartDiscoveringUseCaseArgs): Observable<DiscoveredDevice> {\n if (transport) {\n const instance = this.transports.find(\n (t) => t.getIdentifier() === transport,\n );\n if (!instance) {\n throw new TransportNotSupportedError(new Error(\"Unknown transport\"));\n }\n return instance\n .startDiscovering()\n .pipe(map((device) => this.mapDiscoveredDevice(device)));\n } else {\n // Discover from all transports in parallel\n return of(...this.transports).pipe(\n mergeMap((instance) =>\n instance\n .startDiscovering()\n .pipe(map((device) => this.mapDiscoveredDevice(device))),\n ),\n );\n }\n }\n}\n", "import { injectable, multiInject } from \"inversify\";\n\nimport type { Transport } from \"@api/transport/model/Transport\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\n\n/**\n * Stops discovering devices connected.\n */\n@injectable()\nexport class StopDiscoveringUseCase {\n constructor(\n @multiInject(transportDiTypes.Transport)\n private transports: Transport[],\n ) {}\n\n execute(): void {\n for (const transport of this.transports) {\n transport.stopDiscovering();\n }\n }\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { discoveryTypes } from \"./discoveryTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const discoveryModuleFactory = ({ stub = false }: FactoryProps) =>\n new ContainerModule((bind, _unbind, _isBound, rebind) => {\n bind(discoveryTypes.ConnectUseCase).to(ConnectUseCase);\n bind(discoveryTypes.DisconnectUseCase).to(DisconnectUseCase);\n bind(discoveryTypes.StartDiscoveringUseCase).to(StartDiscoveringUseCase);\n bind(discoveryTypes.StopDiscoveringUseCase).to(StopDiscoveringUseCase);\n bind(discoveryTypes.GetConnectedDeviceUseCase).to(\n GetConnectedDeviceUseCase,\n );\n\n if (stub) {\n rebind(discoveryTypes.StartDiscoveringUseCase).to(StubUseCase);\n rebind(discoveryTypes.StopDiscoveringUseCase).to(StubUseCase);\n rebind(discoveryTypes.ConnectUseCase).to(StubUseCase);\n rebind(discoveryTypes.DisconnectUseCase).to(StubUseCase);\n rebind(discoveryTypes.GetConnectedDeviceUseCase).to(StubUseCase);\n }\n });\n", "export enum LogLevel {\n Fatal = 0,\n Error = 1,\n Warning = 2,\n Info = 3,\n Debug = 4,\n}\n", "import { injectable } from \"inversify\";\n\nimport { LogLevel } from \"@api/logger-subscriber/model/LogLevel\";\nimport { LogSubscriberOptions } from \"@api/logger-subscriber/model/LogSubscriberOptions\";\nimport { LoggerSubscriberService } from \"@api/logger-subscriber/service/LoggerSubscriberService\";\nimport { LogPublisherOptions } from \"@internal/logger-publisher/model/LogPublisherOptions\";\n\nimport { LoggerPublisherService } from \"./LoggerPublisherService\";\n\n@injectable()\nexport class DefaultLoggerPublisherService implements LoggerPublisherService {\n subscribers: LoggerSubscriberService[];\n tag: string;\n\n constructor(subscribers: LoggerSubscriberService[], tag: string) {\n this.subscribers = subscribers;\n this.tag = tag;\n }\n\n _log(level: LogLevel, message: string, options?: LogPublisherOptions): void {\n this.subscribers.forEach((subscriber) => {\n const subscriberOptions: LogSubscriberOptions = {\n timestamp: Date.now(),\n tag: this.tag,\n ...options,\n };\n subscriber.log(level, message, subscriberOptions);\n });\n }\n\n info(message: string, options?: LogPublisherOptions): void {\n this._log(LogLevel.Info, message, options);\n }\n\n warn(message: string, options?: LogPublisherOptions): void {\n this._log(LogLevel.Warning, message, options);\n }\n\n debug(message: string, options?: LogPublisherOptions): void {\n this._log(LogLevel.Debug, message, options);\n }\n\n error(message: string, options?: LogPublisherOptions): void {\n this._log(LogLevel.Error, message, options);\n }\n}\n", "import { ContainerModule, interfaces } from \"inversify\";\n\nimport { LoggerSubscriberService } from \"@api/logger-subscriber/service/LoggerSubscriberService\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\nimport { loggerTypes } from \"./loggerTypes\";\n\ntype FactoryProps = {\n subscribers: LoggerSubscriberService[];\n};\n\nexport const loggerModuleFactory = (\n { subscribers }: FactoryProps = { subscribers: [] },\n) =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind<interfaces.Factory<LoggerPublisherService>>(\n loggerTypes.LoggerPublisherServiceFactory,\n ).toFactory((_context) => {\n return (tag: string) =>\n new DefaultLoggerPublisherService(subscribers, tag);\n });\n },\n );\n", "'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n", "import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n", "'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n", "import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n", "import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n", "import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n", "\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n", "export const VERSION = \"1.7.7\";", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n", "'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n", "import { SdkError } from \"@api/Error\";\n\nexport class HttpFetchApiError implements SdkError {\n _tag = \"FetchError\";\n originalError?: unknown;\n\n constructor(public readonly error: unknown) {\n this.originalError = error;\n }\n}\n", "import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { EitherAsync } from \"purify-ts\";\n\nimport { type SdkConfig } from \"@api/SdkConfig\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport {\n Application,\n AppType,\n} from \"@internal/manager-api/model/ManagerApiType\";\n\nimport { ManagerApiDataSource } from \"./ManagerApiDataSource\";\nimport { ApplicationDto, AppTypeDto } from \"./ManagerApiDto\";\n\n@injectable()\nexport class AxiosManagerApiDataSource implements ManagerApiDataSource {\n private readonly baseUrl: string;\n constructor(@inject(managerApiTypes.SdkConfig) config: SdkConfig) {\n this.baseUrl = config.managerApiUrl;\n }\n\n private mapAppTypeDtoToAppType(appType: AppTypeDto): AppType {\n switch (appType) {\n case AppTypeDto.currency:\n return AppType.currency;\n case AppTypeDto.plugin:\n return AppType.plugin;\n case AppTypeDto.tool:\n return AppType.tool;\n case AppTypeDto.swap:\n return AppType.swap;\n }\n }\n\n private mapApplicationDtoToApplication(\n apps: Array<ApplicationDto | null>,\n ): Array<Application | null> {\n return apps.map((app) => {\n if (app === null) {\n return null;\n }\n\n const { applicationType, ...rest } = app;\n\n return {\n ...rest,\n applicationType: this.mapAppTypeDtoToAppType(applicationType),\n };\n });\n }\n\n getAppsByHash(\n hashes: string[],\n ): EitherAsync<HttpFetchApiError, Array<Application | null>> {\n return EitherAsync(() =>\n axios.post<Array<ApplicationDto | null>>(\n `${this.baseUrl}/v2/apps/hash`,\n hashes,\n ),\n )\n .map((res) => res.data)\n .map((apps) => this.mapApplicationDtoToApplication(apps))\n .mapLeft((error) => new HttpFetchApiError(error));\n }\n}\n", "import { inject, injectable } from \"inversify\";\nimport { EitherAsync } from \"purify-ts\";\n\nimport { ListAppsResponse } from \"@api/command/os/ListAppsCommand\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport { Application } from \"@internal/manager-api/model/ManagerApiType\";\n\nimport { ManagerApiService } from \"./ManagerApiService\";\n\n@injectable()\nexport class DefaultManagerApiService implements ManagerApiService {\n constructor(\n @inject(managerApiTypes.ManagerApiDataSource)\n private readonly dataSource: ManagerApiDataSource,\n ) {\n this.dataSource = dataSource;\n }\n\n getAppsByHash(apps: ListAppsResponse) {\n const hashes = apps.reduce<string[]>((acc, app) => {\n if (app.appFullHash) {\n return acc.concat(app.appFullHash);\n }\n\n return acc;\n }, []);\n\n return EitherAsync<HttpFetchApiError, Array<Application | null>>(\n async ({ fromPromise, throwE }) => {\n if (hashes.length === 0) {\n return [];\n }\n try {\n const response = await fromPromise(\n this.dataSource.getAppsByHash(hashes),\n );\n return response;\n } catch (error) {\n if (error instanceof HttpFetchApiError) {\n return throwE(error);\n }\n\n return throwE(new HttpFetchApiError(error));\n }\n },\n );\n }\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { SdkConfig } from \"@api/SdkConfig\";\nimport { AxiosManagerApiDataSource } from \"@internal/manager-api/data/AxiosManagerApiDataSource\";\nimport { DefaultManagerApiService } from \"@internal/manager-api/service/DefaultManagerApiService\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { managerApiTypes } from \"./managerApiTypes\";\n\ntype FactoryProps = {\n stub?: boolean;\n config: SdkConfig;\n};\n\nexport const managerApiModuleFactory = ({ stub, config }: FactoryProps) =>\n new ContainerModule((bind, _unbind, _isBound, rebind) => {\n bind(managerApiTypes.SdkConfig).toConstantValue(config);\n\n bind(managerApiTypes.ManagerApiDataSource).to(AxiosManagerApiDataSource);\n bind(managerApiTypes.ManagerApiService).to(DefaultManagerApiService);\n\n if (stub) {\n rebind(managerApiTypes.ManagerApiDataSource).to(StubUseCase);\n rebind(managerApiTypes.ManagerApiService).to(StubUseCase);\n }\n });\n", "export const DEFAULT_MANAGER_API_BASE_URL =\n \"https://manager.api.live.ledger.com/api\";\nexport const DEFAULT_MOCK_SERVER_BASE_URL = \"http://localhost:8080\";\n", "import { inject, injectable } from \"inversify\";\n\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { DeviceSessionId } from \"@api/types\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\n\n/**\n * The arguments for the SendApduUseCase.\n */\nexport type SendApduUseCaseArgs = {\n /**\n * Device session identifier from `DeviceSdk.connect`.\n */\n sessionId: DeviceSessionId;\n /**\n * Raw APDU to send to the device.\n */\n apdu: Uint8Array;\n};\n\n/**\n * Sends an APDU to a connected device.\n */\n@injectable()\nexport class SendApduUseCase {\n private readonly _sessionService: DeviceSessionService;\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n sessionService: DeviceSessionService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessionService = sessionService;\n this._logger = loggerFactory(\"SendApduUseCase\");\n }\n\n async execute({\n sessionId,\n apdu,\n }: SendApduUseCaseArgs): Promise<ApduResponse> {\n const deviceSessionOrError =\n this._sessionService.getDeviceSessionById(sessionId);\n\n return deviceSessionOrError.caseOf({\n // Case device session found\n Right: async (deviceSession) => {\n const response = await deviceSession.sendApdu(apdu);\n return response.caseOf({\n // Case APDU sent and response received successfully\n Right: (data) => data,\n // Case error sending or receiving APDU\n Left: (error) => {\n this._logger.error(\"Error sending APDU\", {\n data: { sessionId, apdu, error },\n });\n throw error;\n },\n });\n },\n // Case device session not found\n Left: (error) => {\n this._logger.error(\"Error getting deviceSession\", {\n data: { error },\n });\n throw error;\n },\n });\n }\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { SendApduUseCase } from \"@internal/send/use-case/SendApduUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { sendTypes } from \"./sendTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const sendModuleFactory = ({ stub = false }: FactoryProps) =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(sendTypes.SendApduUseCase).to(SendApduUseCase);\n if (stub) {\n rebind(sendTypes.SendApduUseCase).to(StubUseCase);\n }\n },\n );\n", "export type TransportIdentifier = string;\n\nexport enum BuiltinTransports {\n USB = \"USB\",\n MOCK_SERVER = \"MOCK_SERVER\",\n}\n", "import { HttpClient } from \"../HttpClient\";\nimport { Session } from \"../model/Session\";\n\ntype ConnectivityServiceArgs = {\n client: HttpClient;\n};\n\nexport class ConnectivityService {\n private client: HttpClient;\n\n constructor({ client }: ConnectivityServiceArgs) {\n this.client = client;\n }\n\n async connect(sessionId: string): Promise<Session> {\n return this.client.post<Session>(\"connect\", {}, { session_id: sessionId });\n }\n\n async disconnect(sessionId: string): Promise<boolean> {\n await this.client.post(\"disconnect\", {}, { session_id: sessionId });\n return true;\n }\n\n async disconnectAll(): Promise<boolean> {\n await this.client.get(\"clear\");\n return true;\n }\n\n async getConnected(): Promise<Session[]> {\n return this.client.get<Session[]>(\"get-connected\");\n }\n}\n", "import { HttpClient } from \"../HttpClient\";\nimport { Device } from \"../model/Device\";\n\nexport type DiscoveryServiceArgs = {\n client: HttpClient;\n};\n\nexport class DiscoveryService {\n private client: HttpClient;\n\n constructor({ client }: DiscoveryServiceArgs) {\n this.client = client;\n }\n\n async scanDevices(nbDevices?: number): Promise<Device[]> {\n return this.client.get<Device[]>(\n \"scan?\" +\n new URLSearchParams({ nb_devices: nbDevices?.toString() || \"1\" }),\n );\n }\n}\n", "import { DefaultHttpClient } from \"../DefaultHttpClient\";\nimport { HttpClient } from \"../HttpClient\";\nimport { Mock } from \"../model/Mock\";\n\nexport class MockService {\n private client: HttpClient;\n\n constructor(client: DefaultHttpClient) {\n this.client = client;\n }\n\n async get(sessionId: string): Promise<Mock[]> {\n return this.client.get<Mock[]>(\"mock\", { session_id: sessionId });\n }\n\n async add(\n sessionId: string,\n prefix: string,\n response: string,\n ): Promise<boolean> {\n return this.client.post<boolean>(\n \"mock\",\n { prefix, response },\n { session_id: sessionId },\n );\n }\n\n async delete(sessionId: string): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this.client\n .delete<undefined>(\"mock\", { session_id: sessionId })\n .then((_) => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n", "import { DefaultHttpClient } from \"../DefaultHttpClient\";\nimport { HttpClient } from \"../HttpClient\";\nimport { CommandResponse } from \"../model/CommandResponse\";\n\nexport class SendService {\n private client: HttpClient;\n\n constructor(client: DefaultHttpClient) {\n this.client = client;\n }\n\n async send(sessionId: string, command: string): Promise<CommandResponse> {\n return this.client.post<CommandResponse>(\n \"send\",\n { command: command },\n { session_id: sessionId },\n );\n }\n}\n", "import { HttpClient } from \"./HttpClient\";\n\nexport type HttpClientArgs = {\n readonly baseUrl: string;\n};\n\nexport class DefaultHttpClient implements HttpClient {\n private readonly baseUrl: string;\n\n constructor({ baseUrl }: HttpClientArgs) {\n this.baseUrl = baseUrl;\n }\n\n get<T>(endpoint: string, headers?: Record<string, string>): Promise<T> {\n const requestHeaders = this.buildHeaders(headers);\n return this.fetchRequest<T>(\"GET\", endpoint, undefined, requestHeaders);\n }\n\n post<T>(\n endpoint: string,\n body: object,\n headers?: Record<string, string>,\n ): Promise<T> {\n const requestHeaders = this.buildHeaders(headers);\n return this.fetchRequest<T>(\n \"POST\",\n endpoint,\n JSON.stringify(body),\n requestHeaders,\n );\n }\n\n delete<T>(endpoint: string, headers?: Record<string, string>): Promise<T> {\n const requestHeaders = this.buildHeaders(headers);\n return this.fetchRequest<T>(\"DELETE\", endpoint, undefined, requestHeaders);\n }\n\n private fetchRequest<T>(\n method: string,\n endpoint: string,\n body?: string,\n headers?: HeadersInit,\n ): Promise<T> {\n const requestOptions: RequestInit = {\n method,\n headers,\n body,\n redirect: \"follow\",\n };\n\n return new Promise<T>((resolve, reject) => {\n fetch(this.baseUrl + endpoint, requestOptions)\n .then((response) => {\n if (response.ok) {\n response\n .json()\n .then((data) => {\n resolve(data as T);\n })\n .catch((_error) => {\n // Success but no body, try as boolean\n resolve(true as T);\n });\n } else {\n reject(new Error(`HTTP error: ${response.status}`));\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n private buildHeaders(headers?: Record<string, string>): HeadersInit {\n const requestHeaders: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (headers) {\n Object.entries(headers).forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n }\n\n return requestHeaders;\n }\n}\n", "import { CommandResponse } from \"./model/CommandResponse\";\nimport { Device } from \"./model/Device\";\nimport { Mock } from \"./model/Mock\";\nimport { Session } from \"./model/Session\";\nimport { ConnectivityService } from \"./service/ConnectivityService\";\nimport { DiscoveryService } from \"./service/DiscoveryService\";\nimport { MockService } from \"./service/MockService\";\nimport { SendService } from \"./service/SendService\";\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\n\nexport class MockClient {\n // Services\n connectivityService: ConnectivityService;\n sendService: SendService;\n discoveryService: DiscoveryService;\n mockService: MockService;\n\n constructor(baseUrl: string) {\n const client = new DefaultHttpClient({ baseUrl: baseUrl + \"/\" });\n this.connectivityService = new ConnectivityService({ client });\n this.sendService = new SendService(client);\n this.discoveryService = new DiscoveryService({ client });\n this.mockService = new MockService(client);\n }\n\n async connect(sessionId: string): Promise<Session> {\n return this.connectivityService.connect(sessionId);\n }\n\n async disconnect(sessionId: string): Promise<boolean> {\n return this.connectivityService.disconnect(sessionId);\n }\n\n async disconnectAll(): Promise<boolean> {\n return this.connectivityService.disconnectAll();\n }\n\n async getConnected(): Promise<Session[]> {\n return this.connectivityService.getConnected();\n }\n\n async send(\n sessionId: string,\n binaryCommand: Uint8Array,\n ): Promise<CommandResponse> {\n const command = this.toHexString(binaryCommand);\n return this.sendService.send(sessionId, command);\n }\n\n async scan(nbDevices?: number): Promise<Device[]> {\n return this.discoveryService.scanDevices(nbDevices);\n }\n\n async addMock(\n sessionId: string,\n prefix: string,\n response: string,\n ): Promise<boolean> {\n return this.mockService.add(sessionId, prefix, response);\n }\n\n async getMocks(sessionId: string): Promise<Mock[]> {\n return this.mockService.get(sessionId);\n }\n\n async deleteMocks(sessionId: string): Promise<boolean> {\n return this.mockService.delete(sessionId);\n }\n\n //TODO: Move to Helper ?\n toHexString(arr: Uint8Array): string {\n return Array.from(arr, (i) => i.toString(16).padStart(2, \"0\")).join(\"\");\n }\n\n fromHexString(hexString: string): Uint8Array {\n if (!hexString) {\n return Uint8Array.from([]);\n }\n return new Uint8Array(\n hexString.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16)),\n );\n }\n}\n", "export type CommandResponseArgs = {\n readonly response: string;\n};\n\nexport class CommandResponse {\n readonly response: string;\n\n constructor({ response }: CommandResponseArgs) {\n this.response = response;\n }\n}\n", "export type DeviceArgs = {\n readonly id: string;\n readonly name: string;\n readonly device_type: string;\n readonly connectivity_type: string;\n};\n\nexport class Device {\n readonly id: string;\n readonly name: string;\n readonly device_type: string;\n readonly connectivity_type: string;\n\n constructor({ id, name, device_type, connectivity_type }: DeviceArgs) {\n this.id = id;\n this.name = name;\n this.device_type = device_type;\n this.connectivity_type = connectivity_type;\n }\n}\n", "export type MockArgs = {\n readonly prefix: string;\n readonly response: string;\n};\n\nexport class Mock {\n readonly prefix: string;\n readonly response: string;\n\n constructor({ prefix, response }: MockArgs) {\n this.prefix = prefix;\n this.response = response;\n }\n}\n", "import { Device } from \"./Device\";\n\nexport type SessionArgs = {\n readonly id: string;\n readonly device: Device;\n readonly current_app: string;\n readonly created_at: number;\n};\n\nexport class Session {\n readonly id: string;\n readonly device: Device;\n readonly currentApp: string;\n readonly created_at: number;\n\n constructor({ id, device, current_app, created_at }: SessionArgs) {\n this.id = id;\n this.device = device;\n this.currentApp = current_app;\n this.created_at = created_at;\n }\n}\n", "import {\n CommandResponse,\n Device,\n MockClient,\n Session,\n} from \"@ledgerhq/device-sdk-transport-mock\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\nimport { from, mergeMap, Observable } from \"rxjs\";\n\nimport { DeviceId } from \"@api/device/DeviceModel\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { SdkError } from \"@api/Error\";\nimport type { SdkConfig } from \"@api/SdkConfig\";\nimport { Transport } from \"@api/transport/model/Transport\";\nimport {\n BuiltinTransports,\n TransportIdentifier,\n} from \"@api/transport/model/TransportIdentifier\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { transportDiTypes } from \"@internal/transport/di/transportDiTypes\";\nimport { DisconnectHandler } from \"@internal/transport/model/DeviceConnection\";\nimport {\n ConnectError,\n DisconnectError,\n NoAccessibleDeviceError,\n OpeningConnectionError,\n} from \"@internal/transport/model/Errors\";\nimport { InternalConnectedDevice } from \"@internal/transport/model/InternalConnectedDevice\";\nimport { InternalDiscoveredDevice } from \"@internal/transport/model/InternalDiscoveredDevice\";\n\n@injectable()\nexport class MockTransport implements Transport {\n private logger: LoggerPublisherService;\n private mockClient: MockClient;\n private readonly identifier: TransportIdentifier =\n BuiltinTransports.MOCK_SERVER;\n\n constructor(\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n @inject(transportDiTypes.SdkConfig) config: SdkConfig,\n ) {\n this.logger = loggerServiceFactory(\"MockTransport\");\n this.mockClient = new MockClient(config.mockUrl);\n }\n\n isSupported(): boolean {\n return true;\n }\n\n getIdentifier(): TransportIdentifier {\n return this.identifier;\n }\n\n startDiscovering(): Observable<InternalDiscoveredDevice> {\n this.logger.debug(\"startDiscovering\");\n return from(\n this.mockClient.scan().then((devices: Device[]) => {\n return devices.map((device: Device) => {\n return {\n id: device.id,\n deviceModel: {\n id: device.device_type,\n productName: device.name,\n usbProductId: 0x10,\n legacyUsbProductId: 0x0001,\n bootloaderUsbProductId: 0x10,\n getBlockSize() {\n return 32;\n },\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n },\n transport: this.identifier,\n } as InternalDiscoveredDevice;\n });\n }),\n ).pipe(mergeMap((device) => device));\n }\n\n stopDiscovering(): void {\n //DO NOTHING HERE\n this.logger.debug(\"stopDiscovering\");\n }\n\n async connect(params: {\n deviceId: DeviceId;\n onDisconnect: DisconnectHandler;\n }): Promise<Either<ConnectError, InternalConnectedDevice>> {\n this.logger.debug(\"connect\");\n const sessionId: string = params.deviceId;\n try {\n const session: Session = await this.mockClient.connect(sessionId);\n this.logger.debug(\"connected device model id::\", {\n data: { session, sessionId },\n });\n const connectedDevice = {\n sendApdu: (apdu) => {\n return this.sendApdu(\n sessionId,\n params.deviceId,\n params.onDisconnect,\n apdu,\n );\n },\n deviceModel: {\n id: session.device.device_type,\n productName: session.device.name,\n usbProductId: 0x10,\n legacyUsbProductId: 0x0001,\n bootloaderUsbProductId: 0x10,\n getBlockSize() {\n return 32;\n },\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n },\n id: params.deviceId,\n type: session.device.connectivity_type,\n transport: this.identifier,\n } as InternalConnectedDevice;\n return Right(connectedDevice);\n } catch (error) {\n return Left(new OpeningConnectionError(error as Error));\n }\n }\n\n async disconnect(params: {\n connectedDevice: InternalConnectedDevice;\n }): Promise<Either<SdkError, void>> {\n this.logger.debug(\"disconnect\");\n const sessionId: string = params.connectedDevice.id;\n try {\n const success: boolean = await this.mockClient.disconnect(sessionId);\n if (!success) {\n return Left(\n new DisconnectError(new Error(`Failed to disconnect ${sessionId}`)),\n );\n }\n return Right(void 0);\n } catch (error) {\n return Left(new DisconnectError(error as Error));\n }\n }\n\n async sendApdu(\n sessionId: string,\n deviceId: DeviceId,\n onDisconnect: DisconnectHandler,\n apdu: Uint8Array,\n ): Promise<Either<SdkError, ApduResponse>> {\n this.logger.debug(\"send\");\n try {\n const response: CommandResponse = await this.mockClient.send(\n sessionId,\n apdu,\n );\n return Right({\n statusCode: this.mockClient.fromHexString(\n response.response.substring(\n response.response.length - 4,\n response.response.length,\n ),\n ),\n data: this.mockClient.fromHexString(\n response.response.substring(0, response.response.length - 4),\n ),\n } as ApduResponse);\n } catch (error) {\n onDisconnect(deviceId);\n return Left(new NoAccessibleDeviceError(error as Error));\n }\n }\n}\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n", "/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n", "/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule<T>(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n", "/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject<T>(): T & SentryGlobal {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) as T & SentryGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof SentryGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const global = (obj || getGlobalObject()) as SentryGlobal;\n const __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): boolean {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n", "/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n", "import { WrappedFunction } from '@sentry/types';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject, getGlobalSingleton } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject<Window | NodeJS.Global>();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert'] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<typeof CONSOLE_LEVELS[number], LoggerMethod>;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n const global = getGlobalObject<Window>();\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as Console & Record<string, unknown>;\n const wrappedLevels: Partial<LoggerConsoleMethods> = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial<Logger> = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (IS_DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (IS_DEBUG_BUILD) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nexport function convertToPlainObject(value: unknown): {\n [key: string]: unknown;\n} {\n let newObj = value as {\n [key: string]: unknown;\n };\n\n if (isError(value)) {\n newObj = {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value as ExtendedError),\n };\n } else if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n newObj = {\n type: event.type,\n target: serializeEventTarget(event.target),\n currentTarget: serializeEventTarget(event.currentTarget),\n ...getOwnProperties(event),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = event.detail;\n }\n }\n return newObj;\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: { [key: string]: unknown }): { [key: string]: unknown } {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = obj[property];\n }\n }\n return extractedProps;\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys<T>(val: T): T {\n if (isPlainObject(val)) {\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(val)) {\n if (typeof val[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(val[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return (val as any[]).map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '<unknown>';\n }\n return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n", "/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T> {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n ): PromiseLike<T | TResult> {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n return new SyncPromise<TResult>((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike<T>).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n", "import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject<Window>();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject<Window>();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n", "/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as <T>(scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike<Event | null> {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike<Event | null> {\n return new SyncPromise<Event | null>((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n", "import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number;\n public started: number;\n public duration?: number = 0;\n public status: SessionStatus = 'ok';\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n public ignoreDuration: boolean = false;\n\n public constructor(context?: Omit<SessionContext, 'started' | 'status'>) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n this.timestamp = startingTime;\n this.started = startingTime;\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n public update(context: SessionContext = {}): void {\n if (context.user) {\n if (!this.ipAddress && context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!this.did && !context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || timestampInSeconds();\n if (context.ignoreDuration) {\n this.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (!this.did && context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (this.ignoreDuration) {\n this.duration = undefined;\n } else if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n const duration = this.timestamp - this.started;\n this.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (!this.ipAddress && context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (!this.userAgent && context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n public close(status?: Exclude<SessionStatus, 'ok'>): void {\n if (status) {\n this.update({ status });\n } else if (this.status === 'ok') {\n this.update({ status: 'exited' });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n public toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration?: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: this.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(this.started * 1000).toISOString(),\n timestamp: new Date(this.timestamp * 1000).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: {\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n },\n });\n }\n}\n", "/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n", "/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @hidden\n * @deprecated Can be removed once `Hub.getActiveDomain` is removed.\n */\nexport interface DomainAsCarrier extends Carrier {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n members: { [key: string]: any }[];\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient<C extends Client>(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n session.close();\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n currentSession.update({ status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient<M extends keyof Client>(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n IS_DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n IS_DEBUG_BUILD && logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton<Hub>('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n", "import { getCurrentHub, Hub, Scope } from '@sentry/hub';\nimport {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n Extra,\n Extras,\n Primitive,\n Severity,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\n\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub<T>(method: string, ...args: any[]): T {\n const hub = getCurrentHub();\n if (hub && hub[method as keyof Hub]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (hub[method as keyof Hub] as any)(...args);\n }\n throw new Error(`No hub defined or ${method} was not found on the hub, please open a bug report.`);\n}\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): string {\n const syntheticException = new Error('Sentry syntheticException');\n\n return callOnHub('captureException', exception, {\n captureContext,\n originalException: exception,\n syntheticException,\n });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | Severity): string {\n const syntheticException = new Error(message);\n\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException,\n ...context,\n });\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event): string {\n return callOnHub('captureEvent', event);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): void {\n callOnHub<void>('configureScope', callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n callOnHub<void>('addBreadcrumb', breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): void {\n callOnHub<void>('setContext', name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): void {\n callOnHub<void>('setExtras', extras);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n callOnHub<void>('setTags', tags);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): void {\n callOnHub<void>('setExtra', key, extra);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): void {\n callOnHub<void>('setTag', key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): void {\n callOnHub<void>('setUser', user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): void {\n callOnHub<void>('withScope', callback);\n}\n\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method: string, ...args: any[]): void {\n callOnHub<void>('_invokeClient', method, ...args);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n return callOnHub('startTransaction', { ...context }, customSamplingContext);\n}\n", "import { DeviceId } from \"@api/device/DeviceModel\";\nimport { ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { TransportIdentifier } from \"@api/transport/model/TransportIdentifier\";\nimport { InternalDeviceModel } from \"@internal/device-model/model/DeviceModel\";\nimport { SendApduFnType } from \"@internal/transport/model/DeviceConnection\";\n\n/**\n * The internal connected device.\n */\nexport type ConnectedDeviceConstructorArgs = {\n id: DeviceId;\n deviceModel: InternalDeviceModel;\n type: ConnectionType;\n transport: TransportIdentifier;\n sendApdu: SendApduFnType;\n};\n\nexport class InternalConnectedDevice {\n public readonly id: DeviceId;\n public readonly deviceModel: InternalDeviceModel;\n public readonly sendApdu: SendApduFnType;\n public readonly type: ConnectionType;\n public readonly transport: TransportIdentifier;\n\n constructor({\n id,\n deviceModel,\n type,\n transport,\n sendApdu,\n }: ConnectedDeviceConstructorArgs) {\n this.id = id;\n this.deviceModel = deviceModel;\n this.sendApdu = sendApdu;\n this.type = type;\n this.transport = transport;\n }\n}\n", "// [SHOULD] Move it to device-model module\nexport const LEDGER_VENDOR_ID = 0x2c97;\nexport const FRAME_SIZE = 64;\nexport const RECONNECT_DEVICE_TIMEOUT = 6000; // in some cases, when opening/closing an app, it takes up to 6s between the HID \"disconnect\" and \"connect\" events\n", "export const usbDiTypes = {\n UsbHidDeviceConnectionFactory: Symbol.for(\"UsbHidDeviceConnectionFactory\"),\n};\n", "import * as Sentry from \"@sentry/minimal\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, EitherAsync, Left, Maybe, Right } from \"purify-ts\";\nimport { from, Observable, switchMap } from \"rxjs\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { DeviceId } from \"@api/device/DeviceModel\";\nimport { ConnectionType } from \"@api/discovery/ConnectionType\";\nimport { SdkError } from \"@api/Error\";\nimport { Transport } from \"@api/transport/model/Transport\";\nimport {\n BuiltinTransports,\n TransportIdentifier,\n} from \"@api/transport/model/TransportIdentifier\";\nimport type { DeviceModelDataSource } from \"@internal/device-model/data/DeviceModelDataSource\";\nimport { deviceModelTypes } from \"@internal/device-model/di/deviceModelTypes\";\nimport { InternalDeviceModel } from \"@internal/device-model/model/DeviceModel\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport type { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { DisconnectHandler } from \"@internal/transport/model/DeviceConnection\";\nimport {\n ConnectError,\n DeviceNotRecognizedError,\n DisconnectError,\n NoAccessibleDeviceError,\n OpeningConnectionError,\n type PromptDeviceAccessError,\n UnknownDeviceError,\n UsbHidTransportNotSupportedError,\n} from \"@internal/transport/model/Errors\";\nimport { InternalConnectedDevice } from \"@internal/transport/model/InternalConnectedDevice\";\nimport { InternalDiscoveredDevice } from \"@internal/transport/model/InternalDiscoveredDevice\";\nimport { LEDGER_VENDOR_ID } from \"@internal/transport/usb/data/UsbHidConfig\";\nimport { usbDiTypes } from \"@internal/transport/usb/di/usbDiTypes\";\nimport { UsbHidDeviceConnectionFactory } from \"@internal/transport/usb/service/UsbHidDeviceConnectionFactory\";\nimport { UsbHidDeviceConnection } from \"@internal/transport/usb/transport/UsbHidDeviceConnection\";\n\n// An attempt to manage the state of several devices with one transport. Not final.\ntype WebHidInternalDevice = {\n id: DeviceId;\n hidDevice: HIDDevice;\n discoveredDevice: InternalDiscoveredDevice;\n};\n\n@injectable()\nexport class WebUsbHidTransport implements Transport {\n /** Maps DeviceId to an internal object containing the associated DiscoveredDevice and HIDDevice */\n private _internalDevicesById: Map<DeviceId, WebHidInternalDevice> = new Map();\n /** Maps all *connected* HIDDevice to their UsbHidDeviceConnection */\n private _deviceConnectionsByHidDevice: Map<\n HIDDevice,\n UsbHidDeviceConnection\n > = new Map();\n /** Set of all the UsbHidDeviceConnection for which HIDDevice has been disconnected, so they are waiting for a reconnection */\n private _deviceConnectionsPendingReconnection: Set<UsbHidDeviceConnection> =\n new Set();\n /** AbortController to stop listening to HID connection events */\n private _connectionListenersAbortController: AbortController;\n private _logger: LoggerPublisherService;\n private _usbHidDeviceConnectionFactory: UsbHidDeviceConnectionFactory;\n private readonly connectionType: ConnectionType = \"USB\";\n private readonly identifier: TransportIdentifier = BuiltinTransports.USB;\n\n constructor(\n @inject(deviceModelTypes.DeviceModelDataSource)\n private deviceModelDataSource: DeviceModelDataSource,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n @inject(usbDiTypes.UsbHidDeviceConnectionFactory)\n usbHidDeviceConnectionFactory: UsbHidDeviceConnectionFactory,\n ) {\n this._connectionListenersAbortController = new AbortController();\n this._logger = loggerServiceFactory(\"WebUsbHidTransport\");\n this._usbHidDeviceConnectionFactory = usbHidDeviceConnectionFactory;\n\n this.hidApi.map((hidApi) => {\n // FIXME: we should not override the global navigator.hid.onconnect and navigator.hid.ondisconnect but instead use addEventListener\n // The thing is if we want to do that we need a destroy() method on the SDK to remove the event listeners\n hidApi.ondisconnect = (event) =>\n this.handleDeviceDisconnectionEvent(event);\n hidApi.onconnect = (event) => this.handleDeviceConnectionEvent(event);\n });\n }\n\n /**\n * Get the WebHID API if supported or error\n * @returns `Either<UsbHidTransportNotSupportedError, HID>`\n */\n private get hidApi(): Either<UsbHidTransportNotSupportedError, HID> {\n if (this.isSupported()) {\n return Right(navigator.hid);\n }\n\n return Left(new UsbHidTransportNotSupportedError(\"WebHID not supported\"));\n }\n\n isSupported() {\n try {\n const result = !!navigator?.hid;\n this._logger.debug(`isSupported: ${result}`);\n return result;\n } catch (error) {\n this._logger.error(`isSupported: error`, { data: { error } });\n return false;\n }\n }\n\n getIdentifier(): TransportIdentifier {\n return this.identifier;\n }\n\n /**\n * Currently: as there is no way to uniquely identify a device, we might need to always update the internal mapping\n * of devices when prompting for device access.\n *\n * Also, we cannot trust hidApi.getDevices() as 2 devices of the same models (even on the same USB port) will be recognized\n * as the same devices.\n */\n // private async promptDeviceAccess(): Promise<Either<PromptDeviceAccessError, DiscoveredDeviceDto[]>> {\n private async promptDeviceAccess(): Promise<\n Either<PromptDeviceAccessError, HIDDevice[]>\n > {\n return EitherAsync.liftEither(this.hidApi)\n .map(async (hidApi) => {\n // `requestDevice` returns an array. but normally the user can select only one device at a time.\n let hidDevices: HIDDevice[] = [];\n\n try {\n hidDevices = await hidApi.requestDevice({\n filters: [{ vendorId: LEDGER_VENDOR_ID }],\n });\n } catch (error) {\n const deviceError = new NoAccessibleDeviceError(error);\n this._logger.error(`promptDeviceAccess: error requesting device`, {\n data: { error },\n });\n Sentry.captureException(deviceError);\n throw deviceError;\n }\n\n this._logger.debug(\n `promptDeviceAccess: hidDevices len ${hidDevices.length}`,\n );\n\n // Granted access to 0 device (by clicking on cancel for ex) results in an error\n if (hidDevices.length === 0) {\n this._logger.warn(\"No device was selected\");\n throw new NoAccessibleDeviceError(\"No selected device\");\n }\n\n const discoveredHidDevices: HIDDevice[] = [];\n\n for (const hidDevice of hidDevices) {\n discoveredHidDevices.push(hidDevice);\n\n this._logger.debug(`promptDeviceAccess: selected device`, {\n data: { hidDevice },\n });\n }\n\n return discoveredHidDevices;\n })\n .run();\n }\n\n /**\n * For WebHID, the client can only discover devices for which the user granted access to.\n *\n * The issue is that once a user grant access to a device of a model/productId A, any other model/productId A device will be accessible.\n * Even if plugged on another USB port.\n * So we cannot rely on the `hid.getDevices` to get the list of accessible devices, because it is not possible to differentiate\n * between 2 devices of the same model.\n * Neither on `connect` and `disconnect` events.\n * We can only rely on the `hid.requestDevice` because it is the user who will select the device that we can access.\n *\n * 2 possible implementations:\n * - only `hid.requestDevice` and return the one selected device\n * - `hid.getDevices` first to get the previously accessible devices, then a `hid.requestDevice` to get any new one\n *\n * [ASK] Should we also subscribe to hid events `connect` and `disconnect` ?\n *\n * [ASK] For the 2nd option: the DiscoveredDevice could have a `isSelected` property ?\n * So the consumer can directly select this device.\n */\n startDiscovering(): Observable<InternalDiscoveredDevice> {\n this._logger.debug(\"startDiscovering\");\n\n // Logs the connection and disconnection events\n this.startListeningToConnectionEvents();\n\n return from(this.promptDeviceAccess()).pipe(\n switchMap((either) => {\n return either.caseOf({\n Left: (error) => {\n this._logger.error(\"Error while getting accessible device\", {\n data: { error },\n });\n Sentry.captureException(error);\n throw error;\n },\n Right: (hidDevices) => {\n this._logger.info(`Got access to ${hidDevices.length} HID devices`);\n\n const discoveredDevices = hidDevices.map((hidDevice) => {\n const matchingInternalDevice = Array.from(\n this._internalDevicesById.values(),\n ).find(\n (internalDevice) => internalDevice.hidDevice === hidDevice,\n );\n\n if (matchingInternalDevice) {\n this._logger.debug(\n `Device already discovered ${matchingInternalDevice.id}`,\n );\n return matchingInternalDevice.discoveredDevice;\n }\n const maybeDeviceModel = this.getDeviceModel(hidDevice);\n return maybeDeviceModel.caseOf({\n Just: (deviceModel) => {\n const id = uuid();\n\n const discoveredDevice = {\n id,\n deviceModel,\n transport: this.identifier,\n };\n\n const internalDevice: WebHidInternalDevice = {\n id,\n hidDevice,\n discoveredDevice,\n };\n\n this._logger.debug(\n `Discovered device ${id} ${discoveredDevice.deviceModel.productName}`,\n );\n this._internalDevicesById.set(id, internalDevice);\n\n return discoveredDevice;\n },\n Nothing: () => {\n // [ASK] Or we just ignore the not recognized device ? And log them\n this._logger.warn(\n `Device not recognized: hidDevice.productId: 0x${hidDevice.productId.toString(16)}`,\n );\n throw new DeviceNotRecognizedError(\n `Device not recognized: hidDevice.productId: 0x${hidDevice.productId.toString(16)}`,\n );\n },\n });\n });\n return from(discoveredDevices);\n },\n });\n }),\n );\n }\n\n stopDiscovering(): void {\n this._logger.debug(\"stopDiscovering\");\n\n this.stopListeningToConnectionEvents();\n }\n\n /**\n * Logs `connect` and `disconnect` events for already accessible devices\n */\n private startListeningToConnectionEvents(): void {\n this._logger.debug(\"startListeningToConnectionEvents\");\n\n this.hidApi.map((hidApi) => {\n hidApi.addEventListener(\n \"connect\",\n (event) => {\n this._logger.debug(\"connection event\", { data: { event } });\n },\n { signal: this._connectionListenersAbortController.signal },\n );\n\n hidApi.addEventListener(\n \"disconnect\",\n (event) => {\n this._logger.debug(\"disconnect event\", { data: { event } });\n },\n { signal: this._connectionListenersAbortController.signal },\n );\n });\n }\n\n private stopListeningToConnectionEvents(): void {\n this._logger.debug(\"stopListeningToConnectionEvents\");\n this._connectionListenersAbortController.abort();\n }\n\n /**\n * Connect to a HID USB device and update the internal state of the associated device\n */\n async connect({\n deviceId,\n onDisconnect,\n }: {\n deviceId: DeviceId;\n onDisconnect: DisconnectHandler;\n }): Promise<Either<ConnectError, InternalConnectedDevice>> {\n this._logger.debug(\"connect\", { data: { deviceId } });\n\n const internalDevice = this._internalDevicesById.get(deviceId);\n\n if (!internalDevice) {\n this._logger.error(`Unknown device ${deviceId}`);\n return Left(new UnknownDeviceError(`Unknown device ${deviceId}`));\n }\n\n try {\n await internalDevice.hidDevice.open();\n } catch (error) {\n if (error instanceof DOMException && error.name === \"InvalidStateError\") {\n this._logger.debug(`Device ${deviceId} is already opened`);\n } else {\n const connectionError = new OpeningConnectionError(error);\n this._logger.debug(`Error while opening device: ${deviceId}`, {\n data: { error },\n });\n Sentry.captureException(connectionError);\n return Left(connectionError);\n }\n }\n\n const {\n discoveredDevice: { deviceModel },\n } = internalDevice;\n\n const deviceConnection = this._usbHidDeviceConnectionFactory.create(\n internalDevice.hidDevice,\n {\n onConnectionTerminated: () => {\n onDisconnect(deviceId);\n this._deviceConnectionsPendingReconnection.delete(deviceConnection);\n this.deleteInternalDevice({ internalDevice });\n },\n deviceId,\n },\n );\n\n this._deviceConnectionsByHidDevice.set(\n internalDevice.hidDevice,\n deviceConnection,\n );\n const connectedDevice = new InternalConnectedDevice({\n sendApdu: (apdu, triggersDisconnection) =>\n deviceConnection.sendApdu(apdu, triggersDisconnection),\n deviceModel,\n id: deviceId,\n type: this.connectionType,\n transport: this.identifier,\n });\n return Right(connectedDevice);\n }\n\n private getDeviceModel(hidDevice: HIDDevice): Maybe<InternalDeviceModel> {\n const { productId } = hidDevice;\n const matchingModel = this.deviceModelDataSource.getAllDeviceModels().find(\n (deviceModel) =>\n // outside of bootloader mode, the value that we need to identify a device model is the first byte of the actual hidDevice.productId\n deviceModel.usbProductId === productId >> 8 ||\n deviceModel.bootloaderUsbProductId === productId,\n );\n return matchingModel ? Maybe.of(matchingModel) : Maybe.zero();\n }\n\n private getHidUsbProductId(hidDevice: HIDDevice): number {\n return this.getDeviceModel(hidDevice).caseOf({\n Just: (deviceModel) => deviceModel.usbProductId,\n Nothing: () => hidDevice.productId >> 8,\n });\n }\n\n private async deleteInternalDevice(params: {\n internalDevice: WebHidInternalDevice;\n }): Promise<Either<SdkError, void>> {\n this._logger.debug(\"_internalDisconnect\", {\n data: { connectedDevice: params },\n });\n const { internalDevice } = params;\n\n try {\n this._internalDevicesById.delete(internalDevice.id);\n this._deviceConnectionsByHidDevice.delete(internalDevice.hidDevice);\n await internalDevice.hidDevice.close();\n return Right(void 0);\n } catch (error) {\n return Left(new DisconnectError(error));\n }\n }\n\n /**\n * Disconnect from a HID USB device\n */\n async disconnect(params: {\n connectedDevice: InternalConnectedDevice;\n }): Promise<Either<SdkError, void>> {\n this._logger.debug(\"disconnect\", { data: { connectedDevice: params } });\n const internalDevice = this._internalDevicesById.get(\n params.connectedDevice.id,\n );\n\n if (!internalDevice) {\n this._logger.error(`Unknown device ${params.connectedDevice.id}`);\n return Left(\n new UnknownDeviceError(`Unknown device ${params.connectedDevice.id}`),\n );\n }\n\n const deviceConnection = this._deviceConnectionsByHidDevice.get(\n internalDevice.hidDevice,\n );\n\n deviceConnection?.disconnect();\n\n return this.deleteInternalDevice({\n internalDevice,\n });\n }\n\n /**\n * Type guard to check if the event is a HID connection event\n * @param event\n * @private\n */\n private isHIDConnectionEvent(event: Event): event is HIDConnectionEvent {\n return (\n \"device\" in event &&\n typeof event.device === \"object\" &&\n event.device !== null &&\n \"productId\" in event.device &&\n typeof event.device.productId === \"number\"\n );\n }\n\n /**\n * Handle the disconnection event of a HID device\n * @param event\n */\n private async handleDeviceDisconnectionEvent(event: Event) {\n if (!this.isHIDConnectionEvent(event)) {\n this._logger.error(\"Invalid event\", { data: { event } });\n return;\n }\n\n this._logger.info(\"[handleDeviceDisconnectionEvent] Device disconnected\", {\n data: { event },\n });\n\n try {\n await event.device.close();\n } catch (error) {\n this._logger.error(\"Error while closing device \", {\n data: { event, error },\n });\n }\n\n const matchingDeviceConnection = this._deviceConnectionsByHidDevice.get(\n event.device,\n );\n\n if (matchingDeviceConnection) {\n matchingDeviceConnection.lostConnection();\n this._deviceConnectionsPendingReconnection.add(matchingDeviceConnection);\n this._deviceConnectionsByHidDevice.delete(event.device);\n }\n }\n\n /**\n * Handle the connection event of a HID device\n * @param event\n */\n private handleDeviceConnectionEvent(event: Event) {\n if (!this.isHIDConnectionEvent(event)) {\n this._logger.error(\"Invalid event\", { data: { event } });\n return;\n }\n\n this._logger.info(\"[handleDeviceConnectionEvent] Device connected\", {\n data: { event },\n });\n\n const matchingDeviceConnection = Array.from(\n this._deviceConnectionsPendingReconnection,\n ).find(\n (deviceConnection) =>\n this.getHidUsbProductId(deviceConnection.device) ===\n this.getHidUsbProductId(event.device),\n );\n if (!matchingDeviceConnection) return;\n\n const matchingInternalDevice = this._internalDevicesById.get(\n matchingDeviceConnection.deviceId,\n );\n\n if (!matchingInternalDevice) {\n this._logger.error(\"Internal device not found\", {\n data: { matchingDeviceConnection },\n });\n return;\n }\n this._deviceConnectionsPendingReconnection.delete(matchingDeviceConnection);\n this._deviceConnectionsByHidDevice.set(\n event.device,\n matchingDeviceConnection,\n );\n\n this._internalDevicesById.set(matchingDeviceConnection.deviceId, {\n ...matchingInternalDevice,\n hidDevice: event.device,\n });\n\n try {\n matchingDeviceConnection.reconnectHidDevice(event.device);\n } catch (error) {\n this._logger.error(\"Error while reconnecting to device\", {\n data: { event, error },\n });\n matchingDeviceConnection.disconnect();\n }\n }\n}\n", "import { interfaces } from \"inversify\";\n\nimport { Transport } from \"@api/transport/model/Transport\";\nimport { BuiltinTransports } from \"@api/transport/model/TransportIdentifier\";\nimport { MockTransport } from \"@internal/transport/mockserver/MockserverTransport\";\nimport { WebUsbHidTransport } from \"@internal/transport/usb/transport/WebUsbHidTransport\";\n\nexport class TransportDataSource {\n private static transports: {\n [transport in BuiltinTransports]: interfaces.Newable<Transport>;\n } = {\n [BuiltinTransports.USB]: WebUsbHidTransport,\n [BuiltinTransports.MOCK_SERVER]: MockTransport,\n };\n\n static get(transport: BuiltinTransports): interfaces.Newable<Transport> {\n return TransportDataSource.transports[transport];\n }\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { SdkConfig } from \"@api/SdkConfig\";\nimport { Transport } from \"@api/transport/model/Transport\";\nimport { BuiltinTransports } from \"@api/transport/model/TransportIdentifier\";\nimport { TransportDataSource } from \"@internal/transport/data/TransportDataSource\";\n\nimport { transportDiTypes } from \"./transportDiTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n transports: BuiltinTransports[];\n customTransports: Transport[];\n config: SdkConfig;\n};\n\nexport const transportModuleFactory = ({\n stub = false,\n transports = [],\n customTransports = [],\n config,\n}: Partial<FactoryProps> = {}) =>\n new ContainerModule((bind, _unbind, _isBound, _rebind) => {\n for (const transport of transports) {\n bind(transportDiTypes.Transport)\n .to(TransportDataSource.get(transport))\n .inSingletonScope();\n }\n for (const transport of customTransports) {\n bind(transportDiTypes.Transport).toConstantValue(transport);\n }\n bind(transportDiTypes.SdkConfig).toConstantValue(config);\n if (stub) {\n // Add stubs here\n }\n });\n", "import { inject } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\nimport { Subject } from \"rxjs\";\n\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { SdkError } from \"@api/Error\";\nimport { DeviceId } from \"@api/types\";\nimport { ApduReceiverService } from \"@internal/device-session/service/ApduReceiverService\";\nimport { ApduSenderService } from \"@internal/device-session/service/ApduSenderService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport type { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { DeviceConnection } from \"@internal/transport/model/DeviceConnection\";\nimport { ReconnectionFailedError } from \"@internal/transport/model/Errors\";\nimport { HidSendReportError } from \"@internal/transport/model/Errors\";\nimport { RECONNECT_DEVICE_TIMEOUT } from \"@internal/transport/usb/data/UsbHidConfig\";\n\ntype UsbHidDeviceConnectionConstructorArgs = {\n device: HIDDevice;\n deviceId: DeviceId;\n apduSender: ApduSenderService;\n apduReceiver: ApduReceiverService;\n onConnectionTerminated: () => void;\n};\n\n/**\n * Class to manage the connection with a USB HID device.\n * It sends APDU commands to the device and receives the responses.\n * It handles temporary disconnections and reconnections.\n */\nexport class UsbHidDeviceConnection implements DeviceConnection {\n private _device: HIDDevice;\n private _deviceId: DeviceId;\n private readonly _apduSender: ApduSenderService;\n private readonly _apduReceiver: ApduReceiverService;\n private _sendApduSubject: Subject<ApduResponse> = new Subject();\n private readonly _logger: LoggerPublisherService;\n\n /** Callback to notify the connection termination */\n private _onConnectionTerminated: () => void;\n /** Subject to notify the reconnection status */\n private reconnectionSubject: Subject<\"success\" | SdkError> = new Subject();\n /** Flag to indicate if the connection is waiting for a reconnection */\n private waitingForReconnection = false;\n /** Timeout to wait for the device to reconnect */\n private lostConnectionTimeout: NodeJS.Timeout | null = null;\n /** Flag to indicate if the connection is terminated */\n private terminated = false;\n\n constructor(\n {\n device,\n deviceId,\n apduSender,\n apduReceiver,\n onConnectionTerminated,\n }: UsbHidDeviceConnectionConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._apduSender = apduSender;\n this._apduReceiver = apduReceiver;\n this._onConnectionTerminated = onConnectionTerminated;\n this._logger = loggerServiceFactory(\"UsbHidDeviceConnection\");\n this._device = device;\n this._device.oninputreport = (event) => this.receiveHidInputReport(event);\n this._deviceId = deviceId;\n this._logger.info(\"\uD83D\uDD0C Connected to device\");\n }\n\n public get device() {\n return this._device;\n }\n\n public get deviceId() {\n return this._deviceId;\n }\n\n async sendApdu(\n apdu: Uint8Array,\n triggersDisconnection?: boolean,\n ): Promise<Either<SdkError, ApduResponse>> {\n this._sendApduSubject = new Subject();\n\n this._logger.debug(\"Sending APDU\", {\n data: { apdu },\n tag: \"apdu-sender\",\n });\n\n const resultPromise = new Promise<Either<SdkError, ApduResponse>>(\n (resolve) => {\n this._sendApduSubject.subscribe({\n next: async (r) => {\n if (triggersDisconnection && CommandUtils.isSuccessResponse(r)) {\n // Anticipate the disconnection and wait for the reconnection before resolving\n const reconnectionRes = await this.waitForReconnection();\n reconnectionRes.caseOf({\n Left: (err) => resolve(Left(err)),\n Right: () => resolve(Right(r)),\n });\n } else {\n resolve(Right(r));\n }\n },\n error: (err) => {\n resolve(Left(err));\n },\n });\n },\n );\n\n if (this.waitingForReconnection || !this.device.opened) {\n const reconnectionRes = await this.waitForReconnection();\n if (reconnectionRes.isLeft()) {\n return reconnectionRes;\n }\n }\n\n const frames = this._apduSender.getFrames(apdu);\n for (const frame of frames) {\n this._logger.debug(\"Sending Frame\", {\n data: { frame: frame.getRawData() },\n });\n try {\n await this._device.sendReport(0, frame.getRawData());\n } catch (error) {\n this._logger.error(\"Error sending frame\", { data: { error } });\n return Promise.resolve(Left(new HidSendReportError(error)));\n }\n }\n\n return resultPromise;\n }\n\n private receiveHidInputReport(event: HIDInputReportEvent) {\n const data = new Uint8Array(event.data.buffer);\n this._logger.debug(\"Received Frame\", {\n data: { frame: data },\n tag: \"apdu-receiver\",\n });\n const response = this._apduReceiver.handleFrame(data);\n response.caseOf({\n Right: (maybeApduResponse) => {\n maybeApduResponse.map((apduResponse) => {\n this._logger.debug(\"Received APDU Response\", {\n data: { response: apduResponse },\n });\n this._sendApduSubject.next(apduResponse);\n this._sendApduSubject.complete();\n });\n },\n Left: (err) => {\n this._sendApduSubject.error(err);\n },\n });\n }\n\n private waitForReconnection(): Promise<Either<SdkError, void>> {\n if (this.terminated)\n return Promise.resolve(Left(new ReconnectionFailedError()));\n return new Promise<Either<SdkError, void>>((resolve) => {\n const sub = this.reconnectionSubject.subscribe({\n next: (res) => {\n if (res === \"success\") {\n resolve(Right(undefined));\n } else {\n resolve(Left(res));\n }\n sub.unsubscribe();\n },\n });\n });\n }\n\n /**\n * Method called when the HIDDevice gets disconnected.\n * It starts a timeout to wait for the device to reconnect.\n * */\n public lostConnection() {\n this._logger.info(\"\u23F1\uFE0F Lost connection, starting timer\");\n this.waitingForReconnection = true;\n this.lostConnectionTimeout = setTimeout(() => {\n this._logger.info(\"\u274C Disconnection timeout, terminating connection\");\n this.disconnect();\n }, RECONNECT_DEVICE_TIMEOUT);\n }\n\n /** Reconnect the device after a disconnection */\n public async reconnectHidDevice(device: HIDDevice) {\n this._device = device;\n this._device.oninputreport = (event) => this.receiveHidInputReport(event);\n\n if (this.lostConnectionTimeout) {\n this._logger.info(\"\u23F1\uFE0F\uD83D\uDD0C Device reconnected\");\n clearTimeout(this.lostConnectionTimeout);\n }\n await device.open();\n this.waitingForReconnection = false;\n this.reconnectionSubject.next(\"success\");\n }\n\n public disconnect() {\n this._logger.info(\"\uD83D\uDD1A Disconnect\");\n if (this.lostConnectionTimeout) clearTimeout(this.lostConnectionTimeout);\n this.terminated = true;\n this._onConnectionTerminated();\n this.reconnectionSubject.next(new ReconnectionFailedError());\n }\n}\n", "import { inject, injectable } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\n\nimport { DeviceId } from \"@api/types\";\nimport { CHANNEL_LENGTH } from \"@internal/device-session/data/FramerConst\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { ApduReceiverService } from \"@internal/device-session/service/ApduReceiverService\";\nimport { ApduSenderService } from \"@internal/device-session/service/ApduSenderService\";\nimport { DefaultApduReceiverConstructorArgs } from \"@internal/device-session/service/DefaultApduReceiverService\";\nimport { DefaultApduSenderServiceConstructorArgs } from \"@internal/device-session/service/DefaultApduSenderService\";\nimport { FramerUtils } from \"@internal/device-session/utils/FramerUtils\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { LoggerPublisherService } from \"@internal/logger-publisher/service/LoggerPublisherService\";\nimport { FRAME_SIZE } from \"@internal/transport/usb/data/UsbHidConfig\";\nimport { UsbHidDeviceConnection } from \"@internal/transport/usb/transport/UsbHidDeviceConnection\";\n\n@injectable()\nexport class UsbHidDeviceConnectionFactory {\n randomChannel = Math.floor(Math.random() * 0xffff);\n\n constructor(\n @inject(deviceSessionTypes.ApduSenderServiceFactory)\n private readonly apduSenderFactory: (\n args: DefaultApduSenderServiceConstructorArgs,\n ) => ApduSenderService,\n @inject(deviceSessionTypes.ApduReceiverServiceFactory)\n private readonly apduReceiverFactory: (\n args: DefaultApduReceiverConstructorArgs,\n ) => ApduReceiverService,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n private readonly loggerFactory: (name: string) => LoggerPublisherService,\n ) {}\n\n public create(\n device: HIDDevice,\n params: { onConnectionTerminated: () => void; deviceId: DeviceId },\n channel = Maybe.of(\n FramerUtils.numberToByteArray(this.randomChannel, CHANNEL_LENGTH),\n ),\n ): UsbHidDeviceConnection {\n return new UsbHidDeviceConnection(\n {\n device,\n deviceId: params.deviceId,\n apduSender: this.apduSenderFactory({\n frameSize: FRAME_SIZE,\n channel,\n padding: true,\n }),\n apduReceiver: this.apduReceiverFactory({ channel }),\n onConnectionTerminated: params.onConnectionTerminated,\n },\n this.loggerFactory,\n );\n }\n}\n", "import { ContainerModule } from \"inversify\";\n\nimport { UsbHidDeviceConnectionFactory } from \"@internal/transport/usb/service/UsbHidDeviceConnectionFactory\";\n\nimport { usbDiTypes } from \"./usbDiTypes\";\n\ntype FactoryProps = {\n stub: boolean;\n};\n\nexport const usbModuleFactory = ({\n stub = false,\n}: Partial<FactoryProps> = {}) =>\n new ContainerModule((bind, _unbind, _isBound, _rebind) => {\n // UsbHidDeviceConnectionFactory\n bind(usbDiTypes.UsbHidDeviceConnectionFactory).to(\n UsbHidDeviceConnectionFactory,\n );\n\n if (stub) {\n // Add stubs here\n }\n });\n", "import { Container } from \"inversify\";\n\n// Uncomment this line to enable the logger middleware\n// import { makeLoggerMiddleware } from \"inversify-logger-middleware\";\nimport { commandModuleFactory } from \"@api/command/di/commandModule\";\nimport { deviceActionModuleFactory } from \"@api/device-action/di/deviceActionModule\";\nimport { LoggerSubscriberService } from \"@api/logger-subscriber/service/LoggerSubscriberService\";\n// Uncomment this line to enable the logger middleware\n// import { makeLoggerMiddleware } from \"inversify-logger-middleware\";\nimport { SdkConfig } from \"@api/SdkConfig\";\nimport { Transport } from \"@api/transport/model/Transport\";\nimport { BuiltinTransports } from \"@api/transport/model/TransportIdentifier\";\nimport { configModuleFactory } from \"@internal/config/di/configModule\";\nimport { deviceModelModuleFactory } from \"@internal/device-model/di/deviceModelModule\";\nimport { deviceSessionModuleFactory } from \"@internal/device-session/di/deviceSessionModule\";\nimport { discoveryModuleFactory } from \"@internal/discovery/di/discoveryModule\";\nimport { loggerModuleFactory } from \"@internal/logger-publisher/di/loggerModule\";\nimport { managerApiModuleFactory } from \"@internal/manager-api/di/managerApiModule\";\nimport {\n DEFAULT_MANAGER_API_BASE_URL,\n DEFAULT_MOCK_SERVER_BASE_URL,\n} from \"@internal/manager-api/model/Const\";\nimport { sendModuleFactory } from \"@internal/send/di/sendModule\";\nimport { transportModuleFactory } from \"@internal/transport//di/transportModule\";\nimport { usbModuleFactory } from \"@internal/transport/usb/di/usbModule\";\n\n// Uncomment this line to enable the logger middleware\n// const logger = makeLoggerMiddleware();\n\nexport type MakeContainerProps = {\n stub: boolean;\n transports: BuiltinTransports[];\n customTransports: Transport[];\n loggers: LoggerSubscriberService[];\n config: SdkConfig;\n};\n\nexport const makeContainer = ({\n stub = false,\n transports = [],\n customTransports = [],\n loggers = [],\n config = {\n managerApiUrl: DEFAULT_MANAGER_API_BASE_URL,\n mockUrl: DEFAULT_MOCK_SERVER_BASE_URL,\n },\n}: Partial<MakeContainerProps>) => {\n const container = new Container();\n\n // Uncomment this line to enable the logger middleware\n // container.applyMiddleware(logger);\n\n container.load(\n configModuleFactory({ stub }),\n deviceModelModuleFactory({ stub }),\n transportModuleFactory({ stub, transports, customTransports, config }),\n usbModuleFactory({ stub }),\n managerApiModuleFactory({ stub, config }),\n discoveryModuleFactory({ stub }),\n loggerModuleFactory({ subscribers: loggers }),\n deviceSessionModuleFactory({ stub }),\n sendModuleFactory({ stub }),\n commandModuleFactory({ stub }),\n deviceActionModuleFactory({ stub }),\n // modules go here\n );\n\n return container;\n};\n", "import { Container } from \"inversify\";\nimport { Observable } from \"rxjs\";\n\nimport { commandTypes } from \"@api/command/di/commandTypes\";\nimport { CommandResult } from \"@api/command/model/CommandResult\";\nimport {\n SendCommandUseCase,\n SendCommandUseCaseArgs,\n} from \"@api/command/use-case/SendCommandUseCase\";\nimport {\n ExecuteDeviceActionUseCase,\n ExecuteDeviceActionUseCaseArgs,\n} from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { DeviceSessionId } from \"@api/device-session/types\";\nimport { ConnectedDevice } from \"@api/transport/model/ConnectedDevice\";\nimport {\n ConnectUseCaseArgs,\n DisconnectUseCaseArgs,\n DiscoveredDevice,\n GetConnectedDeviceUseCaseArgs,\n SendApduUseCaseArgs,\n StartDiscoveringUseCaseArgs,\n} from \"@api/types\";\nimport { configTypes } from \"@internal/config/di/configTypes\";\nimport { GetSdkVersionUseCase } from \"@internal/config/use-case/GetSdkVersionUseCase\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { CloseSessionsUseCase } from \"@internal/device-session/use-case/CloseSessionsUseCase\";\nimport { GetDeviceSessionStateUseCase } from \"@internal/device-session/use-case/GetDeviceSessionStateUseCase\";\nimport { ListDeviceSessionsUseCase } from \"@internal/device-session/use-case/ListDeviceSessionsUseCase\";\nimport { discoveryTypes } from \"@internal/discovery/di/discoveryTypes\";\nimport { ConnectUseCase } from \"@internal/discovery/use-case/ConnectUseCase\";\nimport { DisconnectUseCase } from \"@internal/discovery/use-case/DisconnectUseCase\";\nimport { GetConnectedDeviceUseCase } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nimport type { StartDiscoveringUseCase } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nimport type { StopDiscoveringUseCase } from \"@internal/discovery/use-case/StopDiscoveringUseCase\";\nimport { sendTypes } from \"@internal/send/di/sendTypes\";\nimport { SendApduUseCase } from \"@internal/send/use-case/SendApduUseCase\";\nimport { makeContainer, MakeContainerProps } from \"@root/src/di\";\n\nimport {\n DeviceActionIntermediateValue,\n ExecuteDeviceActionReturnType,\n} from \"./device-action/DeviceAction\";\nimport { deviceActionTypes } from \"./device-action/di/deviceActionTypes\";\nimport { SdkError } from \"./Error\";\n\n/**\n * The main class to interact with the SDK.\n *\n * NB: do not instantiate this class directly, instead, use `DeviceSdkBuilder`.\n */\nexport class DeviceSdk {\n readonly container: Container;\n /** @internal */\n constructor({\n stub,\n transports,\n customTransports,\n loggers,\n config,\n }: Partial<MakeContainerProps> = {}) {\n // NOTE: MakeContainerProps might not be the exact type here\n // For the init of the project this is sufficient, but we might need to\n // update the constructor arguments as we go (we might have more than just the container config)\n this.container = makeContainer({\n stub,\n transports,\n customTransports,\n loggers,\n config,\n });\n }\n\n /**\n * Returns a promise resolving to the version of the SDK.\n */\n getVersion(): Promise<string> {\n return this.container\n .get<GetSdkVersionUseCase>(configTypes.GetSdkVersionUseCase)\n .getSdkVersion();\n }\n\n /**\n * Starts discovering devices connected.\n *\n * For the WeHID implementation, this use-case needs to be called as a result\n * of an user interaction (button \"click\" event for ex).\n *\n * @param {StartDiscoveringUseCaseArgs} args - The transport to use for discover, or undefined to discover from all transports.\n * @returns {Observable<DiscoveredDevice>} An observable of discovered devices.\n */\n startDiscovering(\n args: StartDiscoveringUseCaseArgs,\n ): Observable<DiscoveredDevice> {\n return this.container\n .get<StartDiscoveringUseCase>(discoveryTypes.StartDiscoveringUseCase)\n .execute(args);\n }\n\n /**\n * Stops discovering devices connected.\n */\n stopDiscovering() {\n return this.container\n .get<StopDiscoveringUseCase>(discoveryTypes.StopDiscoveringUseCase)\n .execute();\n }\n\n /**\n * Connects to a device previously discovered with `DeviceSdk.startDiscovering`.\n * Creates a new device session which:\n * - Represents the connection to the device.\n * - Is terminated upon disconnection of the device.\n * - Exposes the device state through an observable (see `DeviceSdk.getDeviceSessionState`)\n * - Should be used for all subsequent communication with the device.\n *\n * @param {ConnectUseCaseArgs} args - The device ID (obtained in discovery) to connect to.\n * @returns The session ID to use for further communication with the device.\n */\n connect(args: ConnectUseCaseArgs): Promise<DeviceSessionId> {\n return this.container\n .get<ConnectUseCase>(discoveryTypes.ConnectUseCase)\n .execute(args);\n }\n\n /**\n * Disconnects to a discovered device.\n *\n * @param {DisconnectUseCaseArgs} args - The session ID to disconnect.\n */\n disconnect(args: DisconnectUseCaseArgs): Promise<void> {\n return this.container\n .get<DisconnectUseCase>(discoveryTypes.DisconnectUseCase)\n .execute(args);\n }\n\n /**\n * Sends an APDU command to a device through a device session.\n *\n * @param {SendApduUseCaseArgs} args - The device session ID and APDU command to send.\n */\n sendApdu(args: SendApduUseCaseArgs): Promise<ApduResponse> {\n return this.container\n .get<SendApduUseCase>(sendTypes.SendApduUseCase)\n .execute(args);\n }\n\n /**\n * Sends a command to a device through a device session.\n *\n * @param {SendCommandUseCaseArgs<Response, Args, ErrorCodes>} args - The device session ID, command, command error codes and command parameters to send.\n * @returns A promise resolving with the response from the command.\n */\n sendCommand<Response, Args, ErrorCodes>(\n args: SendCommandUseCaseArgs<Response, Args, ErrorCodes>,\n ): Promise<CommandResult<Response, ErrorCodes>> {\n return this.container\n .get<SendCommandUseCase>(commandTypes.SendCommandUseCase)\n .execute(args);\n }\n\n executeDeviceAction<\n Output,\n Input,\n Error extends SdkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n args: ExecuteDeviceActionUseCaseArgs<\n Output,\n Input,\n Error,\n IntermediateValue\n >,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n return this.container\n .get<ExecuteDeviceActionUseCase>(\n deviceActionTypes.ExecuteDeviceActionUseCase,\n )\n .execute(args);\n }\n\n /**\n * Gets the connected from its device session ID.\n *\n * @param {GetConnectedDeviceUseCaseArgs} args - The device session ID.\n * @returns {ConnectedDevice} The connected device.\n */\n getConnectedDevice(args: GetConnectedDeviceUseCaseArgs): ConnectedDevice {\n return this.container\n .get<GetConnectedDeviceUseCase>(discoveryTypes.GetConnectedDeviceUseCase)\n .execute(args);\n }\n\n /**\n * Gets the device state of a session.\n *\n * @param {{DeviceSessionId}} args - The device session ID.\n * @returns {Observable<DeviceSessionState>} An observable of the session device state.\n */\n getDeviceSessionState(args: {\n sessionId: DeviceSessionId;\n }): Observable<DeviceSessionState> {\n return this.container\n .get<GetDeviceSessionStateUseCase>(\n deviceSessionTypes.GetDeviceSessionStateUseCase,\n )\n .execute(args);\n }\n\n close() {\n return this.container\n .get<CloseSessionsUseCase>(deviceSessionTypes.CloseSessionsUseCase)\n .execute();\n }\n\n /**\n * Lists all device sessions.\n *\n * @returns {DeviceSession[]} The list of device sessions.\n */\n listDeviceSessions(): DeviceSession[] {\n return this.container\n .get<ListDeviceSessionsUseCase>(\n deviceSessionTypes.ListDeviceSessionsUseCase,\n )\n .execute();\n }\n}\n", "import {\n DEFAULT_MANAGER_API_BASE_URL,\n DEFAULT_MOCK_SERVER_BASE_URL,\n} from \"@internal/manager-api/model/Const\";\n\nimport { LoggerSubscriberService } from \"./logger-subscriber/service/LoggerSubscriberService\";\nimport { Transport } from \"./transport/model/Transport\";\nimport { BuiltinTransports } from \"./transport/model/TransportIdentifier\";\nimport { DeviceSdk } from \"./DeviceSdk\";\nimport { SdkConfig } from \"./SdkConfig\";\n\n/**\n * Builder for the `DeviceSdk` class.\n *\n * @example\n * ```\n * const sdk = new LedgerDeviceSdkBuilder()\n * .setStub(false)\n * .addTransport(BuiltinTransports.USB)\n * .addCustomTransport(new MyTransport())\n * .addLogger(myLogger)\n * .build();\n * ```\n */\nexport class LedgerDeviceSdkBuilder {\n private stub = false;\n private readonly loggers: LoggerSubscriberService[] = [];\n private readonly transports: BuiltinTransports[] = [];\n private readonly customTransports: Transport[] = [];\n private config: SdkConfig = {\n managerApiUrl: DEFAULT_MANAGER_API_BASE_URL,\n mockUrl: DEFAULT_MOCK_SERVER_BASE_URL,\n };\n\n build(): DeviceSdk {\n return new DeviceSdk({\n stub: this.stub,\n transports: this.transports,\n customTransports: this.customTransports,\n loggers: this.loggers,\n config: this.config,\n });\n }\n\n setStub(stubbed: boolean): LedgerDeviceSdkBuilder {\n this.stub = stubbed;\n return this;\n }\n\n addTransport(transport: BuiltinTransports): LedgerDeviceSdkBuilder {\n this.transports.push(transport);\n return this;\n }\n\n addCustomTransport(transport: Transport): LedgerDeviceSdkBuilder {\n this.customTransports.push(transport);\n return this;\n }\n\n /**\n * Add a logger to the SDK that will receive its logs\n */\n addLogger(logger: LoggerSubscriberService): LedgerDeviceSdkBuilder {\n this.loggers.push(logger);\n return this;\n }\n\n addConfig(config: Partial<SdkConfig>): LedgerDeviceSdkBuilder {\n this.config = {\n ...this.config,\n ...config,\n };\n return this;\n }\n}\n", "import { LogLevel } from \"@api/logger-subscriber/model/LogLevel\";\nimport { LogSubscriberOptions } from \"@api/logger-subscriber/model/LogSubscriberOptions\";\nimport { LoggerSubscriberService } from \"@api/logger-subscriber/service/LoggerSubscriberService\";\n\nexport class ConsoleLogger implements LoggerSubscriberService {\n private readonly maxLevel: LogLevel;\n\n constructor(level: LogLevel = LogLevel.Debug) {\n this.maxLevel = level;\n }\n\n log(\n level: LogLevel | null,\n message: string,\n options: LogSubscriberOptions,\n ): void {\n const tag = `[${options.tag}]`;\n\n switch (level) {\n case LogLevel.Info: {\n if (this.maxLevel >= LogLevel.Info) {\n console.info(tag, message, options.data);\n }\n break;\n }\n case LogLevel.Warning: {\n if (this.maxLevel >= LogLevel.Warning) {\n console.warn(tag, message, options.data);\n }\n break;\n }\n case LogLevel.Debug: {\n if (this.maxLevel >= LogLevel.Debug) {\n console.debug(tag, message, options.data);\n }\n break;\n }\n case LogLevel.Error: {\n if (this.maxLevel >= LogLevel.Error) {\n console.error(tag, message, options.data);\n }\n break;\n }\n case LogLevel.Fatal: {\n if (this.maxLevel >= LogLevel.Fatal) {\n console.error(tag, message, options.data);\n }\n break;\n }\n default:\n console.log(tag, message, options.data);\n }\n }\n}\n", "import { LogLevel } from \"@api/logger-subscriber/model/LogLevel\";\nimport { LogSubscriberOptions } from \"@api/types\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\n\nimport { LoggerSubscriberService } from \"./LoggerSubscriberService\";\n\n/**\n * This function is used to format the logs to JSON format,\n * remove circular dependencies and do some extra formatting.\n * */\nexport function getJSONStringifyReplacer(): (\n key: string,\n value: unknown,\n) => unknown {\n const ancestors: unknown[] = [];\n return function (_: string, value: unknown): unknown {\n // format Uint8Array values to more readable format\n if (value instanceof Uint8Array) {\n const bytesHex = Array.from(value).map((x) =>\n x.toString(16).padStart(2, \"0\"),\n );\n return {\n hex: \"0x\" + bytesHex.join(\"\"),\n readableHex: bytesHex.join(\" \"),\n value: value.toString(),\n };\n }\n\n // format DeviceSession values to avoid huge object in logs\n if (value instanceof DeviceSession) {\n const {\n connectedDevice: { deviceModel, type, id },\n } = value;\n return {\n id: value.id,\n connectedDevice: {\n deviceModel,\n type,\n id,\n },\n };\n }\n\n // format circular references to \"[Circular]\"\n // Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n // @ts-expect-error cf. comment above\n while (ancestors.length > 0 && ancestors.at(-1) !== (this as unknown)) {\n ancestors.pop();\n }\n if (ancestors.includes(value)) {\n return \"[Circular]\";\n }\n ancestors.push(value);\n return value;\n };\n}\n\nexport class WebLogsExporterLogger implements LoggerSubscriberService {\n private logs: Array<\n [level: LogLevel, message: string, options: LogSubscriberOptions]\n > = [];\n\n log(level: LogLevel, message: string, options: LogSubscriberOptions): void {\n this.logs.push([level, message, options]);\n }\n\n private formatLogsToJSON(): string {\n const remappedLogs = this.logs.map(([level, message, options]) => {\n const { timestamp, ...restOptions } = options;\n return {\n level: LogLevel[level],\n message,\n options: {\n ...restOptions,\n date: new Date(options.timestamp),\n },\n };\n });\n\n return JSON.stringify(remappedLogs, getJSONStringifyReplacer(), 2);\n }\n\n /**\n * Export logs to JSON file.\n */\n public exportLogsToJSON(): void {\n const logs = this.formatLogsToJSON();\n const blob = new Blob([logs], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `ledger-device-management-kit-logs-${new Date().toISOString()}.json`;\n a.click();\n }\n}\n", "/**\n * The status of a device action.\n */\nexport enum DeviceActionStatus {\n NotStarted = \"not-started\",\n Pending = \"pending\",\n Stopped = \"stopped\",\n Completed = \"completed\",\n Error = \"error\",\n}\n\nexport type DeviceActionState<Output, Error, IntermediateValue> =\n | { readonly status: DeviceActionStatus.NotStarted }\n | {\n readonly status: DeviceActionStatus.Pending;\n readonly intermediateValue: IntermediateValue;\n }\n | { readonly status: DeviceActionStatus.Stopped }\n | { readonly status: DeviceActionStatus.Completed; readonly output: Output }\n | { readonly status: DeviceActionStatus.Error; readonly error: Error };\n", "/**\n * The user interaction required on the device to move further in a device action.\n * This is used to inform the user about the action they need to take on the device.\n */\nexport enum UserInteractionRequired {\n None = \"none\",\n UnlockDevice = \"unlock-device\",\n AllowSecureConnection = \"allow-secure-connection\",\n ConfirmOpenApp = \"confirm-open-app\",\n SignTransaction = \"sign-transaction\",\n SignTypedData = \"sign-typed-data\",\n AllowListApps = \"allow-list-apps\",\n VerifyAddress = \"verify-address\",\n SignPersonalMessage = \"sign-personal-message\",\n}\n", "import { SdkError } from \"@api/Error\";\n\nexport class DeviceNotOnboardedError implements SdkError {\n readonly _tag = \"DeviceNotOnboardedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device not onboarded.\");\n }\n}\n\nexport class DeviceLockedError implements SdkError {\n readonly _tag = \"DeviceLockedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device locked.\");\n }\n}\n\nexport class UnknownDAError implements SdkError {\n readonly _tag = \"UnknownDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n", "import { Left, Right } from \"purify-ts\";\nimport { Observable } from \"rxjs\";\nimport { tap, timeout } from \"rxjs/operators\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n GetAppAndVersionCommand,\n GetAppAndVersionCommandResult,\n} from \"@api/command/os/GetAppAndVersionCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport {\n DeviceLockedError,\n DeviceNotOnboardedError,\n} from \"@api/device-action/os/Errors\";\nimport { StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport {\n DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\n\nimport {\n GetDeviceStatusDAError,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusDAOutput,\n} from \"./types\";\n\ntype GetDeviceStatusMachineInternalState = {\n readonly onboarded: boolean;\n readonly locked: boolean;\n readonly currentApp: string | null;\n readonly currentAppVersion: string | null;\n readonly error: GetDeviceStatusDAError | null;\n};\n\nexport type MachineDependencies = {\n readonly getAppAndVersion: () => Promise<GetAppAndVersionCommandResult>;\n readonly getDeviceSessionState: () => DeviceSessionState;\n readonly waitForDeviceUnlock: (args: {\n input: { unlockTimeout: number };\n }) => Observable<void>;\n readonly setDeviceSessionState: (\n state: DeviceSessionState,\n ) => DeviceSessionState;\n readonly isDeviceOnboarded: () => boolean;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class GetDeviceStatusDeviceAction extends XStateDeviceAction<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n > {\n type types = StateMachineTypes<\n GetDeviceStatusDAOutput,\n GetDeviceStatusDAInput,\n GetDeviceStatusDAError,\n GetDeviceStatusDAIntermediateValue,\n GetDeviceStatusMachineInternalState\n >;\n\n const {\n getAppAndVersion,\n getDeviceSessionState,\n setDeviceSessionState,\n waitForDeviceUnlock,\n isDeviceOnboarded,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getAppAndVersion: fromPromise(getAppAndVersion),\n waitForDeviceUnlock: fromObservable(waitForDeviceUnlock),\n },\n guards: {\n isDeviceOnboarded: () => isDeviceOnboarded(), // TODO: we don't have this info for now, this can be derived from the \"flags\" obtained in the getVersion command\n isDeviceUnlocked: () =>\n getDeviceSessionState().deviceStatus !== DeviceStatus.LOCKED,\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorDeviceNotOnboarded: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceNotOnboardedError(),\n }),\n }),\n assignErrorDeviceLocked: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceLockedError(),\n }),\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n },\n }),\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n assignNoUserActionNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignUserActionUnlockNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QHEwBcAiYBuBLAxmAMpoCGaArrFnoQIL5q4D2AdgHQ0FgBKYpEAJ4BiANoAGALqJQAB2axcTNjJAAPRAFoArAHZx7AIwAmQ7oCcugMyHzANmMAWYwBoQgxI8vsAHOJM+VuLmVj5e2gC+EW6omDjcJORUXPSMLBwA8qwARsykAE4QuKxQAMIAFmD4ANZiUqryisqsqhoImo4O7OGhPj4h5n6Obh4IunZ2RoZ+ena6nYaGUTHoKcRklNTxqc3sWbkFRSUVVbWihtJIII1K6a1aVtoGTxOOjtbv84YjiObik7ofPM7GFDP9jNofMsQLE1olNmsGLsADLMGrFMqVGp1S5yBS3FRXNqaOzadjiHx2KyORbzcRBczmH4IbTOdjaabaKmdGy6XSRaIw1bbdZJLa0MBI9LsVHo45Ys4XBr45r3dps-n0ubaGxgx6PZlWULkkLBGmDCzGYzQ2Ei+HJEVStjsACqsDA+SdrBdrAANmjqmthBA2GB2MVsMxqmG3R6vT7-TU1hJcdcVXciYgglZycYQiYqRTQoZtMynDmbM4aW8rHYzD4BSs4hL7eLuF7Xe7PWk2AmA0GPflmPl2LJfeQAGbDgC2nbjPe9fv7IpTyqaGdAbXmxnZPkMNNM820VuZ+8M7Dsb3MznpwW31sFtpbGwdEo7dFksjorAgADUPYobAnNiIasGGEZRmGT4JC+bY7NKH5fj+-75IBrDAdUCAQfg5DpCmq5XDcqqZmMjgGDY-yGJeejjFRzJ2P47DZoEJb+Hyx42sKz5ioiC7sIh35-gB6QYcIg7DqO45oFO+SztBhCtrxuwCchwlAQqWGsJGOHNPh9SEemhKbogdLsIMTjmPuNF1nYZaOBW+5OPu9l1oCjZCs2ME8Y6fGIb6BC4WwdDYKQuDjtkvq8HAFC+mgokEXi65GeoiBguYZJOPSJa6Hm1hGsyuglkxxiUjYVjXlq7nyaKCI+cpn7+Tp6TBaF4WRXwsAxXFCpiEqBlJS0JFAo4vg+BCe55e8-QFUVVglVShjlWRtZ2FEgqsMwEBwKo1WKXVG5pgNaokmRZmQg4fyLHR7ieCNpjGPyx7aNo6UNo4nGeQpsFKdKax8AIoyJQSg3Ge0L07q9F3+Istk3Qg1IjUaZ7GNS-LlU4H1wt9+3OvseSFBiGFrsDx01mZ15mHooReFaVj0fZ5Jci5zissYIKY3a2NvnxsrVITCrE8RoMdDucxWgx1jpZCELDHDgKTC9jg6mNXKLDSHPcbV3O7LG3bNH2SYioLB3EmCI1-HuVL6Cj4hU6eNjsIVD3UrWfKXVCj5cV5Wvtr5n6CShaFE-1JMkWzPgXpCjh+Faw3Mjq5jdOlJhGvo-RzRr3uvr79VjgFzQtWFpARVFnWxcHQNCylCBm+eKPjJL4jWMEdNww4O46vSFVsfyD5Nlj3na9KRAUPghCwPAIdV20QIR7e-RzOYbNK98cN7ndgR-BSzgo+YmdfYPOfSgAovkQ75MbyVtItehmSrJgcijz2uHD+pmXyQSQnyVLs2tQA */\n id: \"GetDeviceStatusDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n const sessionState = getDeviceSessionState();\n const { sessionStateType } = sessionState;\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n onboarded: false, // we don't know how to check yet\n locked: sessionState.deviceStatus === DeviceStatus.LOCKED,\n currentApp:\n sessionStateType ===\n DeviceSessionStateType.ReadyWithoutSecureChannel\n ? sessionState.currentApp.name\n : null,\n currentAppVersion: null,\n error: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"OnboardingCheck\",\n },\n },\n OnboardingCheck: {\n // TODO: we don't have this info for now\n always: [\n {\n guard: {\n type: \"isDeviceOnboarded\",\n },\n target: \"LockingCheck\",\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n onboarded: true,\n }),\n }),\n },\n {\n target: \"Error\",\n actions: \"assignErrorDeviceNotOnboarded\",\n },\n ],\n },\n LockingCheck: {\n // We check if the device is locked in the session state\n always: [\n {\n target: \"AppAndVersionCheck\",\n guard: {\n type: \"isDeviceUnlocked\",\n },\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n locked: false,\n }),\n }),\n },\n {\n target: \"UserActionUnlockDevice\",\n },\n ],\n },\n UserActionUnlockDevice: {\n // we wait for the device to be unlocked (default timeout is 15s)\n entry: \"assignUserActionUnlockNeeded\",\n exit: \"assignNoUserActionNeeded\",\n invoke: {\n id: \"UserActionUnlockDevice\",\n src: \"waitForDeviceUnlock\",\n input: (_) => ({\n unlockTimeout,\n }),\n onDone: {\n target: \"AppAndVersionCheck\",\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n locked: false,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorDeviceLocked\",\n },\n },\n },\n AppAndVersionCheck: {\n // We check the current app and version using the getAppAndVersion command\n invoke: {\n src: \"getAppAndVersion\",\n onDone: {\n target: \"ApplicationAvailableResultCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const state: DeviceSessionState = getDeviceSessionState();\n // Narrow the type to ReadyWithoutSecureChannelState or ReadyWithSecureChannelState\n if (\n state.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n setDeviceSessionState({\n ...state,\n currentApp: _.event.output.data,\n });\n }\n return {\n ..._.context._internalState,\n currentApp: _.event.output.data.name,\n currentAppVersion: _.event.output.data.version,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ApplicationAvailableResultCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (args) => {\n // TODO: instead we should rely on the current state (\"Success\" or \"Error\")\n const { context } = args;\n const { error, currentApp, currentAppVersion } = context._internalState;\n if (error) {\n return Left(error);\n }\n return Right<GetDeviceStatusDAOutput>({\n currentApp: currentApp!,\n currentAppVersion,\n });\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppAndVersion = () => {\n return internalApi.sendCommand(new GetAppAndVersionCommand());\n };\n\n const waitForDeviceUnlock = ({\n input,\n }: {\n input: { unlockTimeout: number };\n }) =>\n new Observable<void>((subscriber) => {\n const inner = internalApi\n .getDeviceSessionStateObservable()\n .pipe(\n tap((state) => {\n if (state.deviceStatus === DeviceStatus.CONNECTED) {\n subscriber.complete();\n inner.unsubscribe();\n }\n }),\n )\n .subscribe();\n\n return () => {\n inner.unsubscribe();\n };\n }).pipe(timeout(input.unlockTimeout));\n\n return {\n getAppAndVersion,\n waitForDeviceUnlock,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state: DeviceSessionState) =>\n internalApi.setDeviceSessionState(state),\n isDeviceOnboarded: () => true, // TODO: we don't have this info for now\n };\n }\n}\n", "export const DEFAULT_UNLOCK_TIMEOUT_MS = 60 * 1000;\n", "import { createBrowserInspector } from \"@statelyai/inspect\";\nimport { Observable, ReplaySubject, share } from \"rxjs\";\nimport { createActor, SnapshotFrom, StateMachine, StateSchema } from \"xstate\";\n\nimport {\n DeviceAction,\n DeviceActionIntermediateValue,\n ExecuteDeviceActionReturnType,\n InternalApi,\n} from \"@api/device-action/DeviceAction\";\nimport {\n DeviceActionState,\n DeviceActionStatus,\n} from \"@api/device-action/model/DeviceActionState\";\nimport { SdkError } from \"@api/Error\";\n\nimport { StateMachineTypes } from \"./StateMachineTypes\";\n\nexport type DeviceActionStateMachine<\n Output,\n Input,\n Error extends SdkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n InternalState,\n> = StateMachine<\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"context\"], // context\n /**\n * The following usages `any` are OK because this is just a wrapper around the\n * state machine and we are not directly going to use these types.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any, // event\n any, // children\n any, // actor\n any, // action\n any, // guard\n any, // delay\n any, // state value\n any, // tag\n /* eslint-enable @typescript-eslint/no-explicit-any */\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"input\"],\n StateMachineTypes<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >[\"output\"],\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any,\n /* eslint-enable @typescript-eslint/no-explicit-any */\n StateSchema\n>;\n\n/**\n * A DeviceAction that uses an XState state machine to execute.\n * It maps the state machine snapshots to the DeviceActionState.\n * This class is abstract and should be extended to implement the state machine.\n */\nexport abstract class XStateDeviceAction<\n Output,\n Input,\n Error extends SdkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n InternalState,\n> implements DeviceAction<Output, Input, Error, IntermediateValue>\n{\n readonly input: Input;\n readonly inspect: boolean = false;\n\n /**\n *\n * @param input The input for the DeviceAction\n * @param inspect If true, the state machine will be inspected in the browser\n */\n constructor(args: { input: Input; inspect?: boolean }) {\n this.input = args.input;\n this.inspect = Boolean(args.inspect);\n }\n\n protected abstract makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n Output,\n Input,\n Error,\n IntermediateValue,\n InternalState\n >;\n\n _execute(\n internalApi: InternalApi,\n ): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue> {\n const stateMachine = this.makeStateMachine(internalApi);\n\n const actor = createActor(stateMachine, {\n input: this.input,\n // optional inspector for debugging\n inspect: this.inspect ? createBrowserInspector().inspect : undefined,\n });\n\n /**\n * Using a ReplaySubject is important because the first snapshots might be\n * emitted before the observable is subscribed (if the machine goes through\n * those states fully synchronously).\n * This way, we ensure that the subscriber always receives the latest snapshot.\n * */\n const subject = new ReplaySubject<\n DeviceActionState<Output, Error, IntermediateValue>\n >();\n\n const handleActorSnapshot = (\n snapshot: SnapshotFrom<typeof stateMachine>,\n ) => {\n const { context, status, output, error } = snapshot;\n switch (status) {\n case \"active\":\n subject.next({\n status: DeviceActionStatus.Pending,\n intermediateValue: context.intermediateValue,\n });\n break;\n case \"done\":\n output.caseOf({\n Left: (err) => {\n subject.next({\n status: DeviceActionStatus.Error,\n error: err,\n });\n },\n Right: (result) => {\n subject.next({\n status: DeviceActionStatus.Completed,\n output: result,\n });\n },\n });\n subject.complete();\n break;\n case \"error\":\n // this is an error in the execution of the state machine, it should not happen\n subject.error(error);\n subject.complete();\n break;\n case \"stopped\":\n subject.next({\n status: DeviceActionStatus.Stopped,\n });\n subject.complete();\n break;\n default:\n this._exhaustiveMatchingGuard(status);\n }\n };\n\n const observable = new Observable<\n DeviceActionState<Output, Error, IntermediateValue>\n >((subscriber) => {\n const subjectSubscription = subject.subscribe(subscriber);\n return () => {\n actorSubscription.unsubscribe();\n subjectSubscription.unsubscribe();\n actor.stop(); // stop the actor when the observable is unsubscribed\n };\n });\n\n const actorSubscription = actor.subscribe(handleActorSnapshot);\n actor.start();\n\n return {\n observable: observable.pipe(share()), // share to garantee that once there is no more observer, the actor is stopped\n cancel: () => {\n actor.stop();\n actorSubscription.unsubscribe();\n handleActorSnapshot(actor.getSnapshot());\n },\n };\n }\n\n private _exhaustiveMatchingGuard(status: never): never {\n console.log(\"_exhaustiveMatchingGuard status\", status);\n throw new Error(`Unhandled status: ${status}`);\n }\n}\n", "import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n CloseAppCommand,\n CloseAppCommandResult,\n} from \"@api/command/os/CloseAppCommand\";\nimport {\n GetAppAndVersionCommand,\n GetAppAndVersionCommandResult,\n} from \"@api/command/os/GetAppAndVersionCommand\";\nimport { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { GetDeviceStatusDeviceAction } from \"@api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction\";\nimport { StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport {\n DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\n\nimport type {\n GoToDashboardDAError,\n GoToDashboardDAInput,\n GoToDashboardDAIntermediateValue,\n GoToDashboardDAOutput,\n} from \"./types\";\n\ntype GoToDashboardMachineInternalState = {\n readonly currentApp: string | null;\n readonly error: GoToDashboardDAError | null;\n};\n\nexport type MachineDependencies = {\n readonly getAppAndVersion: () => Promise<GetAppAndVersionCommandResult>;\n readonly closeApp: () => Promise<CloseAppCommandResult>;\n readonly getDeviceSessionState: () => DeviceSessionState;\n readonly setDeviceSessionState: (\n state: DeviceSessionState,\n ) => DeviceSessionState;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class GoToDashboardDeviceAction extends XStateDeviceAction<\n GoToDashboardDAOutput,\n GoToDashboardDAInput,\n GoToDashboardDAError,\n GoToDashboardDAIntermediateValue,\n GoToDashboardMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GoToDashboardDAOutput,\n GoToDashboardDAInput,\n GoToDashboardDAError,\n GoToDashboardDAIntermediateValue,\n GoToDashboardMachineInternalState\n > {\n type types = StateMachineTypes<\n GoToDashboardDAOutput,\n GoToDashboardDAInput,\n GoToDashboardDAError,\n GoToDashboardDAIntermediateValue,\n GoToDashboardMachineInternalState\n >;\n\n const {\n getDeviceSessionState,\n setDeviceSessionState,\n closeApp,\n getAppAndVersion,\n } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const getDeviceStatusMachine = new GetDeviceStatusDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getAppAndVersion: fromPromise(getAppAndVersion),\n closeApp: fromPromise(closeApp),\n getDeviceStatus: getDeviceStatusMachine,\n },\n guards: {\n hasError: ({ context }: { context: types[\"context\"] }) => {\n return context._internalState.error !== null;\n },\n isDashboardOpen: ({ context }: { context: types[\"context\"] }) =>\n context._internalState.currentApp === \"BOLOS\",\n },\n actions: {\n // assignGetDeviceStatusUnknownError: assign({\n // _internalState: (_) => ({\n // ..._.context._internalState,\n // error: new UnknownDAError(\"GetDeviceUnknownStatusError\"),\n // }),\n // }),\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QHED2AVVARAhrAFgEao4BOEWYAbgJYDGYAgnQC42oB2AdJbQwEpgcEAJ4BiANoAGALqJQAB1SwabTvJAAPRAHYAjFwDMATikA2MwA5DOnQBYArGeOGANCBGI9VrlcvmpRyknQwcAXzD3NExcAmIyCmp6JlZ2bmQwFl5kgGUWHBYAV1gxCE4wLhoOKlQAawqIJIY8guLpOSQQJRU1Dg1tBAAmOy49QYcpHQdBvR0pMcszO3dPBEM7My4HYz1pqWNLPRsdJYiojGw8IhJybIZmXq4AYXwwOlq7sBaikvaNbtUaX6iDsgy2g3Wdksjn8JlBDhWiAchk2OkMgysB2RzlBZxA0UucRuiT4KUeLzeHyaX3yP0keg6imUgPUnQGgxmo3hdkcemMwwcG0RCGxXDRGMsWJRxlxkXxF1i1wSnweaR4V3i5Ap70ksn+zN6wIQfMsYsG0LMg2MZlm60mwucDi4HMli0GgX0zjxBMVmpJyVVnHVRIS2tq9MZXQNQLZII5XEcoQx5kO3mWHkQjud5oOlo93mM3oVGuJKtSQd9xLDkkGkYBhtjCEtxi41h5fJs+ysOgdOjBE2Gw1sUmC5qLMRLyupge4ldDrx1EkMdejrNAA2sTu8jsO0Lsej5wr7prsoTGs2CJz748JStu0-L3CeABtlEwFApSuVKtU6hUfZO96kjOzyvrA74KAgVQ1HQBRpO0fydPWMbrl4kwGFMzizMYcyCsK-gjE4OiWBC-jGDK+g3nOQEBo+oFvowH5iGApCkKgpBcAoz4FAAZuxAC2XAASGNH3HRL4MR+UG-rBvQIXqSGrn0jaHGCNocoYko2BiUzCvymyadsdg6Dh+zTFRgH+mJ5JgRB1aIUyPQoVoaHEWKegjsYDgOGi9hjMKHmGAYdg7KCVhLOagoWSJVlkmqEngYxCj2Qy+pOWuLnGuMUhcNagoHMZgqhMYAVSEFCahRKEWWFFcrCXesUgRkLBJYwHAQAAaixKicF+HAVNBf5CcWMVlo8zWte1XWkD1HDSTBcGcPJK7pcpqEIARCZQsMqZSDM+7Cg4limjaXnbHMlhzIYERyhwqCNPAnT1X6Y3OchGUDAAtDKvj6NYgQohYljCsMRjzIYASTN2NjXXVI0Na9FbUoIwirI5LJrZloJcCOI52GVZihD5goIhmxoHq24OQycl02NFCMPuNmSfN8xRpRjRqfRsv16P9p4WFYIOGIYCYjgex1mD5oLrPTL2M-FC5UqSrOPejDbrbMraniZ+4nGV6J6OmqwbJsl3jPY2wQ2YaKy6W8sVpZYbs+rmUzDl4y84T7rBDyZgOvsWvqd4EI67bU7AeJtlJc7zkbnyYrBORxGaVCDh6PhhtGAcJjjPye3EWHolxUGCV2YrMcfWhFi5TyjgUYb9h+2TFG+GMIUhRyUy7IXjV0RNH5tZ13VvUpRpjOYYpBWZCxzOnZNHQZGweSR7qhDLcMTqN9vcDkhR0AwsCq1Gq1GhyIxWvsSYWMZ-I9mTJGEbXsx7Av4Qb7ecsR48ACirHsRXmMBjIi2JaRwEIDzeWtsDMmgUdCthwjadSaJFiWBumEIAA */\n id: \"GoToDashboardDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n const sessionState = getDeviceSessionState();\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n currentApp:\n \"currentApp\" in sessionState\n ? sessionState.currentApp.name\n : null,\n error: null,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"GetDeviceStatus\",\n },\n },\n GetDeviceStatus: {\n // We run the GetDeviceStatus flow to get information about the device state\n invoke: {\n id: \"deviceStatus\",\n src: \"getDeviceStatus\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"CheckDeviceStatus\",\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<GoToDashboardMachineInternalState>(\n {\n Right: (output) => ({\n ..._.context._internalState,\n currentApp: output.currentApp,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n );\n },\n }),\n },\n // NOTE: The way we handle our DeviceActions means that we should never as we return an Either\n // onError: {\n // target: \"Error\",\n // actions: \"assignGetDeviceStatusUnknownError\",\n // },\n },\n },\n CheckDeviceStatus: {\n // We check the device status to see if we can have an error\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"DashboardCheck\",\n },\n ],\n },\n DashboardCheck: {\n // We check if the dashboard is open\n always: [\n {\n target: \"Success\",\n guard: \"isDashboardOpen\",\n },\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Error\",\n guard: (_) => {\n return _.context._internalState.currentApp === null;\n },\n actions: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\"currentApp === null\"),\n }),\n }),\n },\n {\n target: \"CloseApp\",\n },\n ],\n },\n CloseApp: {\n invoke: {\n src: \"closeApp\",\n onDone: {\n target: \"CloseAppCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return _.context._internalState;\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n CloseAppCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"GetAppAndVersion\",\n reenter: true,\n },\n ],\n },\n GetAppAndVersion: {\n invoke: {\n src: \"getAppAndVersion\",\n onDone: {\n target: \"DashboardCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const state: DeviceSessionState = getDeviceSessionState();\n // Narrow the type to ReadyWithoutSecureChannelState or ReadyWithSecureChannelState\n if (\n state.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n setDeviceSessionState({\n ...state,\n currentApp: _.event.output.data,\n });\n }\n return {\n ..._.context._internalState,\n currentApp: _.event.output.data.name,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n },\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error) {\n return Left(_.context._internalState.error);\n }\n\n return Right(undefined);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const closeApp = async () => internalApi.sendCommand(new CloseAppCommand());\n const getAppAndVersion = async () =>\n internalApi.sendCommand(new GetAppAndVersionCommand());\n\n return {\n closeApp,\n getAppAndVersion,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state: DeviceSessionState) =>\n internalApi.setDeviceSessionState(state),\n };\n }\n}\n", "import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n AppResponse,\n ListAppsCommand,\n ListAppsCommandResult,\n} from \"@api/command/os/ListAppsCommand\";\nimport { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { GoToDashboardDeviceAction } from \"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\";\nimport { StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\n\nimport {\n ListAppsDAError,\n ListAppsDAInput,\n ListAppsDAIntermediateValue,\n ListAppsDAOutput,\n} from \"./types\";\n\ntype ListAppsMachineInternalState = {\n readonly error: ListAppsDAError | null;\n readonly apps: AppResponse[];\n readonly shouldContinue: boolean;\n};\n\nexport type MachineDependencies = {\n readonly listApps: ({\n input,\n }: {\n input: boolean;\n }) => Promise<ListAppsCommandResult>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class ListAppsDeviceAction extends XStateDeviceAction<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n > {\n type types = StateMachineTypes<\n ListAppsDAOutput,\n ListAppsDAInput,\n ListAppsDAError,\n ListAppsDAIntermediateValue,\n ListAppsMachineInternalState\n >;\n\n const { listApps } = this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const goToDashboardMachine = new GoToDashboardDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listApps: fromPromise<ListAppsCommandResult, boolean>(listApps),\n goToDashboard: goToDashboardMachine,\n },\n guards: {\n hasError: ({ context }: { context: types[\"context\"] }) => {\n return context._internalState.error !== null;\n },\n hasMoreApps: (_) => _.context._internalState.shouldContinue,\n },\n actions: {\n assignAllowListApps: assign({\n intermediateValue: (_) =>\n ({\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QBkCWsAuBBADj2AImAG6oDGYWZGqA9gHYB0RpFASmAIYQCeAxAG0ADAF1EoHLVioaDcSAAeiAIwBOIYwAcANgDsyzat2HlAJgDMegDQgeKg412ntAVm3mdp1af0uAvn42aJi4+CzklNR0TADitAAqtAScsAAWAEa0nABOEHwQDGCMqPTEtADWRRApGVm5wmJIIJLSsvTySgguquaMACy6rvrKfSOqfTZ2CKZC2v3K2ou6xn2mms7+gSDB2HiEJBFUbYxxiclpmTl5YNnZtNmMOAA2nBgAZvcAtozVF3UQDXkLRk0Q6iG6vQGQ2UIzGE1siE0ykYLiEaLRuiECxcbmUASC6F2YQOFCO0ROCSSNUuuQAwqkwGRyoJRECpCC5E1OsosZpHAZBi5zKpuhjJohTBZHBt3N5UapVGp8dtCaF9qxIsdTlS-ld6YzmQJlI0JOy2mCEDyHPpNILhaKhLpxQg+kI+ZjzGZdD0seYPMqdmrwqSogxGIG9vlCsVShUihHiRqyWGE7AECUymRXtEGoCmsDzVyVAM+cpzGtzKjvdp1ppnZWNNosW4+sLNEJUdo+gHVXtg5ryam+Dc7g9nq8Ptlvqn+8mmKn07Gs21c6z82bQUXLSXGGWK1XVDW1s6XMZ+kKzLaZk3XD2Qn2SQOU738HwFJhXkVOG8MDcABTKKiaIAJR8DOj5zuGL6wHmpqtJuoDcjue6aA21a1s6ejIuo2imDiCy6H0PS6HeRLqocobztBtIMDQ9AAK5gFG9BFBmcZQfeiYUccqY0fQdGMYumbZgwq4ms0G6cohKiaC4pZCOMQjlu4bguPWqyMJKrhdpKmLLNopFBhBlEcWRfECUxI73I8LzvF8plGUmJm8bRJSCWxy45qIsESfBUmKBKMzIjMnpyTitp+uY9ZyburYWDCfQ1ro5aGQ+TnHOZblMT5BYIQFlqoaojDaCK5iuq2XY1s6iW6I4h54bJlheKlXEhhlrkMdlxpsn57RbgYbiMLMeFrLpMxCiewqOOV4xEai6x4sq9C0BAcDyOB6V5bl-mdAAtNozq7S4jAKqdFgKdW+4teRbXkv2HDcFMcEcn10kuqYzowrVTjaR4TXrNds4mdq5y1FcPUvRaazHaVl5Cq66hqQiCDjJpMplQYmijClWwbdx5Ig9S-z6kyEOFm97bIqsh4KsKZYlQdyOSnywrluYsxDJTmwEpxN1PlRvNk3l3IGMiOIDB2ZWtq6H3I5WtV9BePhYm6gymIDxk8dRHWMULO0SlicyyYBPRlt4jXRXM2hqN6lg8j0GubWGmWdXrr35QsOhDbJh5+l44XwlM5hOCixhej4Ip9Ei3a49BQPHAAyvRZAULA8Drr1UM4nMMxeM4NaoR4TrI0KOczX0cWKo7+NhgAorc9xu1DoxFYBuE6O2OgKfWZ46EYimzAsXYBAEQA */\n id: \"ListAppsDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n apps: [],\n shouldContinue: false,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"GoToDashboard\",\n },\n },\n GoToDashboard: {\n invoke: {\n id: \"dashboard\",\n src: \"goToDashboard\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"GoToDashboardCheck\",\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<ListAppsMachineInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GoToDashboardCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"ListApps\",\n },\n ],\n },\n ListApps: {\n // NOTE: This is a timeout that is currently not used\n // We need to discuss this as a team, how do we want to\n // handle the case when the user does not validate or reject on the device\n // after: {\n // 15000: \"Error\",\n // actions: assign({\n // _internalState: (_) => ({\n // error: new UnknownDAError(\"ListAppsTimeout\"),\n // }),\n // }),\n // },\n entry: \"assignAllowListApps\",\n invoke: {\n src: \"listApps\",\n input: (_) => false,\n onDone: {\n target: \"Continue\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n apps: _.context._internalState.apps.concat(\n _.event.output.data,\n ),\n shouldContinue: _.event.output.data.length === 2,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n intermediateValue: (_) => ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ListAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n \"ListAppsContinue\",\n ],\n },\n ListAppsContinue: {\n invoke: {\n src: \"listApps\",\n input: (_) => true,\n onDone: {\n target: \"Continue\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n apps: _.context._internalState.apps.concat(\n _.event.output.data,\n ),\n shouldContinue: _.event.output.data.length === 2,\n };\n }\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Continue: {\n always: [\n {\n target: \"ListAppsContinue\",\n guard: \"hasMoreApps\",\n },\n {\n target: \"Success\",\n },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error) {\n return Left(_.context._internalState.error);\n }\n\n return Right(_.context._internalState.apps);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const listApps = async ({ input }: { input: boolean }) => {\n const command = new ListAppsCommand({ isContinue: input });\n return internalApi.sendCommand(command);\n };\n\n return {\n listApps,\n };\n }\n}\n", "import { EitherAsync, Left, Right } from \"purify-ts\";\nimport {\n AnyEventObject,\n assign,\n fromCallback,\n fromPromise,\n setup,\n} from \"xstate\";\n\nimport { ListAppsResponse } from \"@api/command/os/ListAppsCommand\";\nimport { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport { ListAppsDeviceAction } from \"@api/device-action/os/ListApps/ListAppsDeviceAction\";\nimport { ListAppsDAOutput } from \"@api/device-action/os/ListApps/types\";\nimport { StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport { DeviceSessionState } from \"@api/device-session/DeviceSessionState\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport { Application } from \"@internal/manager-api/model/ManagerApiType\";\n\nimport {\n ListAppsWithMetadataDAError,\n ListAppsWithMetadataDAInput,\n ListAppsWithMetadataDAIntermediateValue,\n ListAppsWithMetadataDAOutput,\n} from \"./types\";\n\ntype ListAppsWithMetadataMachineInternalState = {\n error: ListAppsWithMetadataDAError | null;\n apps: ListAppsResponse;\n appsWithMetadata: ListAppsWithMetadataDAOutput;\n};\n\nexport type MachineDependencies = {\n getAppsByHash: ({\n input,\n }: {\n input: ListAppsDAOutput;\n }) => EitherAsync<HttpFetchApiError, Array<Application | null>>;\n getDeviceSessionState: () => DeviceSessionState;\n saveSessionState: (state: DeviceSessionState) => DeviceSessionState;\n};\n\nexport class ListAppsWithMetadataDeviceAction extends XStateDeviceAction<\n ListAppsWithMetadataDAOutput,\n ListAppsWithMetadataDAInput,\n ListAppsWithMetadataDAError,\n ListAppsWithMetadataDAIntermediateValue,\n ListAppsWithMetadataMachineInternalState\n> {\n makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n ListAppsWithMetadataDAOutput,\n ListAppsWithMetadataDAInput,\n ListAppsWithMetadataDAError,\n ListAppsWithMetadataDAIntermediateValue,\n ListAppsWithMetadataMachineInternalState\n > {\n type types = StateMachineTypes<\n ListAppsWithMetadataDAOutput,\n ListAppsWithMetadataDAInput,\n ListAppsWithMetadataDAError,\n ListAppsWithMetadataDAIntermediateValue,\n ListAppsWithMetadataMachineInternalState\n >;\n\n const { getAppsByHash, saveSessionState, getDeviceSessionState } =\n this.extractDependencies(internalAPI);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n\n const listAppsMachine = new ListAppsDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalAPI);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n listApps: listAppsMachine,\n getAppsByHash: fromPromise(getAppsByHash),\n saveSessionState: fromCallback(\n ({\n input,\n sendBack,\n }: {\n sendBack: (event: AnyEventObject) => void;\n input: {\n appsWithMetadata: Array<Application | null>;\n };\n }) => {\n const { appsWithMetadata } = input;\n\n const filterted = appsWithMetadata.filter((app) => app !== null);\n\n const sessionState = getDeviceSessionState();\n const updatedState = {\n ...sessionState,\n installedApps: filterted,\n };\n try {\n saveSessionState(updatedState);\n sendBack({ type: \"done\" });\n } catch (error) {\n sendBack({ type: \"error\", error });\n }\n },\n ),\n },\n guards: {\n hasError: ({ context }: { context: types[\"context\"] }) => {\n return context._internalState.error !== null;\n },\n hasNoAppsInstalled: ({ context }: { context: types[\"context\"] }) =>\n context._internalState.apps.length === 0,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QBkCWsAuBBADj2A6qhgBYCyYGAhhFdQCJgBuqAxmFqxqgPYB2AOkYt2AJTA0AngGIA2gAYAuolA4esYrz4qQAD0QBGAJzyBADgBsAdgNWAzPIAs8+TceOANCEmILAJjMBKwsHOyMjAzN7SIBfGK80TFx8IlIKaloGZjYOLi0BROw8WGkIfjABVD4mHgBrCoAbdCL8BWUkEDUNbn4dfQQAVgCBIz9IgacQ6z8-Lx8Ef1N5OwsBlbs7dyNHCziE5uTCYnJKGjoqYRzOHsFCw+kwACdHnkeBHAa6ADNXgFsBJpJYptHRdTS9Dr9IaBUbjSYrKwzOaIMwGAQTFx2MxmOx+AYDKxGAZ7EB3YqpE4Zc6XdjXfJk-AAYRIYFYtTkSlB6nB2khKKGAj89jCRjCFmWdmRCD8LiCGIMMysqIsCpJDKOaVOmQu2VpeX4BQOxWZrPZsgM7VU3JufX5fkFwvCYolUqVjkFyxlA3FeO9VjVRpSx3SZyyIlyN0NQKZLLZcj8ls61q0toQZgFQo2TqM4o2UosjjsQRC8iFa1GfiJAejGspoZ14bpBoAYpRWHXtaVypVqnUKjAWrAAEKSAASVFgJBBHTBNr5CAM7gsAkcY3TZmW-iMiPzm0Flkc2PX8gMTmrg4pIe1NIj+VbGHbV-OD2er3enwwP0e-wHhxH48nacrW6FN50XHYVzXAYNxWSsd28RA7GMQUMUcaCLFFTZdniUlA1rJ8wyufVBHvR8tXOE04yApMQIhUB+kiVYBFLTYbBmPwCwsKUdjRRxghVMwAlWSIjHPQ5L3Iwi9UjUiOwo2MzQtLlaN5ejDEsAZmL8ViFRmTj8wLSDt3kbFtzGZYxPJYNJIbIjIwAZSoJgwHsuANH4Ls+DAajZ1AtTpQ4wJnH8UyHB9fNgiMjCzCdcUzEcSyg01KkpNvA1HOc1zYHcvgXxeR4fOTOi9EQPSgvkEKYrC0spQJIwRn4pw8QLAwQjiHC+B4CA4B0dUJJS2zpL8mieVTABaLiEIQMbNPCOb5vmyxEvwmybybQQb3EKRlNG+dV3zIVizCxwc3sPxlv6+s1uIqNBx2ud-ICWa1lPexsWMb18ycQUS3FfEFTsb0LusgbrsjdVKNqe7hv6CwogECwCxPQGhSsNCjHzVdmIMMKBgMBV8eMYHkqu3U0pIts5OoaHioY093QCEwMNFJV5Gg-NInRHGKoqnNSzR4mqcG8mBFkgiqEhmnVJKhdVndQTlncKxXCsfF829H6HFsEJvSFbD9hrS7rzJ9aBAyly3OG3zadK-nzAGUUzKsQlxQxqaQnq2xt1XNnnBMuxBfFsH8nsgBXVh2GyqXUzxCqBEB7YxlXGLIisV0cy5sLlcR53RUD1aTZugBRV9Hmj+dY+XBPV0XRnU9qyxzGiiqNwmOxgnamIgA */\n id: \"ListAppsWithMetadataDeviceAction\",\n initial: \"DeviceReady\",\n context: (_) => {\n return {\n input: _.input,\n _internalState: {\n error: null,\n apps: [],\n appsWithMetadata: [],\n },\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n };\n },\n states: {\n DeviceReady: {\n always: {\n target: \"ListApps\",\n },\n },\n ListApps: {\n invoke: {\n id: \"listApps\",\n src: \"listApps\",\n input: (_) => ({\n unlockTimeout: _.context.input.unlockTimeout,\n }),\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"ListAppsCheck\",\n actions: assign({\n intermediateValue: (_) => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n _internalState: (_) => {\n return _.event.output.caseOf({\n Right: (apps) => ({\n ..._.context._internalState,\n apps,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n },\n },\n },\n ListAppsCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"Success\",\n guard: \"hasNoAppsInstalled\",\n actions: assign({\n _internalState: (_) => {\n return {\n ..._.context._internalState,\n appsWithMetadata: [],\n };\n },\n }),\n },\n {\n target: \"FetchMetadata\",\n },\n ],\n },\n FetchMetadata: {\n invoke: {\n id: \"getAppsByHash\",\n src: \"getAppsByHash\",\n input: (_) => _.context._internalState.apps,\n onDone: {\n target: \"FetchMetadataCheck\",\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf({\n Right: (appsWithMetadata) => ({\n ..._.context._internalState,\n appsWithMetadata,\n }),\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n FetchMetadataCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"SaveSession\",\n },\n ],\n },\n SaveSession: {\n invoke: {\n src: \"saveSessionState\",\n input: (_) => ({\n appsWithMetadata: _.context._internalState.appsWithMetadata,\n }),\n },\n on: {\n done: {\n target: \"Success\",\n },\n error: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error) {\n return Left(_.context._internalState.error);\n }\n\n return Right(_.context._internalState.appsWithMetadata);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n return {\n getAppsByHash: ({ input }) => internalApi.getMetadataForAppHashes(input),\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n saveSessionState: (state: DeviceSessionState) =>\n internalApi.setDeviceSessionState(state),\n };\n }\n}\n", "import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n CloseAppCommand,\n CloseAppCommandResult,\n} from \"@api/command/os/CloseAppCommand\";\nimport {\n GetAppAndVersionCommand,\n GetAppAndVersionCommandResult,\n} from \"@api/command/os/GetAppAndVersionCommand\";\nimport {\n OpenAppCommand,\n OpenAppCommandResult,\n} from \"@api/command/os/OpenAppCommand\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport {\n DeviceLockedError,\n DeviceNotOnboardedError,\n} from \"@api/device-action/os/Errors\";\nimport { StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport {\n DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\n\nimport {\n OpenAppDAError,\n OpenAppDAInput,\n OpenAppDAIntermediateValue,\n OpenAppDAOutput,\n} from \"./types\";\n\ntype OpenAppStateMachineInternalState = {\n readonly currentlyRunningApp: string | null;\n readonly error: OpenAppDAError | null;\n};\n\nexport type MachineDependencies = {\n readonly getAppAndVersion: () => Promise<GetAppAndVersionCommandResult>;\n readonly closeApp: () => Promise<CloseAppCommandResult>;\n readonly openApp: (arg0: {\n input: { appName: string };\n }) => Promise<OpenAppCommandResult>;\n readonly getDeviceSessionState: () => DeviceSessionState;\n readonly setDeviceSessionState: (state: DeviceSessionState) => void;\n readonly isDeviceOnboarded: () => boolean;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\n/**\n * Opens a given app on the device.\n *\n * It checks if the device is onboarded, unlocked, and which app is currently open.\n * If the current app is the dashboard, it will directly open the requested app.\n * If another app is opened, it will close the current app and open the requested app.\n *\n * Example of usage:\n *\n * ```ts\n * const deviceAction = new OpenAppDeviceAction({\n * input: {\n * appName: \"MyApp\",\n * },\n * });\n * sdk.executeDeviceAction({ sessionId: \"mySessionId\", deviceAction });\n * ```\n */\nexport class OpenAppDeviceAction extends XStateDeviceAction<\n OpenAppDAOutput,\n OpenAppDAInput,\n OpenAppDAError,\n OpenAppDAIntermediateValue,\n OpenAppStateMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n OpenAppDAOutput,\n OpenAppDAInput,\n OpenAppDAError,\n OpenAppDAIntermediateValue,\n OpenAppStateMachineInternalState\n > {\n type types = StateMachineTypes<\n OpenAppDAOutput,\n OpenAppDAInput,\n OpenAppDAError,\n OpenAppDAIntermediateValue,\n OpenAppStateMachineInternalState\n >;\n\n const {\n getAppAndVersion,\n closeApp,\n openApp,\n getDeviceSessionState,\n setDeviceSessionState,\n isDeviceOnboarded,\n } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getAppAndVersion: fromPromise(getAppAndVersion),\n closeApp: fromPromise(closeApp),\n openApp: fromPromise(openApp),\n },\n guards: {\n isDeviceOnboarded: () => isDeviceOnboarded(), // TODO: we don't have this info for now, this can be derived from the \"flags\" obtained in the getVersion command\n isDeviceUnlocked: () =>\n getDeviceSessionState().deviceStatus !== DeviceStatus.LOCKED,\n isRequestedAppOpen: ({ context }: { context: types[\"context\"] }) => {\n if (context._internalState.currentlyRunningApp === null)\n throw new Error(\"context.currentlyRunningApp === null\");\n return (\n context._internalState.currentlyRunningApp === context.input.appName\n );\n },\n isDashboardOpen: ({ context }: { context: types[\"context\"] }) => {\n if (context._internalState.currentlyRunningApp === null)\n throw new Error(\"context.currentlyRunningApp === null\");\n return context._internalState.currentlyRunningApp === \"BOLOS\";\n },\n hasError: ({ context }) => context._internalState.error !== null,\n },\n actions: {\n assignErrorDeviceNotOnboarded: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceNotOnboardedError(),\n }),\n }),\n assignErrorDeviceLocked: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new DeviceLockedError(),\n }),\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.UnlockDevice,\n },\n }),\n assignUserActionNeededOpenApp: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignNoUserActionNeeded: assign({\n intermediateValue: (_) =>\n ({\n ..._.context.intermediateValue,\n requiredUserInteraction: UserInteractionRequired.None,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // FIXME: add a typeguard\n }),\n }),\n assignNoError: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: null,\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QHkAOYB2BBVqAiYAbgJYDGYWpALsQPYYB0BJ5ASmAIYQCeAxANoAGALqJQqWrGI16YkAA9EARhWCGADgAsAZm1b1SwUoDspgDQhuiAEzX1DbQE5tJlQDYlm414CsAXz8LNEwcfCIyCmo6RmQMACNaDgAnCGIMKABhAAswUgBrARE5CSkZDDlFBCUPbQYfZx91H0FtTRNjCysEbWM1bTdHAzcfH2q9awCg9GxcZgjKMoZYhOTU9Ozcgv4lUSQQEuloiuUauoamlrbzSxtBNTu7pW1BEe1rJUmQYJmwlkjFgAytHyaUyOXyhV24kkh1ke0q7w8DDcxmqjkM1l6Kh8nUQzR8DEEjjcz3UxKUjiMbk+31Cc3IC2iDCBIPW4K2O2KMLKxwQiKUyNRAwxWKUOJu3TaDFsw28bkExmsgnU-Rp0zp4QZUXoDFCABsyBwylhCBxiHqOHE9WBeBB6GAGGlCLQ8g7abNNf8mfrDcbTebLdaEE7gUbokJhBGuaUjvCbCSCdZNI5UQqhg1cQhNOprAxND4XP0xZTHI01SEPX9GTqfaQw-QTWaLVabWAkklaEkGKgLVQAGadgC2S3Vlfm2sYtfr2H9zaDIbrZQjUb2Bx5cb5CelydTxnT2nFXTcmjUBYTzlazkcE0CX1Hv3HiynfqbgbA7FgAFc9VQNhCV9CMZwqAlQuAWZwHiqbStI0mY+PmdRKNYxLZmKgjvDeUwVg+WpPrgBqLtEjYBi2H7fr+7ICJyq7crGIGIK0LwME8dzJuizzNNYmZeLmAysZ4Ph2KYmiaOWPz0l6Nb4b60R-lsRQ0UB5Qbq0pgMM4FJ8dYx4KpomaOJo6k9G4yHvEhBmYmJGpVhOurSYR9ByVRUL7LRwEKAxYq1PUkGtE8+ZaJmBh1A8hieMh17vFZY64UyeAcLAWQrCkTkAa5Sm8tY-TIkmlJvFojjXuocHysiegvB4JJ6P4t7ujhkmMPFiXJRAqXUYBsLKfRfLZSZyYtHYbF2JmQoaMeIweEmJjHtF9XVowGR6pIFD2dOtr2o6GDOq6I7YRJ80MIty3PtEwZbaGS4iGla50R5CBVYSJkFncbzGC4mYoo4zHlfUCo+KieizfttlHbAK09jJ9C8G2HZdj2RoDkkw51cDiyg+DBHTmdzoORgy4KR167dQ9ghPc8A1vUomZIQqeZksmTw9JoJlA56B3oyd9BkT+qUE+lnW8iohgaDoeioUYpgdBKQu5sz8rEgYxjwaJtX3qjTIc6tZTcxRmzOdGAsbqoagmM8Yr-aTTyOCNpXWAW-TGIMfmO6zNmLHVmNlOtGAOiGO0o2ztke5DGDYxd4ZXXzN3uZU1RPBBjTNM7UtdAWxjqQZ6gqv0LyO9oruPkywe49D7adt2vaI8jauB+796e6dC7TvjLnR11d1x955xJ1cKeIAZ6dGEJqJKk4qqq3ttdF-XIc67zrdue3CLVG4gqZyMpbGG4bhBeoq9b-mB7jaTZYT+JU86sX05z5R2wLxlG78oKYpNKW16mx9x6EkhWdGKTSvXgLrFKSENcbsC4Hwa6i9eQHgQgmCkIlBjKmcEFUY24ejaSTMeCkHxPgYFoBAOAcgA5u1um3XkABaHeEoKEEkKvQwQJ4XjKl6ErIBDUmCenATwA2RM7rknUm4FUhV-oiTJFTCUth05j0xJVFUTxt7sIOssRIKRQRyV4bdWOTNkTqDekqAwbxNDIUzFIhwzhZHVHkf0akZ9rKFx1CyPI6j2SaJjsoUsBIBimB8MMeUZJqFdH6PYDwKYBjwQaEYpRtlOYzlfC2NxS8bB6HsM4RUIwiSH0VNxAy6lkL1EEjTYUtisLn1ISAhuDZZxvhvpsRJmVX51FJFlZ4-Qk5wUYcxR2BTTIGUKtEvCoDpwaMUobbqugUzIg8PmEwIiTJ9yqAMaUW90IngCaIgZcUEpJVUa1Vxoy+GVGMbvZiuVf5IM8CoTZOpNZDL4eQjcIlDLIRRH5FhoxDyIGFMiASe8IoFlGNchaS0waxNqfkepG4tACiMGeQw6IiQeBGncMaMycxEl8eoIFu0fiVPbg87qSE3q6MVBpehPQ4K6G+uoZUJIVB7laNiq+2s4DkRGYTLRygs6GSQtmO4iIaWljgvUBgip-K5RErofOdiYocLBZwHhBzOWSkKqKz6Lw3i6U+QgPchlTB7xTPBeCWVHDYoAMqflIOQWA8AlXuO6KMQylImipgMi4BZzhDIKkpM0FEypRimplXNWyABRMuSRIXjNaKvHQ3h0Q0reCYT+3khGNEKgqIRxgAgBCAA */\n id: \"OpenAppDeviceAction\",\n initial: \"DeviceReady\",\n context: ({ input }) => {\n const sessionState = getDeviceSessionState();\n const { sessionStateType } = sessionState;\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n currentlyRunningApp:\n sessionStateType ===\n DeviceSessionStateType.ReadyWithoutSecureChannel\n ? sessionState.currentApp.name\n : null,\n },\n };\n },\n states: {\n DeviceReady: {\n // check device capabilities & status known\n always: {\n target: \"OnboardingCheck\",\n },\n },\n\n OnboardingCheck: {\n // check onboarding status provided by device session\n always: [\n {\n target: \"LockingCheck\",\n guard: {\n type: \"isDeviceOnboarded\",\n },\n },\n {\n target: \"Error\",\n actions: \"assignErrorDeviceNotOnboarded\",\n },\n ],\n },\n\n LockingCheck: {\n // check locking status provided by device session\n always: [\n {\n target: \"ApplicationAvailable\",\n guard: \"isDeviceUnlocked\",\n },\n {\n target: \"Error\",\n actions: \"assignErrorDeviceLocked\",\n },\n ],\n },\n\n ApplicationAvailable: {\n // execute getAppAndVersion command\n invoke: {\n src: \"getAppAndVersion\",\n onDone: {\n target: \"ApplicationAvailableResultCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n const state: DeviceSessionState = getDeviceSessionState();\n // Narrow the type to ReadyWithoutSecureChannelState or ReadyWithSecureChannelState\n if (\n state.sessionStateType !==\n DeviceSessionStateType.Connected\n ) {\n setDeviceSessionState({\n ...state,\n currentApp: _.event.output.data,\n });\n }\n return {\n ..._.context._internalState,\n currentlyRunningApp: _.event.output.data.name,\n };\n } else {\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n\n ApplicationAvailableResultCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n {\n target: \"ApplicationCheck\",\n },\n ],\n },\n\n ApplicationCheck: {\n // Is the current application the requested one\n always: [\n {\n target: \"ApplicationReady\",\n guard: \"isRequestedAppOpen\",\n },\n \"DashboardCheck\",\n ],\n },\n\n DashboardCheck: {\n // Is the current application the dashboard\n always: [\n {\n target: \"OpenApplication\",\n guard: \"isDashboardOpen\",\n },\n \"CloseApplication\",\n ],\n },\n\n CloseApplication: {\n invoke: {\n src: \"closeApp\",\n onDone: {\n target: \"CloseApplicationResultCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n currentlyRunningApp: \"BOLOS\",\n };\n } else {\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n CloseApplicationResultCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n { target: \"OpenApplication\" },\n ],\n },\n\n OpenApplication: {\n // execute openApp command,\n entry: \"assignUserActionNeededOpenApp\",\n exit: \"assignNoUserActionNeeded\",\n invoke: {\n src: \"openApp\",\n input: ({ context }) => ({ appName: context.input.appName }),\n onDone: {\n target: \"OpenApplicationResultCheck\",\n actions: assign({\n _internalState: (_) => {\n if (isSuccessCommandResult(_.event.output)) {\n return {\n ..._.context._internalState,\n currentlyRunningApp: _.context.input.appName,\n };\n } else {\n return {\n ..._.context._internalState,\n error: _.event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n\n OpenApplicationResultCheck: {\n always: [\n {\n target: \"Error\",\n guard: \"hasError\",\n },\n { target: \"ApplicationAvailable\" },\n ],\n },\n\n ApplicationReady: {\n // application is ready to be used\n always: \"Success\",\n },\n\n // success state\n Success: {\n type: \"final\",\n actions: \"assignNoError\", // TODO, we should not need this\n },\n\n // error state\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.error // TODO: instead we should rely on the current state (\"Success\" or \"Error\")\n ? Left(context._internalState.error)\n : Right(undefined),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppAndVersion = async () =>\n internalApi.sendCommand(new GetAppAndVersionCommand());\n const closeApp = async () => internalApi.sendCommand(new CloseAppCommand());\n const openApp = async (arg0: { input: { appName: string } }) =>\n internalApi.sendCommand(\n new OpenAppCommand({ appName: arg0.input.appName }),\n );\n\n return {\n getAppAndVersion,\n closeApp,\n openApp,\n getDeviceSessionState: () => internalApi.getDeviceSessionState(),\n setDeviceSessionState: (state: DeviceSessionState) =>\n internalApi.setDeviceSessionState(state),\n isDeviceOnboarded: () => true, // TODO: we don't have this info for now, this can be derived from the \"flags\" obtained in the getVersion command\n };\n }\n}\n", "import { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n CommandResult,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport { InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { OpenAppDeviceAction } from \"@api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction\";\nimport { StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport { Command } from \"@api/types\";\n\nimport {\n SendCommandInAppDAError,\n SendCommandInAppDAInput,\n SendCommandInAppDAIntermediateValue,\n SendCommandInAppDAInternalState,\n SendCommandInAppDAOutput,\n} from \"./SendCommandInAppDeviceActionTypes\";\n\n/**\n * Tries to open an app on the device, and if it is successful, sends a command\n * to the app.\n * The output will be the result of the command.\n *\n * ```ts\n * input: {\n * appName: string;\n * command: Command<CommandResult, CommandArgs>;\n * requiredUserInteraction: UserInteraction;\n * }\n * ```\n *\n * Example of usage:\n *\n * ```ts\n * const deviceAction = new SendCommandInAppDeviceAction({\n * input: {\n * appName: \"MyApp\",\n * command: new MyAppSpecificCommand({commandSpecificArg: \"foo\"}),\n * requiredUserInteraction: UserInteractionRequired.None,\n * },\n * });\n * sdk.executeDeviceAction({ sessionId: \"mySessionId\", deviceAction });\n * ```\n */\nexport class SendCommandInAppDeviceAction<\n CommandResponse,\n CommandArgs,\n CommandErrorCodes,\n UserInteraction extends UserInteractionRequired,\n> extends XStateDeviceAction<\n SendCommandInAppDAOutput<CommandResponse>,\n SendCommandInAppDAInput<\n CommandResponse,\n CommandArgs,\n CommandErrorCodes,\n UserInteraction\n >,\n SendCommandInAppDAError<CommandErrorCodes>,\n SendCommandInAppDAIntermediateValue<UserInteraction>,\n SendCommandInAppDAInternalState<CommandResponse, CommandErrorCodes>\n> {\n makeStateMachine(\n internalAPI: InternalApi,\n ): DeviceActionStateMachine<\n SendCommandInAppDAOutput<CommandResponse>,\n SendCommandInAppDAInput<\n CommandResponse,\n CommandArgs,\n CommandErrorCodes,\n UserInteraction\n >,\n SendCommandInAppDAError<CommandErrorCodes>,\n SendCommandInAppDAIntermediateValue<UserInteraction>,\n SendCommandInAppDAInternalState<CommandResponse, CommandErrorCodes>\n > {\n type types = StateMachineTypes<\n SendCommandInAppDAOutput<CommandResponse>,\n SendCommandInAppDAInput<\n CommandResponse,\n CommandArgs,\n CommandErrorCodes,\n UserInteraction\n >,\n SendCommandInAppDAError<CommandErrorCodes>,\n SendCommandInAppDAIntermediateValue<UserInteraction>,\n SendCommandInAppDAInternalState<CommandResponse, CommandErrorCodes>\n >;\n\n const { sendCommand } = this.extractDependencies(internalAPI);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n sendCommand: fromPromise(sendCommand),\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: this.input.appName },\n }).makeStateMachine(internalAPI),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QFEAuALA0mAngJwEsA7KAcTFQEEII85YARMANwIGMxK3UCB7IgHQB5AA5gilESKasOXHvwDEEfmAHFmvANZreYiVIDKqAIaowAWRNt0xMAG0ADAF1EoEb1gEFRNyAAeiACMQQDsAgAcACwAzKEArABMUfGpEQCcEYkANCA4iFGO8QKhjokxERUpQenp8QC+9bloWLiEJORUNHSwjCzsnNx8ggDC6GBsWqLiktL9ckP8AEpwAK4ANqiKTq5IIB5ePn6BCEFR4YkAbKE1Zemh55URufkI8fcC8TGXl0EVoelHJcio1mhhsPhiGQKNRaPQZAN5MMBGMJlN9LMEQsfCtYBstvYgrt3J5vMNjgUQgJLokHlEgldko50rEXoh3uEvj8-hEAUCQU0QC0Ie1oV04b0sYMfAJOrCerARrwALbKkxECDKVTqIiaHQCGDihVK1XqiA7PwHMn8CmnRJBASOFIxKJXJ21GLpHJ5RARGoCEL3CKXDLpS4pCKgoXgtpQuXdeHzaXI+MSxUqtUaxRgPB4Xh4AQidZmABm+eVBphCd6Jsz5pcltJRz2Jyiv0dvIeNJi8UqoWePoQIccn3iId+sSqkajRF4EDgfmFsY6VbTUqRNr2VuboBOAFpLmzTpd0iV+0EkkEylcAVEo0vISujYnZMn+MIMVJ14tfFum+SWwKb1XkSMdIhuQFEidYNSjvQUH1FVMFW-GVUUmaYDDmV8NyIXF8UbQ4AN3X0ogEF17S9eJQhiJ0ojbI8khHc54mvRwGUBXl7xjR8xXlF9ER-WVV2NDMzQI61f2IhBXUdRw5NDX54gvXkjx+CIzxuMdfnKd44LBVoeKQ-jsWRQxVjYDhenEncAmCcMBHKBlqKyIEYivGIjzDGJqQSYMamDa4BX0kU42E4y30EZBc3zayiNshBSmKFjqn7GCMgHV57lIz0aT9P0lL+S5GkaIA */\n id: \"SendCommandInAppDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input: input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n commandResponse: null,\n error: null,\n },\n };\n },\n states: {\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n input: { appName: this.input.appName },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<\n SendCommandInAppDAInternalState<\n CommandResponse,\n CommandErrorCodes\n >\n >({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"SendCommand\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n SendCommand: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: this.input.requiredUserInteraction,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"sendCommand\",\n src: \"sendCommand\",\n input: ({ context }) => context.input.command,\n onDone: {\n target: \"SendCommandResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n commandResponse: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SendCommandResultCheck: {\n always: [\n {\n target: \"Success\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.commandResponse\n ? Right(context._internalState.commandResponse)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n return {\n sendCommand: (_: {\n input: Command<CommandResponse, CommandArgs, CommandErrorCodes>;\n }): Promise<CommandResult<CommandResponse, CommandErrorCodes>> =>\n internalApi.sendCommand(_.input),\n };\n }\n}\n", "export function isBase64String(value: string): boolean {\n // Valid base64 characters are [A-Za-z0-9+/]\n // They are always grouped by 4 characters.\n // Optional padding at the end with one or two '='.\n // see section 4 of: https://www.rfc-editor.org/rfc/rfc4648.txt\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(\n value,\n );\n}\n\nexport function base64StringToBuffer(value: string): Uint8Array | null {\n if (value.length === 0) {\n return new Uint8Array();\n }\n if (!isBase64String(value)) {\n return null;\n }\n try {\n // Use the browser implementation of atob\n const base64Decoded = atob(value);\n const buffer = new Uint8Array(base64Decoded.length);\n for (let i = 0; i < base64Decoded.length; i++) {\n buffer[i] = base64Decoded.charCodeAt(i);\n }\n return buffer;\n } catch (_error: unknown) {\n // Use the implementation of Buffer for environments such as node\n return Uint8Array.from(Buffer.from(value, \"base64\"));\n }\n}\n"],
|
5
|
-
"mappings": "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",
|
6
|
-
"names": [
|
3
|
+
"sources": ["../../index.ts"],
|
4
|
+
"sourcesContent": ["export * from \"./src\";\n"],
|
5
|
+
"mappings": "AAAA,WAAc",
|
6
|
+
"names": []
|
7
7
|
}
|