@dronedeploy/rocos-js-sdk 1.0.0-alpha-2 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/IRocosSDK.js +5 -1
- package/README.md +0 -18
- package/RocosSDK.js +95 -93
- package/api/StreamRegister.d.ts +1 -1
- package/api/StreamRegister.js +12 -23
- package/api/atoms/StreamHeartbeat.js +7 -3
- package/api/streams/caller/CallerStream.d.ts +6 -6
- package/api/streams/caller/CallerStream.js +49 -41
- package/api/streams/caller/CallerStreamAbstract.d.ts +11 -6
- package/api/streams/caller/CallerStreamAbstract.js +67 -55
- package/api/streams/caller/CallerStreamNode.d.ts +6 -6
- package/api/streams/caller/CallerStreamNode.js +61 -48
- package/api/streams/command/CommandStream.d.ts +4 -2
- package/api/streams/command/CommandStream.js +30 -28
- package/api/streams/command/CommandStreamAbstract.d.ts +8 -4
- package/api/streams/command/CommandStreamAbstract.js +42 -33
- package/api/streams/command/CommandStreamNode.d.ts +4 -2
- package/api/streams/command/CommandStreamNode.js +40 -16
- package/api/streams/control/ControlStream.d.ts +6 -4
- package/api/streams/control/ControlStream.js +36 -30
- package/api/streams/control/ControlStreamAbstract.d.ts +9 -6
- package/api/streams/control/ControlStreamAbstract.js +54 -57
- package/api/streams/control/ControlStreamNode.d.ts +5 -3
- package/api/streams/control/ControlStreamNode.js +44 -19
- package/api/streams/fileAccessor/FileAccessorStream.d.ts +4 -2
- package/api/streams/fileAccessor/FileAccessorStream.js +57 -42
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.d.ts +9 -4
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.js +48 -28
- package/api/streams/fileAccessor/FileAccessorStreamNode.d.ts +3 -1
- package/api/streams/fileAccessor/FileAccessorStreamNode.js +53 -23
- package/api/streams/search/SearchStream.d.ts +5 -2
- package/api/streams/search/SearchStream.js +74 -50
- package/api/streams/search/SearchStreamAbstract.d.ts +9 -4
- package/api/streams/search/SearchStreamAbstract.js +35 -33
- package/api/streams/search/SearchStreamNode.d.ts +5 -2
- package/api/streams/search/SearchStreamNode.js +48 -23
- package/api/streams/telemetry/TelemetryStream.d.ts +4 -4
- package/api/streams/telemetry/TelemetryStream.js +78 -49
- package/api/streams/telemetry/TelemetryStreamAbstract.d.ts +11 -8
- package/api/streams/telemetry/TelemetryStreamAbstract.js +145 -126
- package/api/streams/telemetry/TelemetryStreamNode.d.ts +5 -5
- package/api/streams/telemetry/TelemetryStreamNode.js +64 -44
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.d.ts +10 -5
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.js +20 -37
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.d.ts +13 -10
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.js +37 -37
- package/constants/api.d.ts +1 -6
- package/constants/api.js +126 -126
- package/constants/grpc.js +8 -5
- package/constants/identifier.js +9 -6
- package/constants/timezones.d.ts +1 -1
- package/constants/timezones.js +4 -1
- package/demo/angular/.editorconfig +16 -0
- package/demo/angular/.eslintignore +4 -0
- package/demo/angular/.eslintrc.json +50 -0
- package/demo/angular/README.md +36 -0
- package/demo/angular/angular.json +132 -0
- package/demo/angular/karma.conf.js +44 -0
- package/demo/angular/package.json +41 -0
- package/demo/angular/src/app/app.component.css +0 -0
- package/demo/angular/src/app/app.component.html +9 -0
- package/demo/angular/src/app/app.component.ts +10 -0
- package/demo/angular/src/app/app.module.ts +38 -0
- package/demo/angular/src/app/components/assets/assets.component.css +0 -0
- package/demo/angular/src/app/components/assets/assets.component.html +29 -0
- package/demo/angular/src/app/components/assets/assets.component.ts +107 -0
- package/demo/angular/src/app/components/auth/auth.component.css +0 -0
- package/demo/angular/src/app/components/auth/auth.component.html +27 -0
- package/demo/angular/src/app/components/auth/auth.component.ts +33 -0
- package/demo/angular/src/app/components/caller/caller.component.css +0 -0
- package/demo/angular/src/app/components/caller/caller.component.html +22 -0
- package/demo/angular/src/app/components/caller/caller.component.ts +61 -0
- package/demo/angular/src/app/components/command/command.component.css +0 -0
- package/demo/angular/src/app/components/command/command.component.html +22 -0
- package/demo/angular/src/app/components/command/command.component.ts +60 -0
- package/demo/angular/src/app/components/integrations/integrations.component.ts +43 -0
- package/demo/angular/src/app/components/robots/robots.component.css +0 -0
- package/demo/angular/src/app/components/robots/robots.component.html +13 -0
- package/demo/angular/src/app/components/robots/robots.component.ts +26 -0
- package/demo/angular/src/app/components/sdk/sdk.component.css +0 -0
- package/demo/angular/src/app/components/sdk/sdk.component.html +43 -0
- package/demo/angular/src/app/components/sdk/sdk.component.ts +50 -0
- package/demo/angular/src/app/components/subscription/subscription.component.css +0 -0
- package/demo/angular/src/app/components/subscription/subscription.component.html +6 -0
- package/demo/angular/src/app/components/subscription/subscription.component.ts +40 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.css +0 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.html +19 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.ts +61 -0
- package/demo/angular/src/app/components/token/token.component.css +0 -0
- package/demo/angular/src/app/components/token/token.component.html +10 -0
- package/demo/angular/src/app/components/token/token.component.ts +18 -0
- package/demo/angular/src/app/components/video/p2pvideo/index.ts +646 -0
- package/demo/angular/src/app/components/video/video-source.ts +315 -0
- package/demo/angular/src/app/components/video/video.component.css +6 -0
- package/demo/angular/src/app/components/video/video.component.html +54 -0
- package/demo/angular/src/app/components/video/video.component.ts +151 -0
- package/demo/angular/src/app/services/sdk.service.ts +193 -0
- package/demo/angular/src/assets/.gitkeep +0 -0
- package/demo/angular/src/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/angular/src/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/angular/src/assets/logo.svg +16 -0
- package/demo/angular/src/environments/environment.prod.ts +3 -0
- package/demo/angular/src/environments/environment.ts +16 -0
- package/demo/angular/src/favicon.ico +0 -0
- package/demo/angular/src/index.html +15 -0
- package/demo/angular/src/main.ts +7 -0
- package/demo/angular/src/polyfills.ts +53 -0
- package/demo/angular/src/styles.css +198 -0
- package/demo/angular/tsconfig.app.json +15 -0
- package/demo/angular/tsconfig.json +39 -0
- package/demo/html/README.md +8 -0
- package/demo/html/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/html/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/html/assets/logo.svg +16 -0
- package/demo/html/favicon.ico +0 -0
- package/demo/html/index.html +416 -0
- package/demo/html/rocos-js-sdk.js +3 -0
- package/demo/html/rocos-js-sdk.js.LICENSE.txt +8 -0
- package/demo/html/rocos-js-sdk.js.map +1 -0
- package/demo/html/styles.css +190 -0
- package/demo/node/README.md +17 -0
- package/demo/node/index.js +134 -0
- package/demo/node/package.json +8 -0
- package/demo/react/.env +1 -0
- package/demo/react/.env.dist +1 -0
- package/demo/react/.eslintrc.json +46 -0
- package/demo/react/README.md +65 -0
- package/demo/react/package.json +60 -0
- package/demo/react/public/favicon.ico +0 -0
- package/demo/react/public/index.html +43 -0
- package/demo/react/public/logo192.png +0 -0
- package/demo/react/public/logo512.png +0 -0
- package/demo/react/public/manifest.json +25 -0
- package/demo/react/public/robots.txt +3 -0
- package/demo/react/src/App.css +190 -0
- package/demo/react/src/App.tsx +31 -0
- package/demo/react/src/actions/index.ts +8 -0
- package/demo/react/src/actions/sdkActions.ts +62 -0
- package/demo/react/src/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/react/src/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/react/src/assets/logo.svg +16 -0
- package/demo/react/src/components/AuthForm.tsx +76 -0
- package/demo/react/src/components/CallerBox.tsx +53 -0
- package/demo/react/src/components/CallerForm.tsx +98 -0
- package/demo/react/src/components/CommandBox.tsx +47 -0
- package/demo/react/src/components/CommandForm.tsx +98 -0
- package/demo/react/src/components/RobotsForm.tsx +51 -0
- package/demo/react/src/components/SubscriptionBox.tsx +55 -0
- package/demo/react/src/components/TelemetryForm.tsx +98 -0
- package/demo/react/src/components/TokenForm.tsx +39 -0
- package/demo/react/src/config.json +14 -0
- package/demo/react/src/controllers/RocosSDKController.ts +48 -0
- package/demo/react/src/helpers/deepEqual.ts +27 -0
- package/demo/react/src/hooks/useInput.ts +29 -0
- package/demo/react/src/index.css +11 -0
- package/demo/react/src/index.tsx +26 -0
- package/demo/react/src/react-app-env.d.ts +1 -0
- package/demo/react/src/reducers/sdkReducer.ts +133 -0
- package/demo/react/src/reportWebVitals.ts +15 -0
- package/demo/react/src/selectors/sdkSelector.ts +11 -0
- package/demo/react/src/setupTests.ts +5 -0
- package/demo/react/src/store.ts +14 -0
- package/demo/react/tsconfig.json +26 -0
- package/demo/sdk-sizer/dist/sdk-sizer/3rdpartylicenses.txt +975 -0
- package/demo/sdk-sizer/dist/sdk-sizer/favicon.ico +0 -0
- package/demo/sdk-sizer/dist/sdk-sizer/index.html +12 -0
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js.map +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js.map +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js.map +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/stats.json +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css.map +1 -0
- package/grpc/file-accessor/filagree_grpc_pb.d.ts +41 -0
- package/grpc/file-accessor/filagree_grpc_pb.js +121 -0
- package/grpc/file-accessor/filagree_pb.d.ts +339 -0
- package/grpc/file-accessor/filagree_pb.js +2261 -0
- package/grpc/file-accessor/filagree_pb_service.d.ts +115 -0
- package/grpc/file-accessor/filagree_pb_service.js +257 -0
- package/grpc/rambo/rambo.v1_grpc_pb.d.ts +39 -0
- package/grpc/rambo/rambo.v1_grpc_pb.js +73 -0
- package/grpc/rambo/rambo.v1_pb.d.ts +365 -0
- package/grpc/rambo/rambo.v1_pb.js +2469 -0
- package/grpc/rambo/rambo.v1_pb_service.d.ts +76 -0
- package/grpc/rambo/rambo.v1_pb_service.js +138 -0
- package/grpc/rambo/uri.v1_grpc_pb.d.ts +1 -0
- package/grpc/rambo/uri.v1_grpc_pb.js +1 -0
- package/grpc/rambo/uri.v1_pb.d.ts +80 -0
- package/grpc/rambo/uri.v1_pb.js +563 -0
- package/grpc/rambo/uri.v1_pb_service.d.ts +3 -0
- package/grpc/rambo/uri.v1_pb_service.js +3 -0
- package/grpc/robot-control/conker_grpc_pb.d.ts +46 -0
- package/grpc/robot-control/conker_grpc_pb.js +143 -0
- package/grpc/robot-control/conker_pb.d.ts +168 -0
- package/grpc/robot-control/conker_pb.js +1287 -0
- package/grpc/robot-control/conker_pb_service.d.ts +126 -0
- package/grpc/robot-control/conker_pb_service.js +301 -0
- package/grpc/serviette/common.v1_grpc_pb.d.ts +1 -0
- package/grpc/serviette/common.v1_grpc_pb.js +1 -0
- package/grpc/serviette/common.v1_pb.d.ts +8 -0
- package/grpc/serviette/common.v1_pb.js +45 -0
- package/grpc/serviette/common.v1_pb_service.d.ts +3 -0
- package/grpc/serviette/common.v1_pb_service.js +3 -0
- package/grpc/serviette/serviette.v1_grpc_pb.d.ts +137 -0
- package/grpc/serviette/serviette.v1_grpc_pb.js +331 -0
- package/grpc/serviette/serviette.v1_pb.d.ts +884 -0
- package/grpc/serviette/serviette.v1_pb.js +6363 -0
- package/grpc/serviette/serviette.v1_pb_service.d.ts +278 -0
- package/grpc/serviette/serviette.v1_pb_service.js +699 -0
- package/grpc/serviette/uri.v1_grpc_pb.d.ts +1 -0
- package/grpc/serviette/uri.v1_grpc_pb.js +1 -0
- package/grpc/serviette/uri.v1_pb.d.ts +102 -0
- package/grpc/serviette/uri.v1_pb.js +741 -0
- package/grpc/serviette/uri.v1_pb_service.d.ts +3 -0
- package/grpc/serviette/uri.v1_pb_service.js +3 -0
- package/grpc/slowlane/slowlane_grpc_pb.d.ts +38 -0
- package/grpc/slowlane/slowlane_grpc_pb.js +132 -0
- package/grpc/slowlane/slowlane_pb.d.ts +373 -0
- package/grpc/slowlane/slowlane_pb.js +2908 -0
- package/grpc/slowlane/slowlane_pb_service.d.ts +112 -0
- package/grpc/slowlane/slowlane_pb_service.js +189 -0
- package/grpc/teletubby/teletubby_grpc_pb.d.ts +73 -0
- package/grpc/teletubby/teletubby_grpc_pb.js +231 -0
- package/grpc/teletubby/teletubby_pb.d.ts +647 -0
- package/grpc/teletubby/teletubby_pb.js +4786 -0
- package/grpc/teletubby/teletubby_pb_service.d.ts +193 -0
- package/grpc/teletubby/teletubby_pb_service.js +436 -0
- package/grpc/video/pigeon_grpc_pb.d.ts +59 -0
- package/grpc/video/pigeon_grpc_pb.js +180 -0
- package/grpc/video/pigeon_pb.d.ts +237 -0
- package/grpc/video/pigeon_pb.js +1775 -0
- package/grpc/video/pigeon_pb_service.d.ts +152 -0
- package/grpc/video/pigeon_pb_service.js +292 -0
- package/helpers/arrayRemove.js +6 -2
- package/helpers/arrayUnique.js +6 -2
- package/helpers/average.js +7 -2
- package/helpers/cleanObject.js +19 -17
- package/helpers/enviroment.js +11 -4
- package/helpers/flattenCallsignsLookup.d.ts +1 -1
- package/helpers/flattenCallsignsLookup.js +5 -1
- package/helpers/flattenObject.js +5 -1
- package/helpers/formatServiceUrl.js +5 -1
- package/helpers/generateUUID.js +7 -3
- package/helpers/getSubscriptionsDifference.d.ts +3 -3
- package/helpers/getSubscriptionsDifference.js +10 -6
- package/helpers/getUniqueConfigKey.js +6 -1
- package/helpers/getUniqueId.js +7 -3
- package/helpers/getUnixTimeMs.js +5 -1
- package/helpers/index.d.ts +1 -1
- package/helpers/index.js +15 -3
- package/helpers/nanosecondToMillisecond.d.ts +1 -1
- package/helpers/nanosecondToMillisecond.js +6 -5
- package/helpers/randomString.js +5 -1
- package/helpers/standardDeviation.js +8 -4
- package/helpers/stringToUint8Array.js +7 -3
- package/helpers/uint8ArrayToString.js +8 -3
- package/index.js +19 -7
- package/logger/RocosLogger.js +44 -18
- package/models/ExportDataQuery.js +5 -1
- package/models/ExternalProject.js +5 -1
- package/models/IBaseService.d.ts +0 -1
- package/models/IBaseService.js +2 -1
- package/models/IConfigGroup.js +2 -1
- package/models/IDebugLevel.d.ts +1 -1
- package/models/IDebugLevel.js +2 -1
- package/models/IExportDataQuery.js +2 -1
- package/models/IFunctionConfig.js +2 -1
- package/models/IInvitation.d.ts +1 -1
- package/models/IInvitation.js +2 -1
- package/models/IInvitationExists.js +2 -1
- package/models/IOperation.js +2 -1
- package/models/IPersonalAccessToken.js +2 -1
- package/models/IProject.js +2 -1
- package/models/IProjectApplication.js +2 -1
- package/models/IRobot.d.ts +0 -1
- package/models/IRobot.js +2 -1
- package/models/IRobotConfig.js +2 -1
- package/models/IRobotPlugin.js +2 -1
- package/models/IRobotTemplate.js +2 -1
- package/models/IRocosSDKConfig.d.ts +9 -3
- package/models/IRocosSDKConfig.js +2 -1
- package/models/ISignupParams.d.ts +8 -0
- package/models/ISignupParams.js +2 -0
- package/models/ISource.js +2 -1
- package/models/IStream.js +2 -1
- package/models/IStreamConfig.js +2 -1
- package/models/IStreamOptions.js +2 -1
- package/models/IStreamSource.js +2 -1
- package/models/ISubscriberStatus.js +2 -1
- package/models/ITelemetryStreamConfig.js +2 -1
- package/models/IToken.d.ts +3 -7
- package/models/IToken.js +2 -1
- package/models/IWidget.js +2 -1
- package/models/IWidgetLineGroup.js +2 -1
- package/models/ResponseLevelEnum.d.ts +0 -4
- package/models/ResponseLevelEnum.js +5 -6
- package/models/Robot.d.ts +0 -1
- package/models/Robot.js +5 -1
- package/models/RobotConfig.js +5 -1
- package/models/RobotPlugin.js +5 -1
- package/models/RobotTemplate.js +14 -9
- package/models/RocosError.js +6 -2
- package/models/ServiceEnum.js +5 -2
- package/models/Stream.js +8 -4
- package/models/StreamOptions.js +5 -1
- package/models/StreamSource.js +7 -3
- package/models/SubscriberStatusEnum.js +5 -2
- package/models/Token.d.ts +4 -36
- package/models/Token.js +11 -74
- package/models/Widget.js +8 -4
- package/models/WidgetLineGroup.js +5 -1
- package/models/asset-storage/AssetModelItem.js +2 -1
- package/models/caller/IRocosCallerMessageChunk.d.ts +2 -3
- package/models/caller/IRocosCallerMessageChunk.js +2 -1
- package/models/caller/IRocosCallerMessageChunks.d.ts +3 -2
- package/models/caller/IRocosCallerMessageChunks.js +2 -1
- package/models/caller/IRocosCallerMessageHeartbeat.d.ts +2 -3
- package/models/caller/IRocosCallerMessageHeartbeat.js +2 -1
- package/models/caller/IRocosCallerMessageResponse.d.ts +2 -3
- package/models/caller/IRocosCallerMessageResponse.js +2 -1
- package/models/caller/IRocosCallerMessageResponseAck.d.ts +2 -16
- package/models/caller/IRocosCallerMessageResponseAck.js +2 -13
- package/models/caller/IRocosCallerMessageResponseResult.d.ts +2 -15
- package/models/caller/IRocosCallerMessageResponseResult.js +2 -12
- package/models/caller/IRocosCallerMessageResponseUid.d.ts +2 -10
- package/models/caller/IRocosCallerMessageResponseUid.js +2 -7
- package/models/caller/IRocosCallerMessageResponses.d.ts +3 -2
- package/models/caller/IRocosCallerMessageResponses.js +2 -1
- package/models/caller/RocosCallerResultStatus.d.ts +1 -11
- package/models/caller/RocosCallerResultStatus.js +5 -12
- package/models/callsigns/CallsignsEnums.d.ts +3 -3
- package/models/callsigns/CallsignsEnums.js +14 -11
- package/models/callsigns/CallsignsLookup.js +15 -10
- package/models/callsigns/CallsignsQuery.js +5 -1
- package/models/callsigns/CallsignsQueryPredicate.js +5 -1
- package/models/command/IRocosCommandMessageHeartbeat.d.ts +2 -1
- package/models/command/IRocosCommandMessageHeartbeat.js +2 -1
- package/models/command/IRocosCommandMessageResponse.d.ts +2 -55
- package/models/command/IRocosCommandMessageResponse.js +2 -29
- package/models/command/RocosCommandResultStatus.d.ts +1 -11
- package/models/command/RocosCommandResultStatus.js +5 -12
- package/models/file/FileEnums.d.ts +4 -4
- package/models/file/FileEnums.js +12 -9
- package/models/index.d.ts +31 -5
- package/models/index.js +113 -75
- package/models/integrations/Overlay.js +2 -1
- package/models/integrations/Plan.js +2 -1
- package/models/maps/Map.d.ts +0 -1
- package/models/maps/Map.js +2 -1
- package/models/message/IRocosCallerMessage.js +2 -1
- package/models/message/IRocosChangeMessage.js +2 -1
- package/models/message/IRocosCommandMessage.js +2 -1
- package/models/message/IRocosControlMessage.js +2 -1
- package/models/message/IRocosOpResultMessage.d.ts +2 -2
- package/models/message/IRocosOpResultMessage.js +2 -1
- package/models/message/IRocosSearchMessage.js +2 -1
- package/models/message/IRocosSearchRowMessage.js +2 -1
- package/models/message/IRocosSearchStatusMessage.js +2 -1
- package/models/message/IRocosTelemetryMessage.d.ts +7 -12
- package/models/message/IRocosTelemetryMessage.js +2 -1
- package/models/message/IStreamStatusMessage.js +2 -1
- package/models/message/RocosCallerMessage.d.ts +4 -2
- package/models/message/RocosCallerMessage.js +15 -24
- package/models/message/RocosCommandMessage.d.ts +3 -2
- package/models/message/RocosCommandMessage.js +8 -5
- package/models/message/RocosControlMessage.d.ts +1 -1
- package/models/message/RocosControlMessage.js +10 -6
- package/models/message/RocosOpResultMessage.d.ts +2 -3
- package/models/message/RocosOpResultMessage.js +10 -6
- package/models/message/RocosSearchMessage.d.ts +1 -1
- package/models/message/RocosSearchMessage.js +9 -5
- package/models/message/RocosSearchRowMessage.d.ts +1 -1
- package/models/message/RocosSearchRowMessage.js +12 -8
- package/models/message/RocosTelemetryMessage.d.ts +23 -9
- package/models/message/RocosTelemetryMessage.js +93 -51
- package/models/params/ICallerParams.d.ts +1 -2
- package/models/params/ICallerParams.js +2 -1
- package/models/params/ICommandParams.js +2 -1
- package/models/params/IControlParams.d.ts +1 -1
- package/models/params/IControlParams.js +2 -1
- package/models/params/IFileAccessorParams.js +2 -1
- package/models/params/ISearchParams.js +2 -1
- package/models/params/ITelemetryParams.d.ts +1 -1
- package/models/params/ITelemetryParams.js +2 -1
- package/models/params/IWebRTCSignallingParams.js +2 -1
- package/models/projects/ProjectUser.js +2 -1
- package/models/schedule/IScheduleAction.d.ts +1 -1
- package/models/schedule/IScheduleAction.js +5 -2
- package/models/schedule/IScheduleInfo.js +2 -1
- package/models/schedule/IScheduleJob.js +2 -1
- package/models/search/SearchQueryFilter.js +5 -1
- package/models/search/SearchStreamQuery.js +5 -1
- package/models/stream/IBaseStream.js +2 -1
- package/models/stream/ICallerStream.js +2 -1
- package/models/stream/ICommandStream.js +2 -1
- package/models/stream/IControlStream.js +2 -1
- package/models/stream/IFileAccessorStream.d.ts +2 -1
- package/models/stream/IFileAccessorStream.js +2 -1
- package/models/stream/ISearchStream.js +2 -1
- package/models/stream/ITelemetryStream.js +2 -1
- package/models/stream/IWebRTCSignallingStream.d.ts +16 -51
- package/models/stream/IWebRTCSignallingStream.js +7 -1
- package/models/types.d.ts +5 -5
- package/models/types.js +2 -1
- package/node/RocosSDKNode.js +80 -75
- package/node/index.js +19 -7
- package/package.json +9 -6
- package/services/AssetStorageService.d.ts +0 -7
- package/services/AssetStorageService.js +24 -29
- package/services/AuthService.d.ts +27 -59
- package/services/AuthService.js +86 -167
- package/services/BaseServiceAbstract.d.ts +13 -11
- package/services/BaseServiceAbstract.js +19 -17
- package/services/CallerService.d.ts +17 -5
- package/services/CallerService.js +65 -22
- package/services/CallerServiceNode.js +8 -4
- package/services/CommandService.d.ts +17 -5
- package/services/CommandService.js +62 -19
- package/services/CommandServiceNode.js +8 -4
- package/services/ConfigGroupService.js +21 -17
- package/services/ControlService.d.ts +17 -5
- package/services/ControlService.js +65 -22
- package/services/ControlServiceNode.js +8 -4
- package/services/DashboardService.js +24 -20
- package/services/EventService.js +17 -13
- package/services/FileAccessorService.d.ts +18 -4
- package/services/FileAccessorService.js +62 -14
- package/services/FileAccessorServiceNode.js +8 -4
- package/services/FunctionService.js +21 -17
- package/services/IntegrationService.js +19 -14
- package/services/MapService.d.ts +23 -36
- package/services/MapService.js +40 -70
- package/services/PlatformTimeService.js +12 -8
- package/services/ProfileService.js +40 -36
- package/services/ProjectService.js +27 -23
- package/services/RobotService.d.ts +6 -2
- package/services/RobotService.js +55 -48
- package/services/ScheduleService.js +14 -10
- package/services/SearchService.d.ts +17 -4
- package/services/SearchService.js +59 -24
- package/services/SearchServiceNode.js +8 -4
- package/services/SpotProvisioningService.d.ts +1 -1
- package/services/SpotProvisioningService.js +16 -16
- package/services/SpotProvisioningServiceNode.d.ts +1 -1
- package/services/SpotProvisioningServiceNode.js +16 -16
- package/services/StreamService.js +30 -26
- package/services/TelemetryService.d.ts +17 -14
- package/services/TelemetryService.js +93 -91
- package/services/TelemetryServiceNode.js +8 -4
- package/services/TimeSyncerService.js +13 -9
- package/services/UserService.js +41 -37
- package/services/WebRTCSignallingService.d.ts +4 -4
- package/services/WebRTCSignallingService.js +27 -24
- package/services/WorkflowService.js +20 -16
- package/services/index.js +38 -26
- package/store/RocosStore.js +15 -9
- package/utils/axisangle.d.ts +18 -0
- package/utils/axisangle.js +48 -0
- package/utils/eulerangles.d.ts +22 -0
- package/utils/eulerangles.js +133 -0
- package/utils/helperfunctions.d.ts +5 -0
- package/utils/helperfunctions.js +50 -0
- package/utils/localtransform.d.ts +17 -0
- package/utils/localtransform.js +50 -0
- package/utils/localtransformtree.d.ts +17 -0
- package/utils/localtransformtree.js +88 -0
- package/utils/misc.d.ts +17 -0
- package/utils/misc.js +23 -0
- package/utils/positionvector.d.ts +13 -0
- package/utils/positionvector.js +79 -0
- package/utils/quaternion.d.ts +20 -0
- package/utils/quaternion.js +62 -0
- package/utils/rotationmatrix.d.ts +23 -0
- package/utils/rotationmatrix.js +262 -0
- package/utils/transformationmatrix.d.ts +12 -0
- package/utils/transformationmatrix.js +123 -0
- package/utils/vector3.d.ts +11 -0
- package/utils/vector3.js +61 -0
- package/constants/auth.d.ts +0 -2
- package/constants/auth.js +0 -2
- package/grpc/conker_pb.client.d.ts +0 -78
- package/grpc/conker_pb.client.js +0 -55
- package/grpc/conker_pb.d.ts +0 -141
- package/grpc/conker_pb.grpc-client.d.ts +0 -81
- package/grpc/conker_pb.grpc-client.js +0 -58
- package/grpc/conker_pb.js +0 -104
- package/grpc/filagree_pb.client.d.ts +0 -68
- package/grpc/filagree_pb.client.js +0 -48
- package/grpc/filagree_pb.d.ts +0 -404
- package/grpc/filagree_pb.grpc-client.d.ts +0 -69
- package/grpc/filagree_pb.grpc-client.js +0 -51
- package/grpc/filagree_pb.js +0 -329
- package/grpc/google/protobuf/descriptor_pb.d.ts +0 -1798
- package/grpc/google/protobuf/descriptor_pb.js +0 -2378
- package/grpc/google/protobuf/empty_pb.d.ts +0 -23
- package/grpc/google/protobuf/empty_pb.js +0 -47
- package/grpc/pigeon_pb.client.d.ts +0 -96
- package/grpc/pigeon_pb.client.js +0 -72
- package/grpc/pigeon_pb.d.ts +0 -207
- package/grpc/pigeon_pb.grpc-client.d.ts +0 -98
- package/grpc/pigeon_pb.grpc-client.js +0 -68
- package/grpc/pigeon_pb.js +0 -144
- package/grpc/rambo.uri.v1_pb.d.ts +0 -73
- package/grpc/rambo.uri.v1_pb.js +0 -48
- package/grpc/rambo.v1_pb.client.d.ts +0 -66
- package/grpc/rambo.v1_pb.client.js +0 -48
- package/grpc/rambo.v1_pb.d.ts +0 -392
- package/grpc/rambo.v1_pb.grpc-client.d.ts +0 -56
- package/grpc/rambo.v1_pb.grpc-client.js +0 -44
- package/grpc/rambo.v1_pb.js +0 -272
- package/grpc/serviette.uri.v1_pb.d.ts +0 -89
- package/grpc/serviette.uri.v1_pb.js +0 -62
- package/grpc/serviette.v1_pb.client.d.ts +0 -225
- package/grpc/serviette.v1_pb.client.js +0 -174
- package/grpc/serviette.v1_pb.d.ts +0 -827
- package/grpc/serviette.v1_pb.grpc-client.d.ts +0 -215
- package/grpc/serviette.v1_pb.grpc-client.js +0 -162
- package/grpc/serviette.v1_pb.js +0 -553
- package/grpc/slowlane_pb.client.d.ts +0 -61
- package/grpc/slowlane_pb.client.js +0 -41
- package/grpc/slowlane_pb.d.ts +0 -303
- package/grpc/slowlane_pb.grpc-client.d.ts +0 -64
- package/grpc/slowlane_pb.grpc-client.js +0 -44
- package/grpc/slowlane_pb.js +0 -185
- package/grpc/teletubby_pb.client.d.ts +0 -145
- package/grpc/teletubby_pb.client.js +0 -104
- package/grpc/teletubby_pb.d.ts +0 -634
- package/grpc/teletubby_pb.grpc-client.d.ts +0 -152
- package/grpc/teletubby_pb.grpc-client.js +0 -100
- package/grpc/teletubby_pb.js +0 -1264
- package/helpers/cleanObject.spec.d.ts +0 -1
- package/helpers/cleanObject.spec.js +0 -53
- package/helpers/flattenObject.spec.d.ts +0 -1
- package/helpers/flattenObject.spec.js +0 -29
- package/helpers/flattenOneOf.d.ts +0 -67
- package/helpers/flattenOneOf.js +0 -29
- package/helpers/flattenOneOf.spec.d.ts +0 -1
- package/helpers/flattenOneOf.spec.js +0 -157
- package/helpers/formatServiceUrl.spec.d.ts +0 -1
- package/helpers/formatServiceUrl.spec.js +0 -16
- package/helpers/standardDeviation.spec.d.ts +0 -1
- package/helpers/standardDeviation.spec.js +0 -11
- package/models/CallsignStatus.d.ts +0 -6
- package/models/CallsignStatus.js +0 -7
- package/models/IRobotSettings.d.ts +0 -28
- package/models/IRobotSettings.js +0 -1
- package/models/Token.spec.d.ts +0 -1
- package/models/Token.spec.js +0 -108
- package/models/caller/IRocosCallerMessageResponseReturn.d.ts +0 -8
- package/models/caller/IRocosCallerMessageResponseReturn.js +0 -1
- package/models/caller/RocosResponseLevel.d.ts +0 -6
- package/models/caller/RocosResponseLevel.js +0 -7
- package/models/caller/index.d.ts +0 -10
- package/models/caller/index.js +0 -10
- package/models/command/index.d.ts +0 -4
- package/models/command/index.js +0 -4
- package/models/message/index.d.ts +0 -17
- package/models/message/index.js +0 -17
- package/services/AuthService.spec.d.ts +0 -1
- package/services/AuthService.spec.js +0 -163
- package/services/BaseStreamService.d.ts +0 -18
- package/services/BaseStreamService.js +0 -47
- package/services/PlatformTimeService.spec.d.ts +0 -1
- package/services/PlatformTimeService.spec.js +0 -180
- package/services/TelemetryService.spec.d.ts +0 -1
- package/services/TelemetryService.spec.js +0 -37
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RocosError } from '../models/RocosError';
|
|
2
2
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
|
+
import { IBaseService } from '../models/IBaseService';
|
|
4
|
+
import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
|
|
5
|
+
import { ISignupParams } from '../models/ISignupParams';
|
|
6
|
+
import { Token } from '../models/Token';
|
|
3
7
|
export declare class AuthService extends BaseServiceAbstract implements IBaseService {
|
|
4
8
|
protected config: IRocosSDKConfig;
|
|
5
9
|
private token?;
|
|
6
|
-
private tokenRefreshTimeoutId?;
|
|
7
10
|
constructor(config: IRocosSDKConfig);
|
|
8
11
|
getStatus(): boolean;
|
|
9
|
-
teardown(): void;
|
|
10
12
|
protected getError(e: RocosError): RocosError;
|
|
11
13
|
/**
|
|
12
14
|
* Set the Auth token
|
|
13
15
|
* @param value - Token value
|
|
16
|
+
* @param expiresIn - Token expiry time
|
|
14
17
|
*/
|
|
15
|
-
setToken(value: string
|
|
18
|
+
setToken(value: string, expiresIn: number): void;
|
|
16
19
|
/**
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
setToken(value: string | Token, expiresIn: number): void;
|
|
20
|
-
/**
|
|
21
|
-
* Clear token
|
|
20
|
+
* Cleat auto token
|
|
22
21
|
*/
|
|
23
22
|
clearToken(): void;
|
|
24
23
|
/**
|
|
@@ -26,68 +25,37 @@ export declare class AuthService extends BaseServiceAbstract implements IBaseSer
|
|
|
26
25
|
*/
|
|
27
26
|
getAppToken(): Promise<Token>;
|
|
28
27
|
/**
|
|
29
|
-
* Get
|
|
30
|
-
* @desc This only works for user auth tokens, not appId auth tokens
|
|
28
|
+
* Get the authentication token for logged in username and password
|
|
31
29
|
*/
|
|
32
|
-
|
|
30
|
+
getUserToken(): Promise<Token>;
|
|
33
31
|
/**
|
|
34
|
-
* Get new auth token for a user
|
|
35
|
-
*
|
|
36
|
-
* Uses the OTP flow to exchange an external token for a user token.
|
|
37
|
-
*
|
|
32
|
+
* Get new auth token for a user
|
|
38
33
|
* @desc This only works for user auth tokens, not appId auth tokens
|
|
39
34
|
*/
|
|
40
|
-
|
|
35
|
+
getNewUserToken(): Promise<Token>;
|
|
41
36
|
/**
|
|
42
37
|
* Get the authentication token
|
|
43
|
-
*
|
|
44
|
-
* This will return the current token if it is not expired, otherwise it will get a new token based on your config.
|
|
45
38
|
*/
|
|
46
39
|
getToken(): Promise<Token>;
|
|
47
40
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* This only works for user auth tokens, not appId auth tokens.
|
|
41
|
+
* Login with email and password.
|
|
51
42
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* @
|
|
55
|
-
* @param
|
|
56
|
-
*/
|
|
57
|
-
refreshToken(token?: Token): Promise<Token>;
|
|
58
|
-
/** Refresh the token if it is expired or will expire in the next `minutes` minutes
|
|
59
|
-
*
|
|
60
|
-
* This only works for user auth tokens, not appId auth tokens.
|
|
61
|
-
*
|
|
62
|
-
* If you want to refresh the token regardless of the expiry time, use `refreshToken`.
|
|
63
|
-
*
|
|
64
|
-
* @param minutes the number of minutes before the token expires to refresh the token
|
|
65
|
-
* @see refreshToken
|
|
43
|
+
* @deprecated SDK can only be configured with appId and appKey or an existing token
|
|
44
|
+
* @param email - Email address
|
|
45
|
+
* @param password - Password
|
|
46
|
+
* @param invitationCode - Invitation Code (Optional)
|
|
66
47
|
*/
|
|
67
|
-
|
|
68
|
-
/** Start a 5-minute loop to check if the token needs to be refreshed
|
|
69
|
-
*
|
|
70
|
-
* This is useful when you are using GRPC services (i.e. telemetry) which does not automatically refresh the token.
|
|
71
|
-
* It is not required when using REST services as the token is refreshed automatically.
|
|
72
|
-
*
|
|
73
|
-
* The loop will stop when `stopTokenRefreshChecker` is called.
|
|
74
|
-
*
|
|
75
|
-
* @see stopTokenRefreshChecker
|
|
76
|
-
*/
|
|
77
|
-
startTokenRefreshChecker(): void;
|
|
48
|
+
login(email: string, password: string, invitationCode?: string): Promise<any>;
|
|
78
49
|
/**
|
|
79
|
-
*
|
|
80
|
-
* @
|
|
50
|
+
* Sign up
|
|
51
|
+
* @deprecated SDK can only be configured with appId and appKey or an existing token
|
|
52
|
+
* @param params = Signup payload {@link ISignupParams}
|
|
81
53
|
*/
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
* @
|
|
86
|
-
* @
|
|
87
|
-
* @returns true if the token refresh checker is running
|
|
54
|
+
signup(params: ISignupParams): Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* Reset users password.
|
|
57
|
+
* @deprecated SDK can only be configured with appId and appKey or an existing token
|
|
58
|
+
* @param model - Reset payload
|
|
88
59
|
*/
|
|
89
|
-
|
|
90
|
-
/** Checks if the token is valid for use with the API */
|
|
91
|
-
isTokenValid(token: Token): boolean;
|
|
92
|
-
private isTokenIssuedByApp;
|
|
60
|
+
resetPassword(model: any): Promise<any>;
|
|
93
61
|
}
|
package/services/AuthService.js
CHANGED
|
@@ -1,48 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthService = void 0;
|
|
4
|
+
const api_1 = require("../constants/api");
|
|
5
|
+
const RocosError_1 = require("../models/RocosError");
|
|
6
|
+
const BaseServiceAbstract_1 = require("./BaseServiceAbstract");
|
|
7
|
+
const RocosLogger_1 = require("../logger/RocosLogger");
|
|
8
|
+
const RocosStore_1 = require("../store/RocosStore");
|
|
9
|
+
const Token_1 = require("../models/Token");
|
|
10
|
+
const formatServiceUrl_1 = require("../helpers/formatServiceUrl");
|
|
11
|
+
class AuthService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
9
12
|
constructor(config) {
|
|
10
13
|
super(config);
|
|
11
14
|
this.config = config;
|
|
12
15
|
this.config = config;
|
|
13
|
-
this.logger = RocosLogger.getInstance(`AuthService(${this.config.url})`);
|
|
14
|
-
if (this.config.token) {
|
|
15
|
-
this.setToken(this.config.token);
|
|
16
|
-
}
|
|
16
|
+
this.logger = RocosLogger_1.RocosLogger.getInstance(`AuthService(${this.config.url})`);
|
|
17
17
|
}
|
|
18
18
|
getStatus() {
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
21
|
-
teardown() {
|
|
22
|
-
if (this.isTokenRefreshCheckerRunning()) {
|
|
23
|
-
this.logger.debug('Stopping token refresh checker');
|
|
24
|
-
this.stopTokenRefreshChecker();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
21
|
getError(e) {
|
|
28
|
-
return new RocosError(e, errorCodes.AUTH_ERROR, e
|
|
22
|
+
return new RocosError_1.RocosError(e, RocosError_1.errorCodes.AUTH_ERROR, e === null || e === void 0 ? void 0 : e.statusCode);
|
|
29
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Set the Auth token
|
|
26
|
+
* @param value - Token value
|
|
27
|
+
* @param expiresIn - Token expiry time
|
|
28
|
+
*/
|
|
30
29
|
setToken(value, expiresIn) {
|
|
31
|
-
|
|
32
|
-
this.logger.warn('setToken(value, expiresIn) is deprecated. Use setToken(value) instead');
|
|
33
|
-
}
|
|
34
|
-
if (typeof value === 'string') {
|
|
35
|
-
this.token = new Token(value);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.token = value;
|
|
39
|
-
}
|
|
30
|
+
this.token = new Token_1.Token({ value, expiresIn });
|
|
40
31
|
this.config.token = this.token.value;
|
|
41
32
|
// output a message for token change
|
|
42
|
-
RocosStore.getChangeSubject().next({ type: 'token', url: this.config.url, data: this.token.value });
|
|
33
|
+
RocosStore_1.RocosStore.getChangeSubject().next({ type: 'token', url: this.config.url, data: this.token.value });
|
|
43
34
|
}
|
|
44
35
|
/**
|
|
45
|
-
*
|
|
36
|
+
* Cleat auto token
|
|
46
37
|
*/
|
|
47
38
|
clearToken() {
|
|
48
39
|
this.token = undefined;
|
|
@@ -53,183 +44,111 @@ export class AuthService extends BaseServiceAbstract {
|
|
|
53
44
|
*/
|
|
54
45
|
async getAppToken() {
|
|
55
46
|
if (!('appId' in this.config) || !this.config.appId || !('appKey' in this.config) || !this.config.appKey) {
|
|
56
|
-
throw new RocosError('Can not get app token, missing appId and appKey', errorCodes.AUTH_ERROR);
|
|
47
|
+
throw new RocosError_1.RocosError('Can not get app token, missing appId and appKey', RocosError_1.errorCodes.AUTH_ERROR);
|
|
57
48
|
}
|
|
58
|
-
const res = await this.callPost(formatServiceUrl(API_APPLICATION_AUTH_URL, { url: this.config.url }, this.config.insecure), {
|
|
49
|
+
const res = await this.callPost(formatServiceUrl_1.formatServiceUrl(api_1.API_APPLICATION_AUTH_URL, { url: this.config.url }, this.config.insecure), {
|
|
59
50
|
applicationId: this.config.appId,
|
|
60
51
|
secret: this.config.appKey,
|
|
61
52
|
}, 'Failed to get users auth token.', { public: true });
|
|
62
|
-
return new Token(res.token);
|
|
53
|
+
return new Token_1.Token({ value: res.token, expiresIn: res.expiresIn });
|
|
63
54
|
}
|
|
64
55
|
/**
|
|
65
|
-
* Get
|
|
66
|
-
* @desc This only works for user auth tokens, not appId auth tokens
|
|
56
|
+
* Get the authentication token for logged in username and password
|
|
67
57
|
*/
|
|
68
|
-
async
|
|
69
|
-
if (!('
|
|
70
|
-
throw new RocosError('Can not get
|
|
58
|
+
async getUserToken() {
|
|
59
|
+
if (!('email' in this.config) || !this.config.email || !('password' in this.config) || !this.config.password) {
|
|
60
|
+
throw new RocosError_1.RocosError('Can not get user token, missing email and password', RocosError_1.errorCodes.AUTH_ERROR);
|
|
71
61
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
62
|
+
try {
|
|
63
|
+
// TODO: there is no token expiry returned on user token
|
|
64
|
+
const { token, expiresIn } = await this.login(this.config.email, this.config.password, this.config.invitationCode);
|
|
65
|
+
return new Token_1.Token({ value: token, expiresIn });
|
|
75
66
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
catch (e) {
|
|
68
|
+
const message = 'Failed to get users auth token.';
|
|
69
|
+
this.logger.error(message, e);
|
|
70
|
+
e.message = message;
|
|
71
|
+
throw new RocosError_1.RocosError(e, RocosError_1.errorCodes.AUTH_ERROR);
|
|
79
72
|
}
|
|
80
|
-
return this.refreshToken(token);
|
|
81
73
|
}
|
|
82
74
|
/**
|
|
83
|
-
* Get new auth token for a user
|
|
84
|
-
*
|
|
85
|
-
* Uses the OTP flow to exchange an external token for a user token.
|
|
86
|
-
*
|
|
75
|
+
* Get new auth token for a user
|
|
87
76
|
* @desc This only works for user auth tokens, not appId auth tokens
|
|
88
77
|
*/
|
|
89
|
-
async
|
|
90
|
-
if (!('token' in this.config)
|
|
91
|
-
throw new RocosError('Can not get new token, missing token', errorCodes.AUTH_ERROR);
|
|
78
|
+
async getNewUserToken() {
|
|
79
|
+
if (!('token' in this.config)) {
|
|
80
|
+
throw new RocosError_1.RocosError('Can not get new app token, missing token', RocosError_1.errorCodes.AUTH_ERROR);
|
|
92
81
|
}
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
const { token, refreshToken } = await this.callPost(formatServiceUrl(API_OTP_AUTH_URL, { url: this.config.url }, this.config.insecure), { otp }, 'Failed to get users auth token.', { public: true });
|
|
96
|
-
return new Token(token, refreshToken);
|
|
82
|
+
const res = await this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_USER_TOKEN_URL, { url: this.config.url }, this.config.insecure), 'Failed to get users auth token.', undefined, { public: true, headers: { Authorization: `Bearer ${this.config.token}` } });
|
|
83
|
+
return new Token_1.Token({ value: res.token });
|
|
97
84
|
}
|
|
98
85
|
/**
|
|
99
86
|
* Get the authentication token
|
|
100
|
-
*
|
|
101
|
-
* This will return the current token if it is not expired, otherwise it will get a new token based on your config.
|
|
102
87
|
*/
|
|
103
88
|
async getToken() {
|
|
104
|
-
if (this.token && this.
|
|
105
|
-
if (this.token.isExpiredIn(15, 'minutes')) {
|
|
106
|
-
this.logger.info('Token expires within 15 minutes. Refreshing.');
|
|
107
|
-
const newToken = await this.refreshToken();
|
|
108
|
-
this.setToken(newToken);
|
|
109
|
-
return newToken;
|
|
110
|
-
}
|
|
89
|
+
if (this.token && !this.token.isExpired()) {
|
|
111
90
|
return this.token;
|
|
112
91
|
}
|
|
113
|
-
let token;
|
|
114
92
|
try {
|
|
115
93
|
if ('appId' in this.config && 'appKey' in this.config) {
|
|
116
|
-
token = await this.getAppToken();
|
|
94
|
+
this.token = await this.getAppToken();
|
|
95
|
+
}
|
|
96
|
+
else if ('email' in this.config && 'password' in this.config) {
|
|
97
|
+
this.token = await this.getUserToken();
|
|
117
98
|
}
|
|
118
99
|
else if ('token' in this.config) {
|
|
119
|
-
token = await this.getNewUserToken();
|
|
100
|
+
this.token = await this.getNewUserToken();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throw new Error('Config invalid');
|
|
120
104
|
}
|
|
105
|
+
this.config.token = this.token.value;
|
|
106
|
+
// output a message for token change
|
|
107
|
+
RocosStore_1.RocosStore.getChangeSubject().next({ type: 'token', url: this.config.url, data: this.token.value });
|
|
108
|
+
return this.token;
|
|
121
109
|
}
|
|
122
110
|
catch (e) {
|
|
123
111
|
const message = 'Failed to get auth token.';
|
|
124
112
|
this.logger.error(message, e);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
throw new RocosError(e, errorCodes.AUTH_ERROR);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
throw new RocosError(message, errorCodes.AUTH_ERROR);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (!token) {
|
|
134
|
-
const message = 'Failed to get auth token. Config invalid.';
|
|
135
|
-
this.logger.error(message);
|
|
136
|
-
throw new RocosError(message, errorCodes.AUTH_ERROR);
|
|
113
|
+
e.message = message;
|
|
114
|
+
throw new RocosError_1.RocosError(e, RocosError_1.errorCodes.AUTH_ERROR);
|
|
137
115
|
}
|
|
138
|
-
this.setToken(token);
|
|
139
|
-
return token;
|
|
140
116
|
}
|
|
141
117
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
* This only works for user auth tokens, not appId auth tokens.
|
|
118
|
+
* Login with email and password.
|
|
145
119
|
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* @
|
|
149
|
-
* @param
|
|
120
|
+
* @deprecated SDK can only be configured with appId and appKey or an existing token
|
|
121
|
+
* @param email - Email address
|
|
122
|
+
* @param password - Password
|
|
123
|
+
* @param invitationCode - Invitation Code (Optional)
|
|
150
124
|
*/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
/** Refresh the token if it is expired or will expire in the next `minutes` minutes
|
|
160
|
-
*
|
|
161
|
-
* This only works for user auth tokens, not appId auth tokens.
|
|
162
|
-
*
|
|
163
|
-
* If you want to refresh the token regardless of the expiry time, use `refreshToken`.
|
|
164
|
-
*
|
|
165
|
-
* @param minutes the number of minutes before the token expires to refresh the token
|
|
166
|
-
* @see refreshToken
|
|
167
|
-
*/
|
|
168
|
-
async refreshTokenIfExpired(minutes) {
|
|
169
|
-
if (this.token?.isExpiredIn(minutes, 'minutes')) {
|
|
170
|
-
this.logger.info('Token expires in 15 minutes. Refreshing.');
|
|
171
|
-
const newToken = await this.refreshToken();
|
|
172
|
-
this.setToken(newToken);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/** Start a 5-minute loop to check if the token needs to be refreshed
|
|
176
|
-
*
|
|
177
|
-
* This is useful when you are using GRPC services (i.e. telemetry) which does not automatically refresh the token.
|
|
178
|
-
* It is not required when using REST services as the token is refreshed automatically.
|
|
179
|
-
*
|
|
180
|
-
* The loop will stop when `stopTokenRefreshChecker` is called.
|
|
181
|
-
*
|
|
182
|
-
* @see stopTokenRefreshChecker
|
|
183
|
-
*/
|
|
184
|
-
startTokenRefreshChecker() {
|
|
185
|
-
const maxInterval = 1000 * 60 * 10; // 10 minutes
|
|
186
|
-
const minInterval = 1000 * 60; // 1 minute
|
|
187
|
-
const threshold = 1000 * 60 * 15; // 15 minutes
|
|
188
|
-
if (this.isTokenRefreshCheckerRunning())
|
|
189
|
-
return;
|
|
190
|
-
if (!this.token)
|
|
191
|
-
throw new RocosError('No token to refresh', errorCodes.AUTH_ERROR);
|
|
192
|
-
if (!this.isTokenValid(this.token))
|
|
193
|
-
throw new RocosError('Token is not valid', errorCodes.AUTH_ERROR);
|
|
194
|
-
const loop = () => {
|
|
195
|
-
this.logger.debug('Checking scheduled token refresh');
|
|
196
|
-
this.refreshTokenIfExpired(15)
|
|
197
|
-
.catch((e) => {
|
|
198
|
-
this.logger.error('Failed to refresh token', e);
|
|
199
|
-
})
|
|
200
|
-
.finally(() => {
|
|
201
|
-
if (!this.token?.expires)
|
|
202
|
-
return;
|
|
203
|
-
// schedule next check
|
|
204
|
-
const timeTillThreshold = this.token.expires.getTime() - Date.now() - threshold;
|
|
205
|
-
const interval = Math.max(minInterval, Math.min(maxInterval, timeTillThreshold));
|
|
206
|
-
this.tokenRefreshTimeoutId = setTimeout(() => loop(), interval);
|
|
207
|
-
});
|
|
208
|
-
};
|
|
209
|
-
loop();
|
|
125
|
+
// TODO: map the response object
|
|
126
|
+
async login(email, password, invitationCode) {
|
|
127
|
+
return this.callPost(formatServiceUrl_1.formatServiceUrl(api_1.API_USER_AUTH_URL, { url: this.config.url }, this.config.insecure), {
|
|
128
|
+
email,
|
|
129
|
+
password,
|
|
130
|
+
invitationCode,
|
|
131
|
+
}, 'Failed to login user.', { public: true });
|
|
210
132
|
}
|
|
211
133
|
/**
|
|
212
|
-
*
|
|
213
|
-
* @
|
|
134
|
+
* Sign up
|
|
135
|
+
* @deprecated SDK can only be configured with appId and appKey or an existing token
|
|
136
|
+
* @param params = Signup payload {@link ISignupParams}
|
|
214
137
|
*/
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
this.
|
|
138
|
+
// TODO: map the response object
|
|
139
|
+
async signup(params) {
|
|
140
|
+
return this.callPost(formatServiceUrl_1.formatServiceUrl(api_1.API_USER_URL, { url: this.config.url }, this.config.insecure), params, 'Failed to sign up user.', { public: true });
|
|
218
141
|
}
|
|
219
|
-
/**
|
|
220
|
-
*
|
|
221
|
-
* @
|
|
222
|
-
* @
|
|
223
|
-
* @returns true if the token refresh checker is running
|
|
142
|
+
/**
|
|
143
|
+
* Reset users password.
|
|
144
|
+
* @deprecated SDK can only be configured with appId and appKey or an existing token
|
|
145
|
+
* @param model - Reset payload
|
|
224
146
|
*/
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
return !token.isExpired() && this.isTokenIssuedByApp(token);
|
|
231
|
-
}
|
|
232
|
-
isTokenIssuedByApp(token) {
|
|
233
|
-
return token.issuer === issuer;
|
|
147
|
+
// TODO: map the request model
|
|
148
|
+
// TODO: map the response object
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
150
|
+
async resetPassword(model) {
|
|
151
|
+
return this.callPost(formatServiceUrl_1.formatServiceUrl(api_1.API_USER_PASSWORD_RESET_URL, { url: this.config.url }, this.config.insecure), model, 'Failed to reset password.', { public: true });
|
|
234
152
|
}
|
|
235
153
|
}
|
|
154
|
+
exports.AuthService = AuthService;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { IRocosSDKConfig
|
|
1
|
+
import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
|
|
2
2
|
import { Logger } from 'loglevel';
|
|
3
|
-
|
|
4
|
-
type
|
|
3
|
+
import { RocosError } from '../models/RocosError';
|
|
4
|
+
declare type QueryParams = Record<string, string | number | boolean> | URLSearchParams;
|
|
5
|
+
declare type ResponseType = 'json' | 'blob' | 'stream' | 'text' | 'raw';
|
|
6
|
+
declare type Payload = unknown;
|
|
5
7
|
interface RequestConfig {
|
|
6
8
|
/**
|
|
7
9
|
* Additional headers to send with the request.
|
|
@@ -19,18 +21,18 @@ interface RequestConfig {
|
|
|
19
21
|
export declare abstract class BaseServiceAbstract {
|
|
20
22
|
protected config: IRocosSDKConfig;
|
|
21
23
|
protected logger: Logger;
|
|
22
|
-
|
|
24
|
+
constructor(config: IRocosSDKConfig);
|
|
23
25
|
protected abstract getError(e: Error): RocosError;
|
|
24
|
-
protected callPost<
|
|
25
|
-
protected callPut<
|
|
26
|
-
protected callDelete<
|
|
27
|
-
protected callGet<
|
|
28
|
-
protected call<
|
|
26
|
+
protected callPost<T = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<T>;
|
|
27
|
+
protected callPut<T = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<T>;
|
|
28
|
+
protected callDelete<T = unknown>(url: string, errorMessage: string, payload?: unknown): Promise<T>;
|
|
29
|
+
protected callGet<T = unknown>(url: string, errorMessage: string, params?: QueryParams, config?: RequestConfig): Promise<T>;
|
|
30
|
+
protected call<T = unknown>(url: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE', options: {
|
|
29
31
|
errorMessage: string;
|
|
30
32
|
config?: RequestConfig;
|
|
31
|
-
payload?:
|
|
33
|
+
payload?: unknown;
|
|
32
34
|
params?: QueryParams;
|
|
33
|
-
}): Promise<
|
|
35
|
+
}): Promise<T>;
|
|
34
36
|
private fetchOrThrow;
|
|
35
37
|
}
|
|
36
38
|
export {};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseServiceAbstract = void 0;
|
|
4
|
+
const RocosError_1 = require("../models/RocosError");
|
|
5
|
+
const RocosStore_1 = require("../store/RocosStore");
|
|
3
6
|
class HttpError extends Error {
|
|
4
7
|
constructor(response) {
|
|
5
8
|
super(response.statusText);
|
|
@@ -7,7 +10,7 @@ class HttpError extends Error {
|
|
|
7
10
|
this.name = 'HttpError';
|
|
8
11
|
}
|
|
9
12
|
}
|
|
10
|
-
|
|
13
|
+
class BaseServiceAbstract {
|
|
11
14
|
constructor(config) {
|
|
12
15
|
this.config = config;
|
|
13
16
|
}
|
|
@@ -24,25 +27,23 @@ export class BaseServiceAbstract {
|
|
|
24
27
|
return this.call(url, 'GET', { errorMessage, params, config });
|
|
25
28
|
}
|
|
26
29
|
async call(url, method, options) {
|
|
30
|
+
var _a;
|
|
27
31
|
const { errorMessage, config, payload, params } = options;
|
|
28
32
|
try {
|
|
29
33
|
// change all params to string
|
|
30
|
-
const stringParams = Object.entries(params
|
|
34
|
+
const stringParams = Object.entries(params || {}).reduce((acc, [key, value]) => {
|
|
31
35
|
acc[key] = value.toString();
|
|
32
36
|
return acc;
|
|
33
37
|
}, {});
|
|
34
38
|
const formattedUrl = params ? `${url}?${new URLSearchParams(stringParams)}` : url;
|
|
35
39
|
const defaultHeaders = {};
|
|
36
|
-
if (!config
|
|
37
|
-
const token = await RocosStore.getSDKInstance(this.config).getAuthService().getToken();
|
|
38
|
-
defaultHeaders.Authorization = token.
|
|
40
|
+
if (!(config === null || config === void 0 ? void 0 : config.public)) {
|
|
41
|
+
const token = await RocosStore_1.RocosStore.getSDKInstance(this.config).getAuthService().getToken();
|
|
42
|
+
defaultHeaders.Authorization = `Bearer ${token.value}`;
|
|
39
43
|
}
|
|
40
44
|
const requestConfig = {
|
|
41
45
|
method,
|
|
42
|
-
headers: {
|
|
43
|
-
...defaultHeaders,
|
|
44
|
-
...config?.headers,
|
|
45
|
-
},
|
|
46
|
+
headers: Object.assign(Object.assign({}, defaultHeaders), config === null || config === void 0 ? void 0 : config.headers),
|
|
46
47
|
};
|
|
47
48
|
// must check if FormData exists for node support
|
|
48
49
|
if (typeof FormData !== 'undefined' && payload instanceof FormData) {
|
|
@@ -50,19 +51,19 @@ export class BaseServiceAbstract {
|
|
|
50
51
|
}
|
|
51
52
|
else if (payload) {
|
|
52
53
|
requestConfig.body = JSON.stringify(payload);
|
|
53
|
-
requestConfig.headers = {
|
|
54
|
+
requestConfig.headers = Object.assign(Object.assign({}, requestConfig.headers), { 'Content-Type': 'application/json' });
|
|
54
55
|
}
|
|
55
|
-
return this.fetchOrThrow(formattedUrl, requestConfig, config
|
|
56
|
+
return this.fetchOrThrow(formattedUrl, requestConfig, config === null || config === void 0 ? void 0 : config.responseType);
|
|
56
57
|
}
|
|
57
58
|
catch (e) {
|
|
58
59
|
const message = errorMessage;
|
|
59
60
|
this.logger.error(message, e);
|
|
60
|
-
let httpError = new RocosError(message);
|
|
61
|
+
let httpError = new RocosError_1.RocosError(message);
|
|
61
62
|
if (e instanceof HttpError) {
|
|
62
63
|
httpError = this.getError(e);
|
|
63
|
-
httpError.statusCode = e
|
|
64
|
+
httpError.statusCode = (_a = e === null || e === void 0 ? void 0 : e.response) === null || _a === void 0 ? void 0 : _a.status;
|
|
64
65
|
}
|
|
65
|
-
RocosStore.getChangeSubject().next({ type: 'http-error', url: this.config.url, data: httpError });
|
|
66
|
+
RocosStore_1.RocosStore.getChangeSubject().next({ type: 'http-error', url: this.config.url, data: httpError });
|
|
66
67
|
throw httpError;
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -86,7 +87,7 @@ export class BaseServiceAbstract {
|
|
|
86
87
|
case 'json':
|
|
87
88
|
default: {
|
|
88
89
|
const textRes = await res.text();
|
|
89
|
-
if (!textRes
|
|
90
|
+
if (!(textRes === null || textRes === void 0 ? void 0 : textRes.trim()))
|
|
90
91
|
return undefined;
|
|
91
92
|
try {
|
|
92
93
|
return JSON.parse(textRes);
|
|
@@ -99,3 +100,4 @@ export class BaseServiceAbstract {
|
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
}
|
|
103
|
+
exports.BaseServiceAbstract = BaseServiceAbstract;
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { ICallerInvokeParams, ICallerParams
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { ICallerInvokeParams, ICallerParams } from '../models/params/ICallerParams';
|
|
2
|
+
import { Observable, Subject } from 'rxjs';
|
|
3
|
+
import { IBaseService } from '../models/IBaseService';
|
|
4
|
+
import { ICallerStream } from '../models/stream/ICallerStream';
|
|
5
|
+
import { IRocosCallerMessage } from '../models/message/IRocosCallerMessage';
|
|
6
|
+
import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
|
|
7
|
+
import { IStreamConfig } from '../models/IStreamConfig';
|
|
8
|
+
import { ISubscriberStatus } from '../models/ISubscriberStatus';
|
|
9
|
+
import { SubscriberStatusEnum } from '../models/SubscriberStatusEnum';
|
|
10
|
+
export declare class CallerService implements IBaseService, ISubscriberStatus {
|
|
11
|
+
private config;
|
|
12
|
+
private logger;
|
|
13
|
+
private status;
|
|
14
|
+
status$: Subject<SubscriberStatusEnum>;
|
|
5
15
|
constructor(config: IRocosSDKConfig);
|
|
16
|
+
getStatus(): boolean;
|
|
6
17
|
invokeRequest(params: ICallerInvokeParams): Observable<IRocosCallerMessage>;
|
|
7
18
|
cancelRequest(params: ICallerParams): Observable<IRocosCallerMessage>;
|
|
8
|
-
|
|
19
|
+
private createStream;
|
|
20
|
+
private initStream;
|
|
9
21
|
protected getStream(config: IStreamConfig): ICallerStream;
|
|
10
22
|
}
|