@snap/camera-kit 0.12.0 → 0.13.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/README.md +25 -3
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/CameraKit.html +12 -7
- package/docs/html/classes/CameraKitSession.html +27 -7
- package/docs/html/classes/CameraKitSource.html +26 -17
- package/docs/html/classes/LensPerformanceMeasurement.html +12 -7
- package/docs/html/classes/LensPerformanceMetrics.html +12 -7
- package/docs/html/classes/LensRepository.html +12 -7
- package/docs/html/classes/LensSources.html +12 -7
- package/docs/html/classes/Transform2D.html +12 -7
- package/docs/html/classes/TypedCustomEvent.html +12 -7
- package/docs/html/classes/TypedEventTarget.html +12 -7
- package/docs/html/functions/Injectable.html +12 -7
- package/docs/html/functions/bootstrapCameraKit.html +12 -7
- package/docs/html/functions/createExtension.html +12 -7
- package/docs/html/functions/createImageSource.html +12 -7
- package/docs/html/functions/createMediaStreamSource.html +12 -7
- package/docs/html/functions/createUserMediaSource.html +12 -7
- package/docs/html/functions/createVideoSource.html +12 -7
- package/docs/html/functions/estimateLensPerformance.html +12 -7
- package/docs/html/functions/getRequiredBootstrapURLs.html +12 -7
- package/docs/html/functions/lensSourcesFactory.html +12 -7
- package/docs/html/functions/{uriHandlersFactory.html → remoteApiServicesFactory.html} +16 -14
- package/docs/html/index.html +40 -12
- package/docs/html/interfaces/CameraKitBootstrapConfiguration.html +12 -7
- package/docs/html/interfaces/CameraKitSourceSubscriber.html +12 -7
- package/docs/html/interfaces/ComputedFrameMetrics.html +12 -7
- package/docs/html/interfaces/CreateSessionOptions.html +12 -7
- package/docs/html/interfaces/EstimatedLensPerformance.html +12 -7
- package/docs/html/interfaces/Lens.html +12 -7
- package/docs/html/interfaces/LensSource.html +16 -11
- package/docs/html/interfaces/MediaStreamSourceOptions.html +12 -7
- package/docs/html/interfaces/Preview.html +12 -7
- package/docs/html/interfaces/RemoteApiRequest.html +164 -0
- package/docs/html/interfaces/RemoteApiResponse.html +156 -0
- package/docs/html/interfaces/{UriHandler.html → RemoteApiService.html} +34 -68
- package/docs/html/interfaces/Snapcode.html +12 -7
- package/docs/html/interfaces/UriCancelRequest.html +12 -7
- package/docs/html/interfaces/UriRequest.html +13 -8
- package/docs/html/interfaces/UriResponse.html +12 -7
- package/docs/html/interfaces/VideoSourceOptions.html +12 -7
- package/docs/html/modules.html +22 -12
- package/docs/html/types/AssetLoader.html +12 -7
- package/docs/html/types/AssetTiming.html +12 -7
- package/docs/html/types/BenchmarkError.html +12 -7
- package/docs/html/types/BootstrapError.html +12 -7
- package/docs/html/types/CacheKeyNotFoundError.html +12 -7
- package/docs/html/types/CameraKitDeviceInfo.html +19 -9
- package/docs/html/types/CameraKitDeviceOptions.html +119 -0
- package/docs/html/types/CameraKitSessionEventListener.html +12 -7
- package/docs/html/types/CameraKitSessionEvents.html +12 -7
- package/docs/html/types/CameraKitSourceError.html +12 -7
- package/docs/html/types/CameraKitSourceInfo.html +12 -7
- package/docs/html/types/CameraKitSourceOptions.html +13 -8
- package/docs/html/types/ConfigurationError.html +12 -7
- package/docs/html/types/Keyboard.html +12 -7
- package/docs/html/types/KeyboardEvents.html +12 -7
- package/docs/html/types/LegalError.html +12 -7
- package/docs/html/types/LensAssetError.html +12 -7
- package/docs/html/types/LensContentValidationError.html +12 -7
- package/docs/html/types/LensError.html +12 -7
- package/docs/html/types/LensExecutionError.html +12 -7
- package/docs/html/types/LensImagePickerError.html +12 -7
- package/docs/html/types/LensLaunchParams.html +12 -7
- package/docs/html/types/LensMetricsEvents.html +12 -7
- package/docs/html/types/LensPerformanceCluster.html +12 -7
- package/docs/html/types/LensView.html +12 -7
- package/docs/html/types/LensWait.html +12 -7
- package/docs/html/types/PersistentStoreError.html +12 -7
- package/docs/html/types/PlatformNotSupportedError.html +12 -7
- package/docs/html/types/PublicContainer.html +12 -7
- package/docs/html/types/RemoteApiRequestHandler.html +141 -0
- package/docs/html/types/{UriHandlers.html → RemoteApiServices.html} +15 -13
- package/docs/html/types/RemoteApiStatus.html +114 -0
- package/docs/html/types/RenderTarget.html +12 -7
- package/docs/html/types/Uri.html +12 -7
- package/docs/html/types/WebGLError.html +12 -7
- package/docs/html/variables/extensionRequestContext.html +12 -7
- package/docs/md/README.md +25 -3
- package/docs/md/classes/CameraKit.md +1 -1
- package/docs/md/classes/CameraKitSession.md +19 -1
- package/docs/md/classes/CameraKitSource.md +19 -7
- package/docs/md/classes/LensPerformanceMeasurement.md +1 -1
- package/docs/md/classes/LensPerformanceMetrics.md +1 -1
- package/docs/md/classes/LensRepository.md +1 -1
- package/docs/md/classes/LensSources.md +1 -1
- package/docs/md/classes/Transform2D.md +1 -1
- package/docs/md/classes/TypedCustomEvent.md +1 -1
- package/docs/md/classes/TypedEventTarget.md +1 -1
- package/docs/md/interfaces/CameraKitBootstrapConfiguration.md +1 -1
- package/docs/md/interfaces/CameraKitSourceSubscriber.md +1 -1
- package/docs/md/interfaces/ComputedFrameMetrics.md +1 -1
- package/docs/md/interfaces/CreateSessionOptions.md +1 -1
- package/docs/md/interfaces/EstimatedLensPerformance.md +1 -1
- package/docs/md/interfaces/Lens.md +1 -1
- package/docs/md/interfaces/LensSource.md +3 -3
- package/docs/md/interfaces/MediaStreamSourceOptions.md +1 -1
- package/docs/md/interfaces/Preview.md +1 -1
- package/docs/md/interfaces/RemoteApiRequest.md +46 -0
- package/docs/md/interfaces/RemoteApiResponse.md +37 -0
- package/docs/md/interfaces/RemoteApiService.md +45 -0
- package/docs/md/interfaces/Snapcode.md +1 -1
- package/docs/md/interfaces/UriCancelRequest.md +1 -1
- package/docs/md/interfaces/UriRequest.md +2 -2
- package/docs/md/interfaces/UriResponse.md +1 -1
- package/docs/md/interfaces/VideoSourceOptions.md +1 -1
- package/docs/md/modules.md +66 -15
- package/lib/CameraKit.js +3 -1
- package/lib/CameraKit.js.map +1 -1
- package/lib/__tests__/data.d.ts +1 -1
- package/lib/__tests__/data.js +1 -0
- package/lib/__tests__/data.js.map +1 -1
- package/lib/bootstrapCameraKit.js +12 -10
- package/lib/bootstrapCameraKit.js.map +1 -1
- package/lib/common/any.d.ts +17 -0
- package/lib/common/any.js +36 -0
- package/lib/common/any.js.map +1 -0
- package/lib/common/cameraKitUserAgent.d.ts +5 -0
- package/lib/common/cameraKitUserAgent.js +2 -1
- package/lib/common/cameraKitUserAgent.js.map +1 -1
- package/lib/common/date.d.ts +3 -0
- package/lib/common/date.js +13 -0
- package/lib/common/date.js.map +1 -0
- package/lib/common/errorHelpers.js +1 -1
- package/lib/common/errorHelpers.js.map +1 -1
- package/lib/common/time.d.ts +1 -0
- package/lib/common/time.js +1 -0
- package/lib/common/time.js.map +1 -1
- package/lib/common/types.d.ts +8 -0
- package/lib/common/types.js.map +1 -1
- package/lib/dependency-injection/RootServices.d.ts +2 -0
- package/lib/dependency-injection/RootServices.js.map +1 -1
- package/lib/environment.json +1 -1
- package/lib/extensions/LensSources.d.ts +2 -2
- package/lib/extensions/LensSources.js +7 -3
- package/lib/extensions/LensSources.js.map +1 -1
- package/lib/extensions/RemoteApiServices.d.ts +101 -0
- package/lib/extensions/RemoteApiServices.js +198 -0
- package/lib/extensions/RemoteApiServices.js.map +1 -0
- package/lib/extensions/UriHandlers.d.ts +10 -17
- package/lib/extensions/UriHandlers.js +5 -60
- package/lib/extensions/UriHandlers.js.map +1 -1
- package/lib/extensions/uriHandlersRegister.d.ts +21 -0
- package/lib/extensions/uriHandlersRegister.js +72 -0
- package/lib/extensions/uriHandlersRegister.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/features/remote_api_info.d.ts +31 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/features/remote_api_info.js +43 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/features/remote_api_info.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/namespace.d.ts +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/namespace.js +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/namespace.js.map +1 -1
- package/lib/generated-proto/pb_schema/lenses/remote_api/remote_api_service.d.ts +569 -0
- package/lib/generated-proto/pb_schema/lenses/remote_api/remote_api_service.js +1175 -0
- package/lib/generated-proto/pb_schema/lenses/remote_api/remote_api_service.js.map +1 -0
- package/lib/handlers/defaultFetchHandler.js +17 -4
- package/lib/handlers/defaultFetchHandler.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/legal/legalState.js +1 -1
- package/lib/legal/legalState.js.map +1 -1
- package/lib/lens/lensHttpUtil.js +26 -4
- package/lib/lens/lensHttpUtil.js.map +1 -1
- package/lib/lens-core-module/generated-types.d.ts +24 -4
- package/lib/lens-core-module/generated-types.js.map +1 -1
- package/lib/lensCoreWasmVersions.json +3 -3
- package/lib/logger/registerLogEntriesSubscriber.js +13 -1
- package/lib/logger/registerLogEntriesSubscriber.js.map +1 -1
- package/lib/media-sources/CameraKitSource.d.ts +13 -3
- package/lib/media-sources/CameraKitSource.js +2 -8
- package/lib/media-sources/CameraKitSource.js.map +1 -1
- package/lib/media-sources/FunctionSource.d.ts +1 -1
- package/lib/media-sources/FunctionSource.js +1 -1
- package/lib/media-sources/FunctionSource.js.map +1 -1
- package/lib/media-sources/ImageSource.d.ts +1 -1
- package/lib/media-sources/ImageSource.js +1 -1
- package/lib/media-sources/ImageSource.js.map +1 -1
- package/lib/media-sources/MediaStreamSource.d.ts +1 -1
- package/lib/media-sources/MediaStreamSource.js +2 -1
- package/lib/media-sources/MediaStreamSource.js.map +1 -1
- package/lib/media-sources/VideoSource.d.ts +1 -1
- package/lib/media-sources/VideoSource.js +1 -1
- package/lib/media-sources/VideoSource.js.map +1 -1
- package/lib/metrics/businessEventsReporter.d.ts +3 -2
- package/lib/metrics/businessEventsReporter.js +125 -65
- package/lib/metrics/businessEventsReporter.js.map +1 -1
- package/lib/metrics/operational/operationalMetricsReporter.js +23 -5
- package/lib/metrics/operational/operationalMetricsReporter.js.map +1 -1
- package/lib/metrics/reporters/reportHttpMetrics.d.ts +0 -7
- package/lib/metrics/reporters/reportHttpMetrics.js +3 -2
- package/lib/metrics/reporters/reportHttpMetrics.js.map +1 -1
- package/lib/metrics/reporters/reportLensView.d.ts +1 -1
- package/lib/metrics/reporters/reportLensView.js +41 -13
- package/lib/metrics/reporters/reportLensView.js.map +1 -1
- package/lib/metrics/reporters/reportUserSession.js +15 -16
- package/lib/metrics/reporters/reportUserSession.js.map +1 -1
- package/lib/metrics/reporters/reporters.d.ts +1 -1
- package/lib/persistence/ExpiringPersistence.d.ts +2 -1
- package/lib/persistence/ExpiringPersistence.js +15 -1
- package/lib/persistence/ExpiringPersistence.js.map +1 -1
- package/lib/persistence/IndexedDBPersistence.d.ts +1 -1
- package/lib/persistence/IndexedDBPersistence.js +11 -1
- package/lib/persistence/IndexedDBPersistence.js.map +1 -1
- package/lib/persistence/Persistence.d.ts +1 -1
- package/lib/persistence/Persistence.js.map +1 -1
- package/lib/remote-configuration/preloadConfiguration.d.ts +7 -0
- package/lib/remote-configuration/preloadConfiguration.js +15 -0
- package/lib/remote-configuration/preloadConfiguration.js.map +1 -0
- package/lib/remote-configuration/remoteConfiguration.d.ts +5 -1
- package/lib/remote-configuration/remoteConfiguration.js +10 -2
- package/lib/remote-configuration/remoteConfiguration.js.map +1 -1
- package/lib/session/CameraKitSession.d.ts +7 -2
- package/lib/session/CameraKitSession.js +1 -0
- package/lib/session/CameraKitSession.js.map +1 -1
- package/lib/session/sessionState.d.ts +2 -2
- package/lib/session/sessionState.js +3 -3
- package/lib/session/sessionState.js.map +1 -1
- package/package.json +2 -1
- package/docs/md/interfaces/UriHandler.md +0 -63
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote_api_service.js","sourceRoot":"","sources":["../../../../../src/generated-proto/pb_schema/lenses/remote_api/remote_api_service.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from \"long\";\nimport _m0 from \"protobufjs/minimal\";\nexport const protobufPackage = \"snapchat.lenses\";\nexport enum HttpRequestMethod {\n HTTP_METHOD_UNSET = \"HTTP_METHOD_UNSET\",\n HTTP_METHOD_GET = \"HTTP_METHOD_GET\",\n HTTP_METHOD_POST = \"HTTP_METHOD_POST\",\n HTTP_METHOD_PUT = \"HTTP_METHOD_PUT\",\n HTTP_METHOD_DELETE = \"HTTP_METHOD_DELETE\",\n HTTP_METHOD_PATCH = \"HTTP_METHOD_PATCH\",\n UNRECOGNIZED = \"UNRECOGNIZED\"\n}\nexport function httpRequestMethodFromJSON(object: any): HttpRequestMethod {\n switch (object) {\n case 0:\n case \"HTTP_METHOD_UNSET\":\n return HttpRequestMethod.HTTP_METHOD_UNSET;\n case 1:\n case \"HTTP_METHOD_GET\":\n return HttpRequestMethod.HTTP_METHOD_GET;\n case 2:\n case \"HTTP_METHOD_POST\":\n return HttpRequestMethod.HTTP_METHOD_POST;\n case 3:\n case \"HTTP_METHOD_PUT\":\n return HttpRequestMethod.HTTP_METHOD_PUT;\n case 4:\n case \"HTTP_METHOD_DELETE\":\n return HttpRequestMethod.HTTP_METHOD_DELETE;\n case 5:\n case \"HTTP_METHOD_PATCH\":\n return HttpRequestMethod.HTTP_METHOD_PATCH;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return HttpRequestMethod.UNRECOGNIZED;\n }\n}\nexport function httpRequestMethodToNumber(object: HttpRequestMethod): number {\n switch (object) {\n case HttpRequestMethod.HTTP_METHOD_UNSET:\n return 0;\n case HttpRequestMethod.HTTP_METHOD_GET:\n return 1;\n case HttpRequestMethod.HTTP_METHOD_POST:\n return 2;\n case HttpRequestMethod.HTTP_METHOD_PUT:\n return 3;\n case HttpRequestMethod.HTTP_METHOD_DELETE:\n return 4;\n case HttpRequestMethod.HTTP_METHOD_PATCH:\n return 5;\n default:\n return 0;\n }\n}\nexport enum ResponseCode {\n RESPONSE_CODE_UNSET = \"RESPONSE_CODE_UNSET\",\n SUCCESS = \"SUCCESS\",\n REDIRECTED = \"REDIRECTED\",\n BAD_REQUEST = \"BAD_REQUEST\",\n ACCESS_DENIED = \"ACCESS_DENIED\",\n NOT_FOUND = \"NOT_FOUND\",\n TIMEOUT = \"TIMEOUT\",\n REQUEST_TOO_LARGE = \"REQUEST_TOO_LARGE\",\n SERVER_ERROR = \"SERVER_ERROR\",\n CANCELLED = \"CANCELLED\",\n PROXY_ERROR = \"PROXY_ERROR\",\n UNRECOGNIZED = \"UNRECOGNIZED\"\n}\nexport function responseCodeFromJSON(object: any): ResponseCode {\n switch (object) {\n case 0:\n case \"RESPONSE_CODE_UNSET\":\n return ResponseCode.RESPONSE_CODE_UNSET;\n case 1:\n case \"SUCCESS\":\n return ResponseCode.SUCCESS;\n case 2:\n case \"REDIRECTED\":\n return ResponseCode.REDIRECTED;\n case 3:\n case \"BAD_REQUEST\":\n return ResponseCode.BAD_REQUEST;\n case 4:\n case \"ACCESS_DENIED\":\n return ResponseCode.ACCESS_DENIED;\n case 5:\n case \"NOT_FOUND\":\n return ResponseCode.NOT_FOUND;\n case 6:\n case \"TIMEOUT\":\n return ResponseCode.TIMEOUT;\n case 7:\n case \"REQUEST_TOO_LARGE\":\n return ResponseCode.REQUEST_TOO_LARGE;\n case 8:\n case \"SERVER_ERROR\":\n return ResponseCode.SERVER_ERROR;\n case 9:\n case \"CANCELLED\":\n return ResponseCode.CANCELLED;\n case 10:\n case \"PROXY_ERROR\":\n return ResponseCode.PROXY_ERROR;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return ResponseCode.UNRECOGNIZED;\n }\n}\nexport function responseCodeToNumber(object: ResponseCode): number {\n switch (object) {\n case ResponseCode.RESPONSE_CODE_UNSET:\n return 0;\n case ResponseCode.SUCCESS:\n return 1;\n case ResponseCode.REDIRECTED:\n return 2;\n case ResponseCode.BAD_REQUEST:\n return 3;\n case ResponseCode.ACCESS_DENIED:\n return 4;\n case ResponseCode.NOT_FOUND:\n return 5;\n case ResponseCode.TIMEOUT:\n return 6;\n case ResponseCode.REQUEST_TOO_LARGE:\n return 7;\n case ResponseCode.SERVER_ERROR:\n return 8;\n case ResponseCode.CANCELLED:\n return 9;\n case ResponseCode.PROXY_ERROR:\n return 10;\n default:\n return 0;\n }\n}\nexport interface PerformHttpCallRequest {\n url: string;\n method: HttpRequestMethod;\n headers: {\n [key: string]: string;\n };\n body: Uint8Array;\n apiSpecId: string;\n isStudioDev: boolean;\n}\nexport interface PerformHttpCallRequest_HeadersEntry {\n key: string;\n value: string;\n}\nexport interface PerformHttpCallResponse {\n code: number;\n headers: {\n [key: string]: string;\n };\n body: Uint8Array;\n}\nexport interface PerformHttpCallResponse_HeadersEntry {\n key: string;\n value: string;\n}\nexport interface GetOAuth2InfoRequest {\n apiSpecId: string;\n}\nexport interface GetOAuth2InfoResponse {\n clientId: string;\n grantType: GetOAuth2InfoResponse_GrantType;\n authorizationUrl: string;\n scope: string;\n}\nexport enum GetOAuth2InfoResponse_GrantType {\n GRANT_TYPE_UNSET = \"GRANT_TYPE_UNSET\",\n AUTHORIZATION_CODE = \"AUTHORIZATION_CODE\",\n AUTHORIZATION_CODE_WITH_PKCE = \"AUTHORIZATION_CODE_WITH_PKCE\",\n IMPLICIT = \"IMPLICIT\",\n CLIENT_CREDENTIALS = \"CLIENT_CREDENTIALS\",\n UNRECOGNIZED = \"UNRECOGNIZED\"\n}\nexport function getOAuth2InfoResponse_GrantTypeFromJSON(object: any): GetOAuth2InfoResponse_GrantType {\n switch (object) {\n case 0:\n case \"GRANT_TYPE_UNSET\":\n return GetOAuth2InfoResponse_GrantType.GRANT_TYPE_UNSET;\n case 1:\n case \"AUTHORIZATION_CODE\":\n return GetOAuth2InfoResponse_GrantType.AUTHORIZATION_CODE;\n case 2:\n case \"AUTHORIZATION_CODE_WITH_PKCE\":\n return GetOAuth2InfoResponse_GrantType.AUTHORIZATION_CODE_WITH_PKCE;\n case 3:\n case \"IMPLICIT\":\n return GetOAuth2InfoResponse_GrantType.IMPLICIT;\n case 4:\n case \"CLIENT_CREDENTIALS\":\n return GetOAuth2InfoResponse_GrantType.CLIENT_CREDENTIALS;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return GetOAuth2InfoResponse_GrantType.UNRECOGNIZED;\n }\n}\nexport function getOAuth2InfoResponse_GrantTypeToNumber(object: GetOAuth2InfoResponse_GrantType): number {\n switch (object) {\n case GetOAuth2InfoResponse_GrantType.GRANT_TYPE_UNSET:\n return 0;\n case GetOAuth2InfoResponse_GrantType.AUTHORIZATION_CODE:\n return 1;\n case GetOAuth2InfoResponse_GrantType.AUTHORIZATION_CODE_WITH_PKCE:\n return 2;\n case GetOAuth2InfoResponse_GrantType.IMPLICIT:\n return 3;\n case GetOAuth2InfoResponse_GrantType.CLIENT_CREDENTIALS:\n return 4;\n default:\n return 0;\n }\n}\nexport interface TokenExchangeError {\n error: TokenExchangeError_TokenExchangeErrorType;\n errorDescription: string;\n}\nexport enum TokenExchangeError_TokenExchangeErrorType {\n ERROR_TYPE_UNSET = \"ERROR_TYPE_UNSET\",\n INVALID_REQUEST = \"INVALID_REQUEST\",\n INVALID_CLIENT = \"INVALID_CLIENT\",\n INVALID_GRANT = \"INVALID_GRANT\",\n UNAUTHORIZED_CLIENT = \"UNAUTHORIZED_CLIENT\",\n UNSUPPORTED_GRANT_TYPE = \"UNSUPPORTED_GRANT_TYPE\",\n INVALID_SCOPE = \"INVALID_SCOPE\",\n UNRECOGNIZED = \"UNRECOGNIZED\"\n}\nexport function tokenExchangeError_TokenExchangeErrorTypeFromJSON(object: any): TokenExchangeError_TokenExchangeErrorType {\n switch (object) {\n case 0:\n case \"ERROR_TYPE_UNSET\":\n return TokenExchangeError_TokenExchangeErrorType.ERROR_TYPE_UNSET;\n case 1:\n case \"INVALID_REQUEST\":\n return TokenExchangeError_TokenExchangeErrorType.INVALID_REQUEST;\n case 2:\n case \"INVALID_CLIENT\":\n return TokenExchangeError_TokenExchangeErrorType.INVALID_CLIENT;\n case 3:\n case \"INVALID_GRANT\":\n return TokenExchangeError_TokenExchangeErrorType.INVALID_GRANT;\n case 4:\n case \"UNAUTHORIZED_CLIENT\":\n return TokenExchangeError_TokenExchangeErrorType.UNAUTHORIZED_CLIENT;\n case 5:\n case \"UNSUPPORTED_GRANT_TYPE\":\n return TokenExchangeError_TokenExchangeErrorType.UNSUPPORTED_GRANT_TYPE;\n case 6:\n case \"INVALID_SCOPE\":\n return TokenExchangeError_TokenExchangeErrorType.INVALID_SCOPE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return TokenExchangeError_TokenExchangeErrorType.UNRECOGNIZED;\n }\n}\nexport function tokenExchangeError_TokenExchangeErrorTypeToNumber(object: TokenExchangeError_TokenExchangeErrorType): number {\n switch (object) {\n case TokenExchangeError_TokenExchangeErrorType.ERROR_TYPE_UNSET:\n return 0;\n case TokenExchangeError_TokenExchangeErrorType.INVALID_REQUEST:\n return 1;\n case TokenExchangeError_TokenExchangeErrorType.INVALID_CLIENT:\n return 2;\n case TokenExchangeError_TokenExchangeErrorType.INVALID_GRANT:\n return 3;\n case TokenExchangeError_TokenExchangeErrorType.UNAUTHORIZED_CLIENT:\n return 4;\n case TokenExchangeError_TokenExchangeErrorType.UNSUPPORTED_GRANT_TYPE:\n return 5;\n case TokenExchangeError_TokenExchangeErrorType.INVALID_SCOPE:\n return 6;\n default:\n return 0;\n }\n}\nexport interface TokenDetails {\n accessToken: string;\n tokenType: string;\n expiresInSeconds: number;\n refreshToken: string;\n scope: string;\n}\nexport interface PerformTokenExchangeRequest {\n apiSpecId: string;\n authorizationCode: string;\n codeVerifier: string;\n}\nexport interface PerformTokenExchangeResponse {\n response?: {\n $case: \"tokenDetails\";\n tokenDetails: TokenDetails;\n } | {\n $case: \"error\";\n error: TokenExchangeError;\n };\n}\nexport interface RefreshTokenRequest {\n apiSpecId: string;\n refreshToken: string;\n}\nexport interface RefreshTokenResponse {\n response?: {\n $case: \"tokenDetails\";\n tokenDetails: TokenDetails;\n } | {\n $case: \"error\";\n error: TokenExchangeError;\n };\n}\nexport interface PerformApiCallRequest {\n apiSpecSetId: string;\n endpointRefId: string;\n parameters: {\n [key: string]: string;\n };\n body: Uint8Array;\n lensId: string;\n isStudioDev: boolean;\n cacheTtlSec: number;\n linkedResources: LinkedResource[];\n}\nexport interface PerformApiCallRequest_ParametersEntry {\n key: string;\n value: string;\n}\nexport interface PerformApiCallResponse {\n responseCode: ResponseCode;\n metadata: {\n [key: string]: string;\n };\n body: Uint8Array;\n userLocationUsed: boolean;\n linkedResources: LinkedResource[];\n}\nexport interface PerformApiCallResponse_MetadataEntry {\n key: string;\n value: string;\n}\nexport interface LinkedResource {\n url: string;\n encryptionKey: Uint8Array;\n}\nfunction createBasePerformHttpCallRequest(): PerformHttpCallRequest {\n return {\n url: \"\",\n method: HttpRequestMethod.HTTP_METHOD_UNSET,\n headers: {},\n body: new Uint8Array(),\n apiSpecId: \"\",\n isStudioDev: false,\n };\n}\nexport const PerformHttpCallRequest = {\n encode(message: PerformHttpCallRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.url !== \"\") {\n writer.uint32(10).string(message.url);\n }\n if (message.method !== HttpRequestMethod.HTTP_METHOD_UNSET) {\n writer.uint32(16).int32(httpRequestMethodToNumber(message.method));\n }\n Object.entries(message.headers).forEach(([key, value]) => {\n PerformHttpCallRequest_HeadersEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).ldelim();\n });\n if (message.body.length !== 0) {\n writer.uint32(34).bytes(message.body);\n }\n if (message.apiSpecId !== \"\") {\n writer.uint32(42).string(message.apiSpecId);\n }\n if (message.isStudioDev === true) {\n writer.uint32(48).bool(message.isStudioDev);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformHttpCallRequest {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformHttpCallRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.url = reader.string();\n break;\n case 2:\n message.method = httpRequestMethodFromJSON(reader.int32());\n break;\n case 3:\n const entry3 = PerformHttpCallRequest_HeadersEntry.decode(reader, reader.uint32());\n if (entry3.value !== undefined) {\n message.headers[entry3.key] = entry3.value;\n }\n break;\n case 4:\n message.body = reader.bytes();\n break;\n case 5:\n message.apiSpecId = reader.string();\n break;\n case 6:\n message.isStudioDev = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformHttpCallRequest>, I>>(object: I): PerformHttpCallRequest {\n const message = createBasePerformHttpCallRequest();\n message.url = object.url ?? \"\";\n message.method = object.method ?? HttpRequestMethod.HTTP_METHOD_UNSET;\n message.headers = Object.entries(object.headers ?? {}).reduce<{\n [key: string]: string;\n }>((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = String(value);\n }\n return acc;\n }, {});\n message.body = object.body ?? new Uint8Array();\n message.apiSpecId = object.apiSpecId ?? \"\";\n message.isStudioDev = object.isStudioDev ?? false;\n return message;\n },\n};\nfunction createBasePerformHttpCallRequest_HeadersEntry(): PerformHttpCallRequest_HeadersEntry {\n return { key: \"\", value: \"\" };\n}\nexport const PerformHttpCallRequest_HeadersEntry = {\n encode(message: PerformHttpCallRequest_HeadersEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformHttpCallRequest_HeadersEntry {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformHttpCallRequest_HeadersEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.key = reader.string();\n break;\n case 2:\n message.value = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformHttpCallRequest_HeadersEntry>, I>>(object: I): PerformHttpCallRequest_HeadersEntry {\n const message = createBasePerformHttpCallRequest_HeadersEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nfunction createBasePerformHttpCallResponse(): PerformHttpCallResponse {\n return { code: 0, headers: {}, body: new Uint8Array() };\n}\nexport const PerformHttpCallResponse = {\n encode(message: PerformHttpCallResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.code !== 0) {\n writer.uint32(8).int32(message.code);\n }\n Object.entries(message.headers).forEach(([key, value]) => {\n PerformHttpCallResponse_HeadersEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).ldelim();\n });\n if (message.body.length !== 0) {\n writer.uint32(26).bytes(message.body);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformHttpCallResponse {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformHttpCallResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.code = reader.int32();\n break;\n case 2:\n const entry2 = PerformHttpCallResponse_HeadersEntry.decode(reader, reader.uint32());\n if (entry2.value !== undefined) {\n message.headers[entry2.key] = entry2.value;\n }\n break;\n case 3:\n message.body = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformHttpCallResponse>, I>>(object: I): PerformHttpCallResponse {\n const message = createBasePerformHttpCallResponse();\n message.code = object.code ?? 0;\n message.headers = Object.entries(object.headers ?? {}).reduce<{\n [key: string]: string;\n }>((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = String(value);\n }\n return acc;\n }, {});\n message.body = object.body ?? new Uint8Array();\n return message;\n },\n};\nfunction createBasePerformHttpCallResponse_HeadersEntry(): PerformHttpCallResponse_HeadersEntry {\n return { key: \"\", value: \"\" };\n}\nexport const PerformHttpCallResponse_HeadersEntry = {\n encode(message: PerformHttpCallResponse_HeadersEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformHttpCallResponse_HeadersEntry {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformHttpCallResponse_HeadersEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.key = reader.string();\n break;\n case 2:\n message.value = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformHttpCallResponse_HeadersEntry>, I>>(object: I): PerformHttpCallResponse_HeadersEntry {\n const message = createBasePerformHttpCallResponse_HeadersEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nfunction createBaseGetOAuth2InfoRequest(): GetOAuth2InfoRequest {\n return { apiSpecId: \"\" };\n}\nexport const GetOAuth2InfoRequest = {\n encode(message: GetOAuth2InfoRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.apiSpecId !== \"\") {\n writer.uint32(10).string(message.apiSpecId);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): GetOAuth2InfoRequest {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGetOAuth2InfoRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.apiSpecId = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<GetOAuth2InfoRequest>, I>>(object: I): GetOAuth2InfoRequest {\n const message = createBaseGetOAuth2InfoRequest();\n message.apiSpecId = object.apiSpecId ?? \"\";\n return message;\n },\n};\nfunction createBaseGetOAuth2InfoResponse(): GetOAuth2InfoResponse {\n return { clientId: \"\", grantType: GetOAuth2InfoResponse_GrantType.GRANT_TYPE_UNSET, authorizationUrl: \"\", scope: \"\" };\n}\nexport const GetOAuth2InfoResponse = {\n encode(message: GetOAuth2InfoResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.clientId !== \"\") {\n writer.uint32(10).string(message.clientId);\n }\n if (message.grantType !== GetOAuth2InfoResponse_GrantType.GRANT_TYPE_UNSET) {\n writer.uint32(16).int32(getOAuth2InfoResponse_GrantTypeToNumber(message.grantType));\n }\n if (message.authorizationUrl !== \"\") {\n writer.uint32(26).string(message.authorizationUrl);\n }\n if (message.scope !== \"\") {\n writer.uint32(34).string(message.scope);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): GetOAuth2InfoResponse {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGetOAuth2InfoResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.clientId = reader.string();\n break;\n case 2:\n message.grantType = getOAuth2InfoResponse_GrantTypeFromJSON(reader.int32());\n break;\n case 3:\n message.authorizationUrl = reader.string();\n break;\n case 4:\n message.scope = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<GetOAuth2InfoResponse>, I>>(object: I): GetOAuth2InfoResponse {\n const message = createBaseGetOAuth2InfoResponse();\n message.clientId = object.clientId ?? \"\";\n message.grantType = object.grantType ?? GetOAuth2InfoResponse_GrantType.GRANT_TYPE_UNSET;\n message.authorizationUrl = object.authorizationUrl ?? \"\";\n message.scope = object.scope ?? \"\";\n return message;\n },\n};\nfunction createBaseTokenExchangeError(): TokenExchangeError {\n return { error: TokenExchangeError_TokenExchangeErrorType.ERROR_TYPE_UNSET, errorDescription: \"\" };\n}\nexport const TokenExchangeError = {\n encode(message: TokenExchangeError, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.error !== TokenExchangeError_TokenExchangeErrorType.ERROR_TYPE_UNSET) {\n writer.uint32(8).int32(tokenExchangeError_TokenExchangeErrorTypeToNumber(message.error));\n }\n if (message.errorDescription !== \"\") {\n writer.uint32(18).string(message.errorDescription);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): TokenExchangeError {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTokenExchangeError();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.error = tokenExchangeError_TokenExchangeErrorTypeFromJSON(reader.int32());\n break;\n case 2:\n message.errorDescription = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<TokenExchangeError>, I>>(object: I): TokenExchangeError {\n const message = createBaseTokenExchangeError();\n message.error = object.error ?? TokenExchangeError_TokenExchangeErrorType.ERROR_TYPE_UNSET;\n message.errorDescription = object.errorDescription ?? \"\";\n return message;\n },\n};\nfunction createBaseTokenDetails(): TokenDetails {\n return { accessToken: \"\", tokenType: \"\", expiresInSeconds: 0, refreshToken: \"\", scope: \"\" };\n}\nexport const TokenDetails = {\n encode(message: TokenDetails, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.accessToken !== \"\") {\n writer.uint32(10).string(message.accessToken);\n }\n if (message.tokenType !== \"\") {\n writer.uint32(18).string(message.tokenType);\n }\n if (message.expiresInSeconds !== 0) {\n writer.uint32(24).int64(message.expiresInSeconds);\n }\n if (message.refreshToken !== \"\") {\n writer.uint32(34).string(message.refreshToken);\n }\n if (message.scope !== \"\") {\n writer.uint32(42).string(message.scope);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): TokenDetails {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTokenDetails();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.accessToken = reader.string();\n break;\n case 2:\n message.tokenType = reader.string();\n break;\n case 3:\n message.expiresInSeconds = longToNumber(reader.int64() as Long);\n break;\n case 4:\n message.refreshToken = reader.string();\n break;\n case 5:\n message.scope = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<TokenDetails>, I>>(object: I): TokenDetails {\n const message = createBaseTokenDetails();\n message.accessToken = object.accessToken ?? \"\";\n message.tokenType = object.tokenType ?? \"\";\n message.expiresInSeconds = object.expiresInSeconds ?? 0;\n message.refreshToken = object.refreshToken ?? \"\";\n message.scope = object.scope ?? \"\";\n return message;\n },\n};\nfunction createBasePerformTokenExchangeRequest(): PerformTokenExchangeRequest {\n return { apiSpecId: \"\", authorizationCode: \"\", codeVerifier: \"\" };\n}\nexport const PerformTokenExchangeRequest = {\n encode(message: PerformTokenExchangeRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.apiSpecId !== \"\") {\n writer.uint32(10).string(message.apiSpecId);\n }\n if (message.authorizationCode !== \"\") {\n writer.uint32(18).string(message.authorizationCode);\n }\n if (message.codeVerifier !== \"\") {\n writer.uint32(26).string(message.codeVerifier);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformTokenExchangeRequest {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformTokenExchangeRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.apiSpecId = reader.string();\n break;\n case 2:\n message.authorizationCode = reader.string();\n break;\n case 3:\n message.codeVerifier = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformTokenExchangeRequest>, I>>(object: I): PerformTokenExchangeRequest {\n const message = createBasePerformTokenExchangeRequest();\n message.apiSpecId = object.apiSpecId ?? \"\";\n message.authorizationCode = object.authorizationCode ?? \"\";\n message.codeVerifier = object.codeVerifier ?? \"\";\n return message;\n },\n};\nfunction createBasePerformTokenExchangeResponse(): PerformTokenExchangeResponse {\n return { response: undefined };\n}\nexport const PerformTokenExchangeResponse = {\n encode(message: PerformTokenExchangeResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.response?.$case === \"tokenDetails\") {\n TokenDetails.encode(message.response.tokenDetails, writer.uint32(10).fork()).ldelim();\n }\n if (message.response?.$case === \"error\") {\n TokenExchangeError.encode(message.response.error, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformTokenExchangeResponse {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformTokenExchangeResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.response = { $case: \"tokenDetails\", tokenDetails: TokenDetails.decode(reader, reader.uint32()) };\n break;\n case 2:\n message.response = { $case: \"error\", error: TokenExchangeError.decode(reader, reader.uint32()) };\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformTokenExchangeResponse>, I>>(object: I): PerformTokenExchangeResponse {\n const message = createBasePerformTokenExchangeResponse();\n if (object.response?.$case === \"tokenDetails\" &&\n object.response?.tokenDetails !== undefined &&\n object.response?.tokenDetails !== null) {\n message.response = {\n $case: \"tokenDetails\",\n tokenDetails: TokenDetails.fromPartial(object.response.tokenDetails),\n };\n }\n if (object.response?.$case === \"error\" && object.response?.error !== undefined && object.response?.error !== null) {\n message.response = { $case: \"error\", error: TokenExchangeError.fromPartial(object.response.error) };\n }\n return message;\n },\n};\nfunction createBaseRefreshTokenRequest(): RefreshTokenRequest {\n return { apiSpecId: \"\", refreshToken: \"\" };\n}\nexport const RefreshTokenRequest = {\n encode(message: RefreshTokenRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.apiSpecId !== \"\") {\n writer.uint32(10).string(message.apiSpecId);\n }\n if (message.refreshToken !== \"\") {\n writer.uint32(18).string(message.refreshToken);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): RefreshTokenRequest {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRefreshTokenRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.apiSpecId = reader.string();\n break;\n case 2:\n message.refreshToken = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<RefreshTokenRequest>, I>>(object: I): RefreshTokenRequest {\n const message = createBaseRefreshTokenRequest();\n message.apiSpecId = object.apiSpecId ?? \"\";\n message.refreshToken = object.refreshToken ?? \"\";\n return message;\n },\n};\nfunction createBaseRefreshTokenResponse(): RefreshTokenResponse {\n return { response: undefined };\n}\nexport const RefreshTokenResponse = {\n encode(message: RefreshTokenResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.response?.$case === \"tokenDetails\") {\n TokenDetails.encode(message.response.tokenDetails, writer.uint32(10).fork()).ldelim();\n }\n if (message.response?.$case === \"error\") {\n TokenExchangeError.encode(message.response.error, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): RefreshTokenResponse {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRefreshTokenResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.response = { $case: \"tokenDetails\", tokenDetails: TokenDetails.decode(reader, reader.uint32()) };\n break;\n case 2:\n message.response = { $case: \"error\", error: TokenExchangeError.decode(reader, reader.uint32()) };\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<RefreshTokenResponse>, I>>(object: I): RefreshTokenResponse {\n const message = createBaseRefreshTokenResponse();\n if (object.response?.$case === \"tokenDetails\" &&\n object.response?.tokenDetails !== undefined &&\n object.response?.tokenDetails !== null) {\n message.response = {\n $case: \"tokenDetails\",\n tokenDetails: TokenDetails.fromPartial(object.response.tokenDetails),\n };\n }\n if (object.response?.$case === \"error\" && object.response?.error !== undefined && object.response?.error !== null) {\n message.response = { $case: \"error\", error: TokenExchangeError.fromPartial(object.response.error) };\n }\n return message;\n },\n};\nfunction createBasePerformApiCallRequest(): PerformApiCallRequest {\n return {\n apiSpecSetId: \"\",\n endpointRefId: \"\",\n parameters: {},\n body: new Uint8Array(),\n lensId: \"\",\n isStudioDev: false,\n cacheTtlSec: 0,\n linkedResources: [],\n };\n}\nexport const PerformApiCallRequest = {\n encode(message: PerformApiCallRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.apiSpecSetId !== \"\") {\n writer.uint32(10).string(message.apiSpecSetId);\n }\n if (message.endpointRefId !== \"\") {\n writer.uint32(18).string(message.endpointRefId);\n }\n Object.entries(message.parameters).forEach(([key, value]) => {\n PerformApiCallRequest_ParametersEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).ldelim();\n });\n if (message.body.length !== 0) {\n writer.uint32(34).bytes(message.body);\n }\n if (message.lensId !== \"\") {\n writer.uint32(42).string(message.lensId);\n }\n if (message.isStudioDev === true) {\n writer.uint32(48).bool(message.isStudioDev);\n }\n if (message.cacheTtlSec !== 0) {\n writer.uint32(56).int32(message.cacheTtlSec);\n }\n for (const v of message.linkedResources) {\n LinkedResource.encode(v!, writer.uint32(66).fork()).ldelim();\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformApiCallRequest {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformApiCallRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.apiSpecSetId = reader.string();\n break;\n case 2:\n message.endpointRefId = reader.string();\n break;\n case 3:\n const entry3 = PerformApiCallRequest_ParametersEntry.decode(reader, reader.uint32());\n if (entry3.value !== undefined) {\n message.parameters[entry3.key] = entry3.value;\n }\n break;\n case 4:\n message.body = reader.bytes();\n break;\n case 5:\n message.lensId = reader.string();\n break;\n case 6:\n message.isStudioDev = reader.bool();\n break;\n case 7:\n message.cacheTtlSec = reader.int32();\n break;\n case 8:\n message.linkedResources.push(LinkedResource.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformApiCallRequest>, I>>(object: I): PerformApiCallRequest {\n const message = createBasePerformApiCallRequest();\n message.apiSpecSetId = object.apiSpecSetId ?? \"\";\n message.endpointRefId = object.endpointRefId ?? \"\";\n message.parameters = Object.entries(object.parameters ?? {}).reduce<{\n [key: string]: string;\n }>((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = String(value);\n }\n return acc;\n }, {});\n message.body = object.body ?? new Uint8Array();\n message.lensId = object.lensId ?? \"\";\n message.isStudioDev = object.isStudioDev ?? false;\n message.cacheTtlSec = object.cacheTtlSec ?? 0;\n message.linkedResources = object.linkedResources?.map((e) => LinkedResource.fromPartial(e)) || [];\n return message;\n },\n};\nfunction createBasePerformApiCallRequest_ParametersEntry(): PerformApiCallRequest_ParametersEntry {\n return { key: \"\", value: \"\" };\n}\nexport const PerformApiCallRequest_ParametersEntry = {\n encode(message: PerformApiCallRequest_ParametersEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformApiCallRequest_ParametersEntry {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformApiCallRequest_ParametersEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.key = reader.string();\n break;\n case 2:\n message.value = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformApiCallRequest_ParametersEntry>, I>>(object: I): PerformApiCallRequest_ParametersEntry {\n const message = createBasePerformApiCallRequest_ParametersEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nfunction createBasePerformApiCallResponse(): PerformApiCallResponse {\n return {\n responseCode: ResponseCode.RESPONSE_CODE_UNSET,\n metadata: {},\n body: new Uint8Array(),\n userLocationUsed: false,\n linkedResources: [],\n };\n}\nexport const PerformApiCallResponse = {\n encode(message: PerformApiCallResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.responseCode !== ResponseCode.RESPONSE_CODE_UNSET) {\n writer.uint32(8).int32(responseCodeToNumber(message.responseCode));\n }\n Object.entries(message.metadata).forEach(([key, value]) => {\n PerformApiCallResponse_MetadataEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).ldelim();\n });\n if (message.body.length !== 0) {\n writer.uint32(26).bytes(message.body);\n }\n if (message.userLocationUsed === true) {\n writer.uint32(32).bool(message.userLocationUsed);\n }\n for (const v of message.linkedResources) {\n LinkedResource.encode(v!, writer.uint32(42).fork()).ldelim();\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformApiCallResponse {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformApiCallResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.responseCode = responseCodeFromJSON(reader.int32());\n break;\n case 2:\n const entry2 = PerformApiCallResponse_MetadataEntry.decode(reader, reader.uint32());\n if (entry2.value !== undefined) {\n message.metadata[entry2.key] = entry2.value;\n }\n break;\n case 3:\n message.body = reader.bytes();\n break;\n case 4:\n message.userLocationUsed = reader.bool();\n break;\n case 5:\n message.linkedResources.push(LinkedResource.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformApiCallResponse>, I>>(object: I): PerformApiCallResponse {\n const message = createBasePerformApiCallResponse();\n message.responseCode = object.responseCode ?? ResponseCode.RESPONSE_CODE_UNSET;\n message.metadata = Object.entries(object.metadata ?? {}).reduce<{\n [key: string]: string;\n }>((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = String(value);\n }\n return acc;\n }, {});\n message.body = object.body ?? new Uint8Array();\n message.userLocationUsed = object.userLocationUsed ?? false;\n message.linkedResources = object.linkedResources?.map((e) => LinkedResource.fromPartial(e)) || [];\n return message;\n },\n};\nfunction createBasePerformApiCallResponse_MetadataEntry(): PerformApiCallResponse_MetadataEntry {\n return { key: \"\", value: \"\" };\n}\nexport const PerformApiCallResponse_MetadataEntry = {\n encode(message: PerformApiCallResponse_MetadataEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): PerformApiCallResponse_MetadataEntry {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePerformApiCallResponse_MetadataEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.key = reader.string();\n break;\n case 2:\n message.value = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<PerformApiCallResponse_MetadataEntry>, I>>(object: I): PerformApiCallResponse_MetadataEntry {\n const message = createBasePerformApiCallResponse_MetadataEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nfunction createBaseLinkedResource(): LinkedResource {\n return { url: \"\", encryptionKey: new Uint8Array() };\n}\nexport const LinkedResource = {\n encode(message: LinkedResource, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.url !== \"\") {\n writer.uint32(10).string(message.url);\n }\n if (message.encryptionKey.length !== 0) {\n writer.uint32(18).bytes(message.encryptionKey);\n }\n return writer;\n },\n decode(input: _m0.Reader | Uint8Array, length?: number): LinkedResource {\n const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseLinkedResource();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.url = reader.string();\n break;\n case 2:\n message.encryptionKey = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromPartial<I extends Exact<DeepPartial<LinkedResource>, I>>(object: I): LinkedResource {\n const message = createBaseLinkedResource();\n message.url = object.url ?? \"\";\n message.encryptionKey = object.encryptionKey ?? new Uint8Array();\n return message;\n },\n};\nexport interface RemoteApiService {\n PerformHttpCall(request: PerformHttpCallRequest): Promise<PerformHttpCallResponse>;\n GetOAuth2Info(request: GetOAuth2InfoRequest): Promise<GetOAuth2InfoResponse>;\n PerformTokenExchange(request: PerformTokenExchangeRequest): Promise<PerformTokenExchangeResponse>;\n RefreshToken(request: RefreshTokenRequest): Promise<RefreshTokenResponse>;\n PerformApiCall(request: PerformApiCallRequest): Promise<PerformApiCallResponse>;\n}\ndeclare var self: any | undefined;\ndeclare var window: any | undefined;\ndeclare var global: any | undefined;\nvar globalThis: any = (() => {\n if (typeof globalThis !== \"undefined\")\n return globalThis;\n if (typeof self !== \"undefined\")\n return self;\n if (typeof window !== \"undefined\")\n return window;\n if (typeof global !== \"undefined\")\n return global;\n throw \"Unable to locate global object\";\n})();\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\nexport type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {\n $case: string;\n} ? {\n [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]>;\n} & {\n $case: T[\"$case\"];\n} : T extends {} ? {\n [K in keyof T]?: DeepPartial<T[K]>;\n} : Partial<T>;\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P : P & {\n [K in keyof P]: Exact<P[K], I[K]>;\n} & Record<Exclude<keyof I, KeysOfUnion<P>>, never>;\nfunction longToNumber(long: Long): number {\n if (long.gt(Number.MAX_SAFE_INTEGER)) {\n throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n }\n return long.toNumber();\n}\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long as any;\n _m0.configure();\n}\n"]}
|
|
@@ -20,10 +20,23 @@ export const defaultFetchHandlerFactory = Injectable("defaultFetchHandler", () =
|
|
|
20
20
|
// elsewhere (e.g. so that callers can omit the second argument instead of being forced to pass undefined).
|
|
21
21
|
new HandlerChainBuilder(fetch)
|
|
22
22
|
.map(createDebugHandler())
|
|
23
|
+
// The 20-second per-request timeout is pretty arbitrary, it's just set to be longer than our API gateway
|
|
24
|
+
// timeout (15s) and lower than the browsers own timeout (variable, Chrome's is 5m).
|
|
25
|
+
.map(createTimeoutHandler({ timeout: 20 * 1000 }))
|
|
23
26
|
.map(createNoCorsRetryingFetchHandler())
|
|
24
|
-
.map(createRetryingHandler(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
.map(createRetryingHandler({
|
|
28
|
+
maxRetries: 3,
|
|
29
|
+
retryPredicate: (responseOrError) => {
|
|
30
|
+
// Don't retry successful Responses or Responses with a 4xx HTTP status code (indicating a
|
|
31
|
+
// client error). Do retry all 5xx HTTP status codes.
|
|
32
|
+
if (responseOrError instanceof Response) {
|
|
33
|
+
if (responseOrError.ok)
|
|
34
|
+
return false;
|
|
35
|
+
if (responseOrError.status % 400 < 100)
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
},
|
|
40
|
+
})).handler);
|
|
28
41
|
});
|
|
29
42
|
//# sourceMappingURL=defaultFetchHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultFetchHandler.js","sourceRoot":"","sources":["../../src/handlers/defaultFetchHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC,qBAAqB,EAAE,GAAG,EAAE;IAC7E,OAAO;IACH,2FAA2F;IAC3F,wGAAwG;IACxG,2GAA2G;IAC3G,IAAI,mBAAmB,CAAiD,KAAK,CAAC;SACzE,GAAG,CAAC,kBAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"defaultFetchHandler.js","sourceRoot":"","sources":["../../src/handlers/defaultFetchHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC,qBAAqB,EAAE,GAAG,EAAE;IAC7E,OAAO;IACH,2FAA2F;IAC3F,wGAAwG;IACxG,2GAA2G;IAC3G,IAAI,mBAAmB,CAAiD,KAAK,CAAC;SACzE,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC1B,yGAAyG;QACzG,oFAAoF;SACnF,GAAG,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;SACjD,GAAG,CAAC,gCAAgC,EAAE,CAAC;SACvC,GAAG,CACA,qBAAqB,CAAC;QAClB,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC,eAAe,EAAE,EAAE;YAChC,0FAA0F;YAC1F,qDAAqD;YACrD,IAAI,eAAe,YAAY,QAAQ,EAAE;gBACrC,IAAI,eAAe,CAAC,EAAE;oBAAE,OAAO,KAAK,CAAC;gBACrC,IAAI,eAAe,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG;oBAAE,OAAO,KAAK,CAAC;aACxD;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ,CAAC,CACL,CAAC,OAAO,CAChB,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import { Injectable } from \"../dependency-injection/Injectable\";\nimport { createDebugHandler } from \"./debugHandler\";\nimport { HandlerChainBuilder } from \"./HandlerChainBuilder\";\nimport { createNoCorsRetryingFetchHandler } from \"./noCorsRetryingFetchHandler\";\nimport { createRetryingHandler } from \"./retryingHandler\";\nimport { createTimeoutHandler } from \"./timeoutHandler\";\n\nexport type FetchHandler<R = Response> = (input: RequestInfo, init?: RequestInit) => Promise<R>;\n\n/**\n * The default Fetch implementation, used to make a simple HTTP requests without any custom headers. This can be passed\n * to `HandlerChainBuilder` to form the basis for other Fetch implementations (e.g. with custom headers, which extract\n * the Response body, etc.)\n *\n * Has support for retries, client-side timeout, and navigating federated auth flows that may not support CORs requests.\n *\n * @internal\n */\n\nexport const defaultFetchHandlerFactory = Injectable(\"defaultFetchHandler\", () => {\n return (\n // Safety: We're re-typing fetch's second argument from `init?: RequestInit | undefined` to\n // `init: RequestInit | void` – this is semantically equivalent, but the void makes for nicer ergonomics\n // elsewhere (e.g. so that callers can omit the second argument instead of being forced to pass undefined).\n new HandlerChainBuilder<RequestInfo, Response, RequestInit | undefined>(fetch)\n .map(createDebugHandler())\n // The 20-second per-request timeout is pretty arbitrary, it's just set to be longer than our API gateway\n // timeout (15s) and lower than the browsers own timeout (variable, Chrome's is 5m).\n .map(createTimeoutHandler({ timeout: 20 * 1000 }))\n .map(createNoCorsRetryingFetchHandler())\n .map(\n createRetryingHandler({\n maxRetries: 3,\n retryPredicate: (responseOrError) => {\n // Don't retry successful Responses or Responses with a 4xx HTTP status code (indicating a\n // client error). Do retry all 5xx HTTP status codes.\n if (responseOrError instanceof Response) {\n if (responseOrError.ok) return false;\n if (responseOrError.status % 400 < 100) return false;\n }\n return true;\n },\n })\n ).handler\n );\n});\n"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./bootstrapCameraKit";
|
|
|
6
6
|
export { extensionRequestContext } from "./extensions/extensionRequestContext";
|
|
7
7
|
export { LensSource, LensSources, lensSourcesFactory } from "./extensions/LensSources";
|
|
8
8
|
export { Uri, UriRequest, UriResponse, UriCancelRequest, UriHandler, UriHandlers, uriHandlersFactory, } from "./extensions/UriHandlers";
|
|
9
|
+
export { RemoteApiStatus, RemoteApiRequest, RemoteApiRequestHandler, RemoteApiResponse, RemoteApiService, RemoteApiServices, remoteApiServicesFactory, } from "./extensions/RemoteApiServices";
|
|
9
10
|
export { CameraKit, CreateSessionOptions, LensMetricsEvents } from "./CameraKit";
|
|
10
11
|
export { LensView } from "./metrics/reporters/reportLensView";
|
|
11
12
|
export { LensWait } from "./metrics/reporters/reportLensWait";
|
package/lib/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./bootstrapCameraKit";
|
|
|
9
9
|
export { extensionRequestContext } from "./extensions/extensionRequestContext";
|
|
10
10
|
export { LensSources, lensSourcesFactory } from "./extensions/LensSources";
|
|
11
11
|
export { uriHandlersFactory, } from "./extensions/UriHandlers";
|
|
12
|
+
export { remoteApiServicesFactory, } from "./extensions/RemoteApiServices";
|
|
12
13
|
export { CameraKit } from "./CameraKit";
|
|
13
14
|
export { cameraKitUserAgent } from "./common/cameraKitUserAgent";
|
|
14
15
|
export { toPublicLens } from "./lens/Lens";
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,eAAe;GAC7C,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;AAGxD,OAAO,EAA2D,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EACH,uBAAuB,GAG1B,MAAM,4CAA4C,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAc,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAOH,kBAAkB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA2C,MAAM,aAAa,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAQ,YAAY,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAe,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAwB,MAAM,sCAAsC,CAAC;AACxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC","sourcesContent":["import environment from \"./environment.json\";\nimport lensCoreWasm from \"./lensCoreWasmVersions.json\";\nconsole.info(`SDK: ${environment.PACKAGE_VERSION} \\\n(${lensCoreWasm.version}/${lensCoreWasm.buildNumber})`);\n\nexport { Keyboard, KeyboardEvents } from \"./session/LensKeyboard\";\nexport { CameraKitConfiguration, CameraKitBootstrapConfiguration, configurationToken } from \"./configuration\";\nexport { getRequiredBootstrapURLs } from \"./lens-core-module/loader/lensCoreFactory\";\nexport {\n estimateLensPerformance,\n EstimatedLensPerformance,\n LensPerformanceCluster,\n} from \"./benchmark/estimateLensPerformanceCluster\";\nexport * from \"./bootstrapCameraKit\";\nexport { extensionRequestContext } from \"./extensions/extensionRequestContext\";\nexport { LensSource, LensSources, lensSourcesFactory } from \"./extensions/LensSources\";\nexport {\n Uri,\n UriRequest,\n UriResponse,\n UriCancelRequest,\n UriHandler,\n UriHandlers,\n uriHandlersFactory,\n} from \"./extensions/UriHandlers\";\nexport { CameraKit, CreateSessionOptions, LensMetricsEvents } from \"./CameraKit\";\nexport { LensView } from \"./metrics/reporters/reportLensView\";\nexport { LensWait } from \"./metrics/reporters/reportLensWait\";\nexport { cameraKitUserAgent, CameraKitUserAgent } from \"./common/cameraKitUserAgent\";\nexport { Lens, toPublicLens, Snapcode, Preview } from \"./lens/Lens\";\nexport { AssetTiming, LensRepository } from \"./lens/LensRepository\";\nexport { LensLaunchParams } from \"./lens/LensLaunchParams\";\nexport { AssetLoader } from \"./lens/assets/LensAssetRepository\";\nexport { remoteMediaAssetLoaderFactory } from \"./lens/assets/remoteMediaAssetLoaderFactory\";\nexport * from \"./media-sources/CameraKitSource\";\nexport * from \"./media-sources/MediaStreamSource\";\nexport * from \"./media-sources/FunctionSource\";\nexport * from \"./media-sources/VideoSource\";\nexport * from \"./media-sources/ImageSource\";\nexport * from \"./session/CameraKitSession\";\nexport { CameraKitSessionEvents, CameraKitSessionEventListener } from \"./session/CameraKitSessionEvents\";\nexport { Injectable } from \"./dependency-injection/Injectable\";\nexport { PartialContainer } from \"./dependency-injection/PartialContainer\";\nexport * from \"./transforms\";\nexport * from \"./namedErrors\";\nexport { LensPerformanceMeasurement, ComputedFrameMetrics } from \"./session/LensPerformanceMeasurement\";\nexport { LensPerformanceMetrics } from \"./session/LensPerformanceMetrics\";\nexport { TypedCustomEvent } from \"./events/TypedCustomEvent\";\nexport { TypedEventTarget } from \"./events/TypedEventTarget\";\nexport { namedError } from \"./namedErrors\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,eAAe;GAC7C,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;AAGxD,OAAO,EAA2D,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EACH,uBAAuB,GAG1B,MAAM,4CAA4C,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAc,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAOH,kBAAkB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAOH,wBAAwB,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAA2C,MAAM,aAAa,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAQ,YAAY,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAe,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAwB,MAAM,sCAAsC,CAAC;AACxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC","sourcesContent":["import environment from \"./environment.json\";\nimport lensCoreWasm from \"./lensCoreWasmVersions.json\";\nconsole.info(`SDK: ${environment.PACKAGE_VERSION} \\\n(${lensCoreWasm.version}/${lensCoreWasm.buildNumber})`);\n\nexport { Keyboard, KeyboardEvents } from \"./session/LensKeyboard\";\nexport { CameraKitConfiguration, CameraKitBootstrapConfiguration, configurationToken } from \"./configuration\";\nexport { getRequiredBootstrapURLs } from \"./lens-core-module/loader/lensCoreFactory\";\nexport {\n estimateLensPerformance,\n EstimatedLensPerformance,\n LensPerformanceCluster,\n} from \"./benchmark/estimateLensPerformanceCluster\";\nexport * from \"./bootstrapCameraKit\";\nexport { extensionRequestContext } from \"./extensions/extensionRequestContext\";\nexport { LensSource, LensSources, lensSourcesFactory } from \"./extensions/LensSources\";\nexport {\n Uri,\n UriRequest,\n UriResponse,\n UriCancelRequest,\n UriHandler,\n UriHandlers,\n uriHandlersFactory,\n} from \"./extensions/UriHandlers\";\nexport {\n RemoteApiStatus,\n RemoteApiRequest,\n RemoteApiRequestHandler,\n RemoteApiResponse,\n RemoteApiService,\n RemoteApiServices,\n remoteApiServicesFactory,\n} from \"./extensions/RemoteApiServices\";\nexport { CameraKit, CreateSessionOptions, LensMetricsEvents } from \"./CameraKit\";\nexport { LensView } from \"./metrics/reporters/reportLensView\";\nexport { LensWait } from \"./metrics/reporters/reportLensWait\";\nexport { cameraKitUserAgent, CameraKitUserAgent } from \"./common/cameraKitUserAgent\";\nexport { Lens, toPublicLens, Snapcode, Preview } from \"./lens/Lens\";\nexport { AssetTiming, LensRepository } from \"./lens/LensRepository\";\nexport { LensLaunchParams } from \"./lens/LensLaunchParams\";\nexport { AssetLoader } from \"./lens/assets/LensAssetRepository\";\nexport { remoteMediaAssetLoaderFactory } from \"./lens/assets/remoteMediaAssetLoaderFactory\";\nexport * from \"./media-sources/CameraKitSource\";\nexport * from \"./media-sources/MediaStreamSource\";\nexport * from \"./media-sources/FunctionSource\";\nexport * from \"./media-sources/VideoSource\";\nexport * from \"./media-sources/ImageSource\";\nexport * from \"./session/CameraKitSession\";\nexport { CameraKitSessionEvents, CameraKitSessionEventListener } from \"./session/CameraKitSessionEvents\";\nexport { Injectable } from \"./dependency-injection/Injectable\";\nexport { PartialContainer } from \"./dependency-injection/PartialContainer\";\nexport * from \"./transforms\";\nexport * from \"./namedErrors\";\nexport { LensPerformanceMeasurement, ComputedFrameMetrics } from \"./session/LensPerformanceMeasurement\";\nexport { LensPerformanceMetrics } from \"./session/LensPerformanceMetrics\";\nexport { TypedCustomEvent } from \"./events/TypedCustomEvent\";\nexport { TypedEventTarget } from \"./events/TypedEventTarget\";\nexport { namedError } from \"./namedErrors\";\n"]}
|
package/lib/legal/legalState.js
CHANGED
|
@@ -123,7 +123,7 @@ export const legalStateFactory = Injectable("legalState", [remoteConfigurationFa
|
|
|
123
123
|
logger.error(error);
|
|
124
124
|
return of(defaultLegalPrompt);
|
|
125
125
|
})),
|
|
126
|
-
initConfig: remoteConfig.
|
|
126
|
+
initConfig: remoteConfig.getInitializationConfig().pipe(catchError((error) => {
|
|
127
127
|
logger.error(error);
|
|
128
128
|
return of(defaultInitConfig);
|
|
129
129
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legalState.js","sourceRoot":"","sources":["../../src/legal/legalState.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defineAction,\n defineActions,\n defineState,\n defineStates,\n dispatch,\n forActions,\n inStates,\n StateMachine,\n} from \"@snap/state-management\";\nimport { catchError, forkJoin, from, map, merge, of, switchMap } from \"rxjs\";\nimport { Injectable } from \"../dependency-injection/Injectable\";\nimport {\n LegalDocument,\n LegalDocument_Type,\n LegalPrompt as LegalPromptProto,\n} from \"../generated-proto/pb_schema/camera_kit/v3/legal_prompt\";\nimport { ConfigResult } from \"../generated-proto/pb_schema/cdp/cof/config_result\";\nimport { getLogger } from \"../logger/logger\";\nimport { ExpiringPersistence } from \"../persistence/ExpiringPersistence\";\nimport { IndexedDBPersistence } from \"../persistence/IndexedDBPersistence\";\nimport { RemoteConfiguration, remoteConfigurationFactory } from \"../remote-configuration/remoteConfiguration\";\nimport { GetInitializationConfigResponse } from \"../generated-proto/pb_schema/camera_kit/v3/service\";\nimport { LegalPromptFactory, legalPromptFactory } from \"./legalPrompt\";\n\nconst logger = getLogger(\"LegalState\");\n\ntype SupportedDocumentType =\n | LegalDocument_Type.PRIVACY_POLICY\n | LegalDocument_Type.TERMS_OF_SERVICE\n | LegalDocument_Type.LEARN_MORE;\n\n/**\n * We store a hash of the last accepted ToS content. This is how we determine if the user previously accepted the\n * relevant ToS.\n *\n * ToS acceptance is only valid for 12 hours. That is, if legal status is checked and the last acceptance occurred more\n * than 12 hours ago, the user must be prompted to accept again.\n */\nconst tosContentHashExpiry = 12 * 60 * 60;\nconst tosContentHashKey = \"lastAcceptedTosContentHash\";\n\nconst createLegalState = () => {\n const states = defineStates(defineState(\"unknown\")(), defineState(\"accepted\")(), defineState(\"rejected\")());\n\n const actions = defineActions(\n defineAction(\"requestLegalPrompt\")(),\n defineAction(\"accept\")<string>(),\n defineAction(\"reject\")<string>()\n );\n\n return new StateMachine(actions, states, states.unknown(), (actions) => {\n return merge(\n actions.pipe(\n inStates(\"unknown\"),\n forActions(\"accept\"),\n map(() => states.accepted())\n ),\n actions.pipe(\n inStates(\"unknown\"),\n forActions(\"reject\"),\n map(() => states.rejected())\n ),\n\n // We don't treat \"rejected\" as a terminal state -- if we get another request to display the legal prompt,\n // even though we're in the rejected state, we'll transition back to unknown and the prompt will be shown.\n //\n // Conversely, we do treat \"accepted\" as a terminal state -- we will not transition back to unknown or\n // show the legal prompt if we're already in accepted state, even if we get a request to display the prompt.\n actions.pipe(\n inStates(\"rejected\"),\n forActions(\"requestLegalPrompt\"),\n map(() => states.unknown())\n )\n );\n });\n};\n\nconst defaultLegalDocumentDate = new Date(\"2021-09-30T00:00:00+00:00\");\nconst defaultLegalPrompt = LegalPromptProto.fromPartial({\n documents: [\n LegalDocument.fromPartial({\n type: LegalDocument_Type.PRIVACY_POLICY,\n webUrl: \"https://values.snap.com/privacy/privacy-policy\",\n version: \"1\",\n timestamp: defaultLegalDocumentDate,\n }),\n LegalDocument.fromPartial({\n type: LegalDocument_Type.TERMS_OF_SERVICE,\n webUrl: \"https://snap.com/terms\",\n version: \"1\",\n timestamp: defaultLegalDocumentDate,\n }),\n LegalDocument.fromPartial({\n type: LegalDocument_Type.LEARN_MORE,\n webUrl: \"https://support.snapchat.com/article/camera-information-use\",\n version: \"1\",\n timestamp: defaultLegalDocumentDate,\n }),\n ],\n // By default, we adopt a fail-open approach, which means that if COF fails,\n // we do not display ToS for the following reasons:\n // 1. It provides better experince for big partners with ToS disabled\n // 2. It has minimal risk\n disabled: true,\n});\n\nconst defaultInitConfig = GetInitializationConfigResponse.fromPartial({});\n\nconst hasAnyValue = (c: ConfigResult): c is ConfigResult & { value: { anyValue: { value: Uint8Array } } } => {\n return c.value?.anyValue?.value instanceof Uint8Array;\n};\n\nconst getDocumentOrDefault =\n (documents: LegalDocument[]) =>\n <T extends SupportedDocumentType>(type: T): LegalDocument & { type: T } => {\n return (documents.find((d) => d.type === type) ??\n defaultLegalPrompt.documents.find((d) => d.type === type)!) as LegalDocument & { type: T };\n };\n\nexport type LegalState = ReturnType<typeof createLegalState>;\n\n/**\n * We maintain the state of the user's acceptance of Snap's various legal documents. Other components may require that\n * the legal state be \"accepted\" before proceeding (e.g. to apply a lens).\n *\n * On page load, the legal state starts as \"unknown.\" If a request is made to determine the legal state, the following\n * business logic is implemented:\n *\n * 1. Download remote COF config value containing the legal documents + a `disabled` field to optionally skip the legal\n * requirement.\n * 2. Check for a `lastAcceptedTosContentHash` stored in IndexedDB.\n * 3. Prompt the user to accept/reject the legal documents.\n *\n * ┌────────────────────────────────────────────────────────┐\n * │ COF config value includes \"disabled: true\" │\n * └────────────────────────────────────────────────────────┘\n * │\n * │\n * ┌────────No────────────┴────────────Yes──────────────────┐\n * │ │\n * ▼ │\n * ┌────────────────────────────────────┐ ▼\n * │\"lastAcceptedTosContentHash\" exists │ ┌────────────┐\n * └────────────────────────────────────┘ │ Skip ToS │\n * │ └────────────┘\n * │ ▲\n * ┌─────────────No───┴───────Yes────────────┐ │\n * │ │ │\n * │ │ │\n * ▼ ▼ │\n * ┌────────────┐ ┌────────────────────────────────────────┐ │\n * │ Show ToS │ │ Hash of ToS content from COF matches │ │\n * └────────────┘ │ \"lastAcceptedTosContentHash\" │ │\n * ▲ └────────────────────────────────────────┘ │\n * │ │ │\n * │ │ │\n * └──────────────────No─────────────────────┴───────────────────Yes───────────┘\n *\n * @internal\n */\nexport const legalStateFactory = Injectable(\n \"legalState\",\n [remoteConfigurationFactory.token, legalPromptFactory.token] as const,\n (remoteConfig: RemoteConfiguration, legalPrompt: LegalPromptFactory): LegalState => {\n const persistance = new ExpiringPersistence<string>(\n () => tosContentHashExpiry,\n new IndexedDBPersistence({ databaseName: \"Legal\" })\n );\n const getLastAcceptedTosContentHash = () =>\n from(persistance.retrieve(tosContentHashKey).catch((error) => logger.warn(error)));\n\n const setLastAcceptedTosContentHash = (hash: string) =>\n persistance.store(tosContentHashKey, hash).catch((error) => logger.warn(error));\n\n const legalState = createLegalState();\n\n legalState.events\n .pipe(\n inStates(\"unknown\"),\n forActions(\"requestLegalPrompt\"),\n switchMap(() =>\n forkJoin({\n cofConfig: remoteConfig.get(\"CAMERA_KIT_LEGAL_PROMPT\").pipe(\n map((configResults) => {\n const config = configResults.find(hasAnyValue);\n if (!config) return defaultLegalPrompt;\n return LegalPromptProto.decode(config.value.anyValue.value);\n }),\n catchError((error) => {\n logger.error(error);\n return of(defaultLegalPrompt);\n })\n ),\n initConfig: remoteConfig.getIntializationConfig().pipe(\n catchError((error) => {\n logger.error(error);\n return of(defaultInitConfig);\n })\n ),\n })\n ),\n switchMap(({ cofConfig, initConfig }) => {\n // NOTE: Currently, we check two sources to determine whether ToS is disabled or not:\n // COF and initConfig. Legal document links are pulled only from COF (or defaults),\n // because initConfig has not been implemented yet. In the future, we may choose\n // to exclusively use initConfig, which could incorporate the COF call internally:\n // https://jira.sc-corp.net/browse/CAMKIT-4791\n\n if (initConfig.legalPrompt?.disabled) {\n return of(legalState.actions.accept(\"disabled\"));\n }\n\n if (cofConfig.disabled) {\n return of(legalState.actions.accept(\"disabled\"));\n }\n\n const documentOfType = getDocumentOrDefault(cofConfig.documents);\n const prompt = legalPrompt(\n documentOfType(LegalDocument_Type.PRIVACY_POLICY),\n documentOfType(LegalDocument_Type.TERMS_OF_SERVICE),\n documentOfType(LegalDocument_Type.LEARN_MORE),\n initConfig.childrenProtectionActRestricted\n );\n\n return getLastAcceptedTosContentHash().pipe(\n switchMap((lastAcceptedTosContentHash) => {\n if (prompt.contentHash === lastAcceptedTosContentHash) return of(true);\n\n // Delegate prompting the end-user to accept/reject the legal documents. This returns with\n // a Promise<boolean> indicating accept/reject.\n return prompt.show();\n }),\n map((didAccept) => {\n if (!didAccept) return legalState.actions.reject(prompt.contentHash);\n setLastAcceptedTosContentHash(prompt.contentHash);\n return legalState.actions.accept(prompt.contentHash);\n })\n );\n }),\n dispatch(legalState)\n )\n .subscribe({\n error: logger.error,\n });\n\n return legalState;\n }\n);\n"]}
|
|
1
|
+
{"version":3,"file":"legalState.js","sourceRoot":"","sources":["../../src/legal/legalState.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defineAction,\n defineActions,\n defineState,\n defineStates,\n dispatch,\n forActions,\n inStates,\n StateMachine,\n} from \"@snap/state-management\";\nimport { catchError, forkJoin, from, map, merge, of, switchMap } from \"rxjs\";\nimport { Injectable } from \"../dependency-injection/Injectable\";\nimport {\n LegalDocument,\n LegalDocument_Type,\n LegalPrompt as LegalPromptProto,\n} from \"../generated-proto/pb_schema/camera_kit/v3/legal_prompt\";\nimport { ConfigResult } from \"../generated-proto/pb_schema/cdp/cof/config_result\";\nimport { getLogger } from \"../logger/logger\";\nimport { ExpiringPersistence } from \"../persistence/ExpiringPersistence\";\nimport { IndexedDBPersistence } from \"../persistence/IndexedDBPersistence\";\nimport { RemoteConfiguration, remoteConfigurationFactory } from \"../remote-configuration/remoteConfiguration\";\nimport { GetInitializationConfigResponse } from \"../generated-proto/pb_schema/camera_kit/v3/service\";\nimport { LegalPromptFactory, legalPromptFactory } from \"./legalPrompt\";\n\nconst logger = getLogger(\"LegalState\");\n\ntype SupportedDocumentType =\n | LegalDocument_Type.PRIVACY_POLICY\n | LegalDocument_Type.TERMS_OF_SERVICE\n | LegalDocument_Type.LEARN_MORE;\n\n/**\n * We store a hash of the last accepted ToS content. This is how we determine if the user previously accepted the\n * relevant ToS.\n *\n * ToS acceptance is only valid for 12 hours. That is, if legal status is checked and the last acceptance occurred more\n * than 12 hours ago, the user must be prompted to accept again.\n */\nconst tosContentHashExpiry = 12 * 60 * 60;\nconst tosContentHashKey = \"lastAcceptedTosContentHash\";\n\nconst createLegalState = () => {\n const states = defineStates(defineState(\"unknown\")(), defineState(\"accepted\")(), defineState(\"rejected\")());\n\n const actions = defineActions(\n defineAction(\"requestLegalPrompt\")(),\n defineAction(\"accept\")<string>(),\n defineAction(\"reject\")<string>()\n );\n\n return new StateMachine(actions, states, states.unknown(), (actions) => {\n return merge(\n actions.pipe(\n inStates(\"unknown\"),\n forActions(\"accept\"),\n map(() => states.accepted())\n ),\n actions.pipe(\n inStates(\"unknown\"),\n forActions(\"reject\"),\n map(() => states.rejected())\n ),\n\n // We don't treat \"rejected\" as a terminal state -- if we get another request to display the legal prompt,\n // even though we're in the rejected state, we'll transition back to unknown and the prompt will be shown.\n //\n // Conversely, we do treat \"accepted\" as a terminal state -- we will not transition back to unknown or\n // show the legal prompt if we're already in accepted state, even if we get a request to display the prompt.\n actions.pipe(\n inStates(\"rejected\"),\n forActions(\"requestLegalPrompt\"),\n map(() => states.unknown())\n )\n );\n });\n};\n\nconst defaultLegalDocumentDate = new Date(\"2021-09-30T00:00:00+00:00\");\nconst defaultLegalPrompt = LegalPromptProto.fromPartial({\n documents: [\n LegalDocument.fromPartial({\n type: LegalDocument_Type.PRIVACY_POLICY,\n webUrl: \"https://values.snap.com/privacy/privacy-policy\",\n version: \"1\",\n timestamp: defaultLegalDocumentDate,\n }),\n LegalDocument.fromPartial({\n type: LegalDocument_Type.TERMS_OF_SERVICE,\n webUrl: \"https://snap.com/terms\",\n version: \"1\",\n timestamp: defaultLegalDocumentDate,\n }),\n LegalDocument.fromPartial({\n type: LegalDocument_Type.LEARN_MORE,\n webUrl: \"https://support.snapchat.com/article/camera-information-use\",\n version: \"1\",\n timestamp: defaultLegalDocumentDate,\n }),\n ],\n // By default, we adopt a fail-open approach, which means that if COF fails,\n // we do not display ToS for the following reasons:\n // 1. It provides better experince for big partners with ToS disabled\n // 2. It has minimal risk\n disabled: true,\n});\n\nconst defaultInitConfig = GetInitializationConfigResponse.fromPartial({});\n\nconst hasAnyValue = (c: ConfigResult): c is ConfigResult & { value: { anyValue: { value: Uint8Array } } } => {\n return c.value?.anyValue?.value instanceof Uint8Array;\n};\n\nconst getDocumentOrDefault =\n (documents: LegalDocument[]) =>\n <T extends SupportedDocumentType>(type: T): LegalDocument & { type: T } => {\n return (documents.find((d) => d.type === type) ??\n defaultLegalPrompt.documents.find((d) => d.type === type)!) as LegalDocument & { type: T };\n };\n\nexport type LegalState = ReturnType<typeof createLegalState>;\n\n/**\n * We maintain the state of the user's acceptance of Snap's various legal documents. Other components may require that\n * the legal state be \"accepted\" before proceeding (e.g. to apply a lens).\n *\n * On page load, the legal state starts as \"unknown.\" If a request is made to determine the legal state, the following\n * business logic is implemented:\n *\n * 1. Download remote COF config value containing the legal documents + a `disabled` field to optionally skip the legal\n * requirement.\n * 2. Check for a `lastAcceptedTosContentHash` stored in IndexedDB.\n * 3. Prompt the user to accept/reject the legal documents.\n *\n * ┌────────────────────────────────────────────────────────┐\n * │ COF config value includes \"disabled: true\" │\n * └────────────────────────────────────────────────────────┘\n * │\n * │\n * ┌────────No────────────┴────────────Yes──────────────────┐\n * │ │\n * ▼ │\n * ┌────────────────────────────────────┐ ▼\n * │\"lastAcceptedTosContentHash\" exists │ ┌────────────┐\n * └────────────────────────────────────┘ │ Skip ToS │\n * │ └────────────┘\n * │ ▲\n * ┌─────────────No───┴───────Yes────────────┐ │\n * │ │ │\n * │ │ │\n * ▼ ▼ │\n * ┌────────────┐ ┌────────────────────────────────────────┐ │\n * │ Show ToS │ │ Hash of ToS content from COF matches │ │\n * └────────────┘ │ \"lastAcceptedTosContentHash\" │ │\n * ▲ └────────────────────────────────────────┘ │\n * │ │ │\n * │ │ │\n * └──────────────────No─────────────────────┴───────────────────Yes───────────┘\n *\n * @internal\n */\nexport const legalStateFactory = Injectable(\n \"legalState\",\n [remoteConfigurationFactory.token, legalPromptFactory.token] as const,\n (remoteConfig: RemoteConfiguration, legalPrompt: LegalPromptFactory): LegalState => {\n const persistance = new ExpiringPersistence<string>(\n () => tosContentHashExpiry,\n new IndexedDBPersistence({ databaseName: \"Legal\" })\n );\n const getLastAcceptedTosContentHash = () =>\n from(persistance.retrieve(tosContentHashKey).catch((error) => logger.warn(error)));\n\n const setLastAcceptedTosContentHash = (hash: string) =>\n persistance.store(tosContentHashKey, hash).catch((error) => logger.warn(error));\n\n const legalState = createLegalState();\n\n legalState.events\n .pipe(\n inStates(\"unknown\"),\n forActions(\"requestLegalPrompt\"),\n switchMap(() =>\n forkJoin({\n cofConfig: remoteConfig.get(\"CAMERA_KIT_LEGAL_PROMPT\").pipe(\n map((configResults) => {\n const config = configResults.find(hasAnyValue);\n if (!config) return defaultLegalPrompt;\n return LegalPromptProto.decode(config.value.anyValue.value);\n }),\n catchError((error) => {\n logger.error(error);\n return of(defaultLegalPrompt);\n })\n ),\n initConfig: remoteConfig.getInitializationConfig().pipe(\n catchError((error) => {\n logger.error(error);\n return of(defaultInitConfig);\n })\n ),\n })\n ),\n switchMap(({ cofConfig, initConfig }) => {\n // NOTE: Currently, we check two sources to determine whether ToS is disabled or not:\n // COF and initConfig. Legal document links are pulled only from COF (or defaults),\n // because initConfig has not been implemented yet. In the future, we may choose\n // to exclusively use initConfig, which could incorporate the COF call internally:\n // https://jira.sc-corp.net/browse/CAMKIT-4791\n\n if (initConfig.legalPrompt?.disabled) {\n return of(legalState.actions.accept(\"disabled\"));\n }\n\n if (cofConfig.disabled) {\n return of(legalState.actions.accept(\"disabled\"));\n }\n\n const documentOfType = getDocumentOrDefault(cofConfig.documents);\n const prompt = legalPrompt(\n documentOfType(LegalDocument_Type.PRIVACY_POLICY),\n documentOfType(LegalDocument_Type.TERMS_OF_SERVICE),\n documentOfType(LegalDocument_Type.LEARN_MORE),\n initConfig.childrenProtectionActRestricted\n );\n\n return getLastAcceptedTosContentHash().pipe(\n switchMap((lastAcceptedTosContentHash) => {\n if (prompt.contentHash === lastAcceptedTosContentHash) return of(true);\n\n // Delegate prompting the end-user to accept/reject the legal documents. This returns with\n // a Promise<boolean> indicating accept/reject.\n return prompt.show();\n }),\n map((didAccept) => {\n if (!didAccept) return legalState.actions.reject(prompt.contentHash);\n setLastAcceptedTosContentHash(prompt.contentHash);\n return legalState.actions.accept(prompt.contentHash);\n })\n );\n }),\n dispatch(legalState)\n )\n .subscribe({\n error: logger.error,\n });\n\n return legalState;\n }\n);\n"]}
|
package/lib/lens/lensHttpUtil.js
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
+
import { encodeKnownAnyJson } from "../common/any";
|
|
2
3
|
import { isGetGroupResponse, isLensProto } from "./Lens";
|
|
3
4
|
const relativePath = "/com.snap.camerakit.v3.Lenses";
|
|
5
|
+
function fixAny(lens) {
|
|
6
|
+
// The Lens is serialized into JSON by the CameraKit backend, which is vulnerable
|
|
7
|
+
// to serialization discrepancies between the backend and ts-proto generated serializers.
|
|
8
|
+
// See packages/web-sdk/src/common/any.ts
|
|
9
|
+
const featureMetadata = lens.featureMetadata.reduce((fixedAnys, anyToFix) => {
|
|
10
|
+
// Safety: anyToFix is actually AnyJson, due to how our backend serializes it
|
|
11
|
+
const fixedAny = encodeKnownAnyJson(anyToFix);
|
|
12
|
+
return fixedAny ? [...fixedAnys, fixedAny] : fixedAnys;
|
|
13
|
+
}, []);
|
|
14
|
+
return Object.assign(Object.assign({}, lens), { featureMetadata });
|
|
15
|
+
}
|
|
4
16
|
function getRequestId(res) {
|
|
5
17
|
return res.headers.get("x-request-id");
|
|
6
18
|
}
|
|
@@ -10,10 +22,15 @@ export function retrieveCameraKitLens(httpClient, lensId, groupId, apiHostname)
|
|
|
10
22
|
const response = yield httpClient(url, { credentials: "include" });
|
|
11
23
|
const body = yield response.json();
|
|
12
24
|
const lens = body.lens;
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error(`Cannot load lens ${lensId} in group ${groupId}. GetGroupLens responded with status ` +
|
|
27
|
+
`${response.status} and body:\n\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`);
|
|
28
|
+
}
|
|
13
29
|
if (!isLensProto(lens)) {
|
|
14
|
-
throw new Error(`
|
|
30
|
+
throw new Error(`Cannot load lens ${lensId} in group ${groupId}. The response was not a Lens:` +
|
|
31
|
+
`\n\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`);
|
|
15
32
|
}
|
|
16
|
-
return lens;
|
|
33
|
+
return fixAny(lens);
|
|
17
34
|
});
|
|
18
35
|
}
|
|
19
36
|
export function retrieveCameraKitLensGroup(httpClient, groupId, apiHostname) {
|
|
@@ -21,10 +38,15 @@ export function retrieveCameraKitLensGroup(httpClient, groupId, apiHostname) {
|
|
|
21
38
|
const url = `https://${apiHostname}${relativePath}/groups/${groupId}`;
|
|
22
39
|
const response = yield httpClient(url, { credentials: "include" });
|
|
23
40
|
const body = yield response.json();
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`Cannot load lens group ${groupId}. GetGroup responded with status ` +
|
|
43
|
+
`${response.status} and body:\n\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`);
|
|
44
|
+
}
|
|
24
45
|
if (!isGetGroupResponse(body)) {
|
|
25
|
-
throw new Error(`
|
|
46
|
+
throw new Error(`Cannot load lens group ${groupId}. The response was not a LensGroup:` +
|
|
47
|
+
`\n\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`);
|
|
26
48
|
}
|
|
27
|
-
return body.lenses;
|
|
49
|
+
return body.lenses.map(fixAny);
|
|
28
50
|
});
|
|
29
51
|
}
|
|
30
52
|
//# sourceMappingURL=lensHttpUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lensHttpUtil.js","sourceRoot":"","sources":["../../src/lens/lensHttpUtil.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"lensHttpUtil.js","sourceRoot":"","sources":["../../src/lens/lensHttpUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { AnyJson, encodeKnownAnyJson } from \"../common/any\";\nimport { Any } from \"../generated-proto/pb_schema/google/protobuf/any\";\nimport { CameraKitApiHostname } from \"../configuration\";\nimport { FetchHandler } from \"../handlers/defaultFetchHandler\";\nimport { isGetGroupResponse, isLensProto, LensProto } from \"./Lens\";\n\nconst relativePath = \"/com.snap.camerakit.v3.Lenses\";\n\nfunction fixAny(lens: LensProto): LensProto {\n // The Lens is serialized into JSON by the CameraKit backend, which is vulnerable\n // to serialization discrepancies between the backend and ts-proto generated serializers.\n // See packages/web-sdk/src/common/any.ts\n const featureMetadata = lens.featureMetadata.reduce((fixedAnys, anyToFix) => {\n // Safety: anyToFix is actually AnyJson, due to how our backend serializes it\n const fixedAny = encodeKnownAnyJson(anyToFix as unknown as AnyJson);\n return fixedAny ? [...fixedAnys, fixedAny] : fixedAnys;\n }, [] as Any[]);\n\n return {\n ...lens,\n featureMetadata,\n };\n}\n\nfunction getRequestId(res: Response) {\n return res.headers.get(\"x-request-id\");\n}\n\nexport async function retrieveCameraKitLens(\n httpClient: FetchHandler,\n lensId: string,\n groupId: string,\n apiHostname: CameraKitApiHostname\n): Promise<LensProto> {\n const url = `https://${apiHostname}${relativePath}/groups/${groupId}/lenses/${lensId}`;\n const response = await httpClient(url, { credentials: \"include\" });\n const body = await response.json();\n const lens = body.lens;\n\n if (!response.ok) {\n throw new Error(\n `Cannot load lens ${lensId} in group ${groupId}. GetGroupLens responded with status ` +\n `${response.status} and body:\\n\\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`\n );\n }\n\n if (!isLensProto(lens)) {\n throw new Error(\n `Cannot load lens ${lensId} in group ${groupId}. The response was not a Lens:` +\n `\\n\\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`\n );\n }\n return fixAny(lens);\n}\n\nexport async function retrieveCameraKitLensGroup(\n httpClient: FetchHandler,\n groupId: string,\n apiHostname: CameraKitApiHostname\n): Promise<LensProto[]> {\n const url = `https://${apiHostname}${relativePath}/groups/${groupId}`;\n const response = await httpClient(url, { credentials: \"include\" });\n const body = await response.json();\n\n if (!response.ok) {\n throw new Error(\n `Cannot load lens group ${groupId}. GetGroup responded with status ` +\n `${response.status} and body:\\n\\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`\n );\n }\n\n if (!isGetGroupResponse(body)) {\n throw new Error(\n `Cannot load lens group ${groupId}. The response was not a LensGroup:` +\n `\\n\\t${JSON.stringify(body)} for requestId ${getRequestId(response)}`\n );\n }\n return body.lenses.map(fixAny);\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="webxr" />
|
|
1
2
|
/// <reference types="dom-webcodecs" />
|
|
2
3
|
export type DefaultEventHandler = (...data: any[]) => void;
|
|
3
4
|
export type DefaultErrorHandler = (err: LensCoreError) => void;
|
|
@@ -47,12 +48,17 @@ export interface ClearAllLensesInput {
|
|
|
47
48
|
export interface OnFrameProcessedParam {
|
|
48
49
|
processingTimeMs: number;
|
|
49
50
|
}
|
|
51
|
+
export interface XrCapabilities {
|
|
52
|
+
sixDofSupported: boolean;
|
|
53
|
+
sceneDepthSupported: boolean;
|
|
54
|
+
}
|
|
50
55
|
export interface InitializeInput {
|
|
51
56
|
canvas?: HTMLCanvasElement | string;
|
|
52
57
|
outputResolution?: Dimensions;
|
|
53
58
|
showFpsPanel?: boolean;
|
|
54
59
|
shouldUseWorker?: boolean;
|
|
55
60
|
onFrameProcessed?: (arg: OnFrameProcessedParam) => void;
|
|
61
|
+
xrCapabilities?: XrCapabilities;
|
|
56
62
|
onFailure?: DefaultErrorHandler;
|
|
57
63
|
onSuccess?: DefaultEventHandler;
|
|
58
64
|
exceptionHandler?: (error: LensCoreError) => void;
|
|
@@ -174,7 +180,7 @@ export interface AssetDescriptor {
|
|
|
174
180
|
assetType: AssetType;
|
|
175
181
|
avatarId?: string;
|
|
176
182
|
effectId?: string;
|
|
177
|
-
encryptionKey?:
|
|
183
|
+
encryptionKey?: ArrayBuffer;
|
|
178
184
|
}
|
|
179
185
|
export interface AssetUploadDescriptor {
|
|
180
186
|
requestId: number;
|
|
@@ -182,8 +188,8 @@ export interface AssetUploadDescriptor {
|
|
|
182
188
|
assetType: AssetType;
|
|
183
189
|
effectId: string;
|
|
184
190
|
assetBuffer: ArrayBuffer;
|
|
185
|
-
encryptionKey?:
|
|
186
|
-
encryptionIv?:
|
|
191
|
+
encryptionKey?: ArrayBuffer;
|
|
192
|
+
encryptionIv?: ArrayBuffer;
|
|
187
193
|
assetBatchId?: string;
|
|
188
194
|
}
|
|
189
195
|
export interface ProvideRemoteAssetsResponseInput {
|
|
@@ -199,8 +205,14 @@ export interface ProvideRemoteAssetsUploadResponseInput {
|
|
|
199
205
|
assetUrl?: string;
|
|
200
206
|
assetUploadMetadata?: ArrayBuffer;
|
|
201
207
|
}
|
|
208
|
+
export interface XRInput {
|
|
209
|
+
layer: XRWebGLLayer;
|
|
210
|
+
binding: XRWebGLBinding;
|
|
211
|
+
frame: XRFrame;
|
|
212
|
+
referenceSpace: XRReferenceSpace;
|
|
213
|
+
}
|
|
202
214
|
export interface ProcessFrameInput {
|
|
203
|
-
inputFrame: ImageBitmap | HTMLCanvasElement | HTMLImageElement | VideoFrame;
|
|
215
|
+
inputFrame: ImageBitmap | HTMLCanvasElement | HTMLImageElement | VideoFrame | XRInput;
|
|
204
216
|
timestampMillis: number;
|
|
205
217
|
onSuccess?: DefaultEventHandler;
|
|
206
218
|
onFailure?: DefaultErrorHandler;
|
|
@@ -323,6 +335,12 @@ export interface ProcessAudioSampleBufferInput {
|
|
|
323
335
|
onSuccess?: DefaultEventHandler;
|
|
324
336
|
onFailure?: DefaultErrorHandler;
|
|
325
337
|
}
|
|
338
|
+
export interface BeginWebXrInput {
|
|
339
|
+
glContext: WebGL2RenderingContext;
|
|
340
|
+
requestConfig: {
|
|
341
|
+
requiredFeatures?: string[];
|
|
342
|
+
};
|
|
343
|
+
}
|
|
326
344
|
export interface InitialEmscriptenModule {
|
|
327
345
|
mainScriptUrlOrBlob: string;
|
|
328
346
|
compiledModule?: WebAssembly.Module;
|
|
@@ -441,6 +459,8 @@ export interface LensCoreModule extends InitialEmscriptenModule {
|
|
|
441
459
|
setSystemFonts: (config: SetSystemFontsInput) => void;
|
|
442
460
|
setAudioParameters: (config: SetAudioParametersInput) => void;
|
|
443
461
|
processAudioSampleBuffer: (config: ProcessAudioSampleBufferInput) => void;
|
|
462
|
+
registerBeginWebXrHandler: (handler: (config: BeginWebXrInput) => void) => void;
|
|
463
|
+
registerEndWebXrHandler: (handler: () => void) => void;
|
|
444
464
|
}
|
|
445
465
|
declare global {
|
|
446
466
|
function createLensesModule(module: InitialEmscriptenModule): Promise<InitialEmscriptenModule & LensCoreModule>;
|