@snap/camera-kit 0.15.1 → 0.17.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/LICENSE.md +139 -3873
- package/README.md +3 -3
- package/docs/html/assets/main.js +4 -3
- package/docs/html/assets/navigation.js +1 -0
- package/docs/html/assets/search.js +1 -1
- package/docs/html/assets/style.css +72 -25
- package/docs/html/classes/CameraKit.html +11 -196
- package/docs/html/classes/CameraKitSession.html +43 -366
- package/docs/html/classes/CameraKitSource.html +14 -223
- package/docs/html/classes/LensPerformanceMeasurement.html +9 -184
- package/docs/html/classes/LensPerformanceMetrics.html +7 -148
- package/docs/html/classes/LensRepository.html +17 -234
- package/docs/html/classes/Transform2D.html +7 -176
- package/docs/html/classes/TypedCustomEvent.html +4 -178
- package/docs/html/classes/TypedEventTarget.html +4 -209
- package/docs/html/enums/Lens_CameraFacing.html +5 -0
- package/docs/html/enums/UserData_Zodiac.html +15 -0
- package/docs/html/functions/ConcatInjectable.html +10 -193
- package/docs/html/functions/Injectable.html +9 -192
- package/docs/html/functions/bootstrapCameraKit.html +6 -147
- package/docs/html/functions/createExtension.html +6 -123
- package/docs/html/functions/createImageSource.html +4 -130
- package/docs/html/functions/createMediaStreamSource.html +4 -130
- package/docs/html/functions/createVideoSource.html +4 -130
- package/docs/html/functions/estimateLensPerformance.html +3 -120
- package/docs/html/functions/lensSourcesFactory.html +6 -127
- package/docs/html/functions/remoteApiServicesFactory.html +3 -121
- package/docs/html/hierarchy.html +1 -0
- package/docs/html/index.html +8 -165
- package/docs/html/interfaces/CameraKitBootstrapConfiguration.html +11 -192
- package/docs/html/interfaces/CameraKitDeviceOptions.html +11 -0
- package/docs/html/interfaces/CameraKitSourceInfo.html +9 -0
- package/docs/html/interfaces/CameraKitSourceSubscriber.html +3 -194
- package/docs/html/interfaces/ComputedFrameMetrics.html +2 -150
- package/docs/html/interfaces/CreateSessionOptions.html +5 -148
- package/docs/html/interfaces/EstimatedLensPerformance.html +3 -146
- package/docs/html/interfaces/FunctionSourceOptions.html +7 -0
- package/docs/html/interfaces/Lens.html +12 -205
- package/docs/html/interfaces/LensCreator.html +3 -0
- package/docs/html/interfaces/LensLaunchData.html +3 -179
- package/docs/html/interfaces/LensSource.html +3 -172
- package/docs/html/interfaces/LoadAssetRequest.html +13 -0
- package/docs/html/interfaces/MediaStreamSourceOptions.html +16 -138
- package/docs/html/interfaces/Preview.html +4 -141
- package/docs/html/interfaces/RemoteApiRequest.html +7 -162
- package/docs/html/interfaces/RemoteApiResponse.html +6 -155
- package/docs/html/interfaces/RemoteApiService.html +9 -171
- package/docs/html/interfaces/Snapcode.html +5 -148
- package/docs/html/interfaces/UriCancelRequest.html +2 -138
- package/docs/html/interfaces/UriRequest.html +2 -154
- package/docs/html/interfaces/UriResponse.html +2 -150
- package/docs/html/interfaces/VideoSourceOptions.html +15 -134
- package/docs/html/modules.html +57 -175
- package/docs/html/types/AssetLoader.html +5 -132
- package/docs/html/types/AssetResponse.html +1 -0
- package/docs/html/types/AssetTiming.html +2 -115
- package/docs/html/types/BenchmarkError.html +1 -112
- package/docs/html/types/BootstrapError.html +2 -115
- package/docs/html/types/CacheKeyNotFoundError.html +1 -112
- package/docs/html/types/CameraKitSessionEventListener.html +2 -115
- package/docs/html/types/CameraKitSessionEvents.html +2 -122
- package/docs/html/types/CameraKitSourceError.html +1 -112
- package/docs/html/types/ConfigurationError.html +2 -115
- package/docs/html/types/FetchHandler.html +1 -0
- package/docs/html/types/Keyboard.html +14 -194
- package/docs/html/types/KeyboardEvents.html +2 -124
- package/docs/html/types/LegalError.html +1 -112
- package/docs/html/types/LensAbortError.html +2 -115
- package/docs/html/types/LensAssetError.html +2 -115
- package/docs/html/types/LensContentValidationError.html +1 -112
- package/docs/html/types/LensError.html +1 -112
- package/docs/html/types/LensExecutionError.html +2 -115
- package/docs/html/types/LensImagePickerError.html +2 -115
- package/docs/html/types/LensLaunchParams.html +2 -0
- package/docs/html/types/LensMetricsEvents.html +2 -115
- package/docs/html/types/LensPerformanceCluster.html +1 -113
- package/docs/html/types/LensView.html +2 -115
- package/docs/html/types/LensWait.html +2 -115
- package/docs/html/types/Matrix.html +3 -0
- package/docs/html/types/PersistentStoreError.html +2 -115
- package/docs/html/types/PlatformNotSupportedError.html +2 -115
- package/docs/html/types/PublicContainer.html +2 -115
- package/docs/html/types/PublicServices.html +2 -0
- package/docs/html/types/RemoteApiCancelRequestHandler.html +2 -0
- package/docs/html/types/RemoteApiRequestHandler.html +2 -139
- package/docs/html/types/RemoteApiServices.html +1 -112
- package/docs/html/types/RemoteApiStatus.html +2 -115
- package/docs/html/types/RenderTarget.html +2 -115
- package/docs/html/types/Uri.html +1 -112
- package/docs/html/types/WebGLError.html +1 -112
- package/docs/html/variables/extensionRequestContext.html +2 -115
- package/docs/md/README.md +3 -3
- package/docs/md/classes/CameraKit.md +15 -15
- package/docs/md/classes/CameraKitSession.md +38 -38
- package/docs/md/classes/CameraKitSource.md +22 -30
- package/docs/md/classes/LensPerformanceMeasurement.md +10 -6
- package/docs/md/classes/LensPerformanceMetrics.md +2 -2
- package/docs/md/classes/LensRepository.md +18 -18
- package/docs/md/classes/Transform2D.md +7 -3
- package/docs/md/classes/TypedCustomEvent.md +10 -6
- package/docs/md/classes/TypedEventTarget.md +12 -8
- package/docs/md/enums/Lens_CameraFacing.md +36 -0
- package/docs/md/enums/UserData_Zodiac.md +106 -0
- package/docs/md/interfaces/CameraKitBootstrapConfiguration.md +2 -2
- package/docs/md/interfaces/CameraKitDeviceOptions.md +41 -0
- package/docs/md/interfaces/CameraKitSourceInfo.md +43 -0
- package/docs/md/interfaces/CameraKitSourceSubscriber.md +7 -7
- 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/FunctionSourceOptions.md +22 -0
- package/docs/md/interfaces/Lens.md +4 -4
- package/docs/md/interfaces/LensCreator.md +17 -0
- package/docs/md/interfaces/LensLaunchData.md +6 -6
- package/docs/md/interfaces/LensSource.md +5 -5
- package/docs/md/interfaces/LoadAssetRequest.md +49 -0
- package/docs/md/interfaces/MediaStreamSourceOptions.md +46 -1
- package/docs/md/interfaces/Preview.md +1 -1
- package/docs/md/interfaces/RemoteApiRequest.md +2 -2
- package/docs/md/interfaces/RemoteApiResponse.md +2 -2
- package/docs/md/interfaces/RemoteApiService.md +1 -1
- package/docs/md/interfaces/Snapcode.md +1 -1
- package/docs/md/interfaces/UriCancelRequest.md +2 -2
- package/docs/md/interfaces/UriRequest.md +3 -3
- package/docs/md/interfaces/UriResponse.md +2 -2
- package/docs/md/interfaces/VideoSourceOptions.md +44 -1
- package/docs/md/modules.md +183 -201
- package/lib/CameraKit.d.ts +108 -108
- package/lib/CameraKit.js +1 -1
- package/lib/CameraKit.js.map +1 -1
- package/lib/bootstrapCameraKit.d.ts +4 -4
- package/lib/bootstrapCameraKit.js +21 -20
- package/lib/bootstrapCameraKit.js.map +1 -1
- package/lib/clients/createTsProtoClient.d.ts +5 -12
- package/lib/clients/createTsProtoClient.js +1 -2
- package/lib/clients/createTsProtoClient.js.map +1 -1
- package/lib/clients/grpcHandler.d.ts +7 -4
- package/lib/clients/grpcHandler.js +8 -5
- package/lib/clients/grpcHandler.js.map +1 -1
- package/lib/clients/lensesClient.d.ts +3 -3
- package/lib/clients/lensesClient.js +2 -2
- package/lib/clients/lensesClient.js.map +1 -1
- package/lib/clients/metricsClient.d.ts +26 -0
- package/lib/clients/metricsClient.js +120 -0
- package/lib/clients/metricsClient.js.map +1 -0
- package/lib/configuration.js +1 -1
- package/lib/configuration.js.map +1 -1
- package/lib/dependency-injection/Container.d.ts +1 -1
- package/lib/dependency-injection/Container.js +1 -1
- package/lib/dependency-injection/Container.js.map +1 -1
- package/lib/dependency-injection/Injectable.d.ts +6 -6
- package/lib/dependency-injection/Injectable.js.map +1 -1
- package/lib/dependency-injection/RootServices.d.ts +7 -8
- package/lib/dependency-injection/RootServices.js.map +1 -1
- package/lib/environment.d.ts +4 -0
- package/lib/environment.js +2 -0
- package/lib/environment.js.map +1 -0
- package/lib/extensions/RemoteApiServices.d.ts +2 -2
- package/lib/extensions/RemoteApiServices.js +11 -6
- package/lib/extensions/RemoteApiServices.js.map +1 -1
- package/lib/extensions/uriHandlersRegister.d.ts +4 -4
- package/lib/extensions/uriHandlersRegister.js +6 -6
- package/lib/extensions/uriHandlersRegister.js.map +1 -1
- package/lib/generated-proto/blizzard/cameraKitEvents.d.ts +4330 -678
- package/lib/generated-proto/blizzard/cameraKitEvents.js +515 -72
- package/lib/generated-proto/blizzard/cameraKitEvents.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.d.ts +3 -11
- package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.js +6 -156
- package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/export.d.ts +19 -19
- package/lib/generated-proto/pb_schema/camera_kit/v3/export.js +13 -27
- package/lib/generated-proto/pb_schema/camera_kit/v3/export.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.d.ts +0 -6
- package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.js +2 -83
- package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/lens.d.ts +0 -22
- package/lib/generated-proto/pb_schema/camera_kit/v3/lens.js +0 -263
- package/lib/generated-proto/pb_schema/camera_kit/v3/lens.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.d.ts +30 -34
- package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.js +7 -73
- package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.d.ts +0 -6
- package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.js +0 -110
- package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.js.map +1 -1
- package/lib/generated-proto/pb_schema/camera_kit/v3/service.d.ts +48 -114
- package/lib/generated-proto/pb_schema/camera_kit/v3/service.js +0 -225
- package/lib/generated-proto/pb_schema/camera_kit/v3/service.js.map +1 -1
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark.d.ts +6 -6
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark.js +5 -19
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark.js.map +1 -1
- package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.d.ts +1422 -1422
- package/lib/generated-proto/pb_schema/cdp/cof/config_request.d.ts +12 -12
- package/lib/generated-proto/pb_schema/cdp/cof/config_request.js +10 -24
- package/lib/generated-proto/pb_schema/cdp/cof/config_request.js.map +1 -1
- package/lib/generated-proto/pb_schema/cdp/cof/config_response.d.ts +207 -207
- package/lib/generated-proto/pb_schema/cdp/cof/config_result.d.ts +530 -530
- package/lib/generated-proto/pb_schema/cdp/cof/config_result.js +10 -24
- package/lib/generated-proto/pb_schema/cdp/cof/config_result.js.map +1 -1
- package/lib/generated-proto/pb_schema/common/value.d.ts +6 -6
- package/lib/generated-proto/pb_schema/common/value.js +4 -18
- package/lib/generated-proto/pb_schema/common/value.js.map +1 -1
- package/lib/generated-proto/pb_schema/google/api/http.d.ts +0 -6
- package/lib/generated-proto/pb_schema/google/api/http.js +0 -77
- package/lib/generated-proto/pb_schema/google/api/http.js.map +1 -1
- package/lib/generated-proto/pb_schema/google/protobuf/any.d.ts +0 -2
- package/lib/generated-proto/pb_schema/google/protobuf/any.js +0 -44
- package/lib/generated-proto/pb_schema/google/protobuf/any.js.map +1 -1
- package/lib/generated-proto/pb_schema/google/protobuf/descriptor.d.ts +4830 -4896
- package/lib/generated-proto/pb_schema/google/protobuf/descriptor.js +10 -997
- package/lib/generated-proto/pb_schema/google/protobuf/descriptor.js.map +1 -1
- package/lib/generated-proto/pb_schema/google/protobuf/timestamp.d.ts +3 -5
- package/lib/generated-proto/pb_schema/google/protobuf/timestamp.js +6 -35
- package/lib/generated-proto/pb_schema/google/protobuf/timestamp.js.map +1 -1
- package/lib/generated-proto/pb_schema/google/protobuf/wrappers.d.ts +6 -6
- package/lib/generated-proto/pb_schema/google/protobuf/wrappers.js +10 -24
- package/lib/generated-proto/pb_schema/google/protobuf/wrappers.js.map +1 -1
- package/lib/generated-proto/pb_schema/lenses/launchdata.d.ts +9 -9
- package/lib/generated-proto/pb_schema/lenses/remote_api/remote_api_service.d.ts +11 -11
- package/lib/generated-proto/pb_schema/lenses/remote_api/remote_api_service.js +6 -20
- package/lib/generated-proto/pb_schema/lenses/remote_api/remote_api_service.js.map +1 -1
- package/lib/generated-proto/pb_schema/lenses/snappable.d.ts +42 -42
- package/lib/generated-proto/pb_schema/lenses/snappable.js +14 -28
- package/lib/generated-proto/pb_schema/lenses/snappable.js.map +1 -1
- package/lib/generated-proto/pb_schema/lenses/user_data.d.ts +8 -8
- package/lib/generated-proto/pb_schema/lenses/user_data.js +8 -22
- package/lib/generated-proto/pb_schema/lenses/user_data.js.map +1 -1
- package/lib/handlers/defaultFetchHandler.d.ts +1 -1
- package/lib/handlers/defaultFetchHandler.js.map +1 -1
- package/lib/handlers/requestStateEmittingHandler.d.ts +5 -6
- package/lib/handlers/requestStateEmittingHandler.js +6 -8
- package/lib/handlers/requestStateEmittingHandler.js.map +1 -1
- package/lib/handlers/responseCachingHandler.d.ts +9 -10
- package/lib/handlers/responseCachingHandler.js +9 -3
- package/lib/handlers/responseCachingHandler.js.map +1 -1
- package/lib/handlers/utils.d.ts +12 -0
- package/lib/handlers/utils.js +19 -0
- package/lib/handlers/utils.js.map +1 -0
- package/lib/index.d.ts +21 -15
- package/lib/index.js +17 -12
- package/lib/index.js.map +1 -1
- package/lib/lens/Lens.d.ts +12 -2
- package/lib/lens/Lens.js +5 -0
- package/lib/lens/Lens.js.map +1 -1
- package/lib/lens/LensLaunchData.d.ts +6 -3
- package/lib/lens/LensLaunchData.js +2 -0
- package/lib/lens/LensLaunchData.js.map +1 -1
- package/lib/lens/LensPersistenceStore.d.ts +1 -1
- package/lib/lens/LensPersistenceStore.js +1 -1
- package/lib/lens/LensPersistenceStore.js.map +1 -1
- package/lib/lens/LensRepository.d.ts +5 -1
- package/lib/lens/LensRepository.js +9 -5
- package/lib/lens/LensRepository.js.map +1 -1
- package/lib/lens/LensSource.d.ts +2 -2
- package/lib/lens/LensSource.js +4 -4
- package/lib/lens/LensSource.js.map +1 -1
- package/lib/lens/assets/LensAssetRepository.d.ts +35 -4
- package/lib/lens/assets/LensAssetRepository.js +9 -9
- package/lib/lens/assets/LensAssetRepository.js.map +1 -1
- package/lib/lens/assets/LensAssetsProvider.d.ts +1 -1
- package/lib/lens/assets/LensAssetsProvider.js +9 -4
- package/lib/lens/assets/LensAssetsProvider.js.map +1 -1
- package/lib/lens/assets/deviceDependentAssetLoader.js +3 -2
- package/lib/lens/assets/deviceDependentAssetLoader.js.map +1 -1
- package/lib/lens/assets/remoteMediaAssetLoaderFactory.js +4 -3
- package/lib/lens/assets/remoteMediaAssetLoaderFactory.js.map +1 -1
- package/lib/lens/assets/staticAssetLoader.js +5 -4
- package/lib/lens/assets/staticAssetLoader.js.map +1 -1
- package/lib/lens/cameraKitLensSource.d.ts +3 -2
- package/lib/lens/cameraKitLensSource.js +87 -42
- package/lib/lens/cameraKitLensSource.js.map +1 -1
- package/lib/lens/fetchWatermarkLens.d.ts +11 -0
- package/lib/lens/fetchWatermarkLens.js +27 -0
- package/lib/lens/fetchWatermarkLens.js.map +1 -0
- package/lib/lens-client-interface/imagePicker.d.ts +2 -1
- package/lib/lens-client-interface/imagePicker.js.map +1 -1
- package/lib/lens-client-interface/lensClientInterface.d.ts +1 -1
- package/lib/lens-client-interface/lensClientInterface.js +1 -1
- package/lib/lens-client-interface/lensClientInterface.js.map +1 -1
- package/lib/lens-core-module/lensCore.d.ts +2 -1
- package/lib/lens-core-module/lensCore.js.map +1 -1
- package/lib/lens-core-module/loader/bootstrapURLs.d.ts +12 -0
- package/lib/lens-core-module/loader/bootstrapURLs.js +48 -0
- package/lib/lens-core-module/loader/bootstrapURLs.js.map +1 -0
- package/lib/lens-core-module/loader/lensCoreFactory.d.ts +0 -12
- package/lib/lens-core-module/loader/lensCoreFactory.js +4 -49
- package/lib/lens-core-module/loader/lensCoreFactory.js.map +1 -1
- package/lib/lensCoreWasmVersions.d.ts +6 -0
- package/lib/lensCoreWasmVersions.js +6 -0
- package/lib/lensCoreWasmVersions.js.map +1 -0
- package/lib/media-sources/CameraKitSource.d.ts +39 -17
- package/lib/media-sources/CameraKitSource.js +8 -2
- package/lib/media-sources/CameraKitSource.js.map +1 -1
- package/lib/media-sources/FunctionSource.d.ts +15 -4
- package/lib/media-sources/FunctionSource.js +1 -2
- package/lib/media-sources/FunctionSource.js.map +1 -1
- package/lib/media-sources/ImageSource.d.ts +3 -5
- package/lib/media-sources/ImageSource.js +1 -3
- package/lib/media-sources/ImageSource.js.map +1 -1
- package/lib/media-sources/MediaStreamSource.d.ts +17 -33
- package/lib/media-sources/MediaStreamSource.js +6 -41
- package/lib/media-sources/MediaStreamSource.js.map +1 -1
- package/lib/media-sources/VideoSource.d.ts +14 -10
- package/lib/media-sources/VideoSource.js +5 -11
- package/lib/media-sources/VideoSource.js.map +1 -1
- package/lib/metrics/businessEventsReporter.d.ts +3 -4
- package/lib/metrics/businessEventsReporter.js +11 -55
- package/lib/metrics/businessEventsReporter.js.map +1 -1
- package/lib/metrics/operational/Count.d.ts +2 -0
- package/lib/metrics/operational/Count.js +6 -1
- package/lib/metrics/operational/Count.js.map +1 -1
- package/lib/metrics/operational/Histogram.d.ts +1 -1
- package/lib/metrics/operational/Histogram.js +7 -3
- package/lib/metrics/operational/Histogram.js.map +1 -1
- package/lib/metrics/operational/Metric.js +2 -0
- package/lib/metrics/operational/Metric.js.map +1 -1
- package/lib/metrics/operational/Timer.d.ts +9 -6
- package/lib/metrics/operational/Timer.js +12 -26
- package/lib/metrics/operational/Timer.js.map +1 -1
- package/lib/metrics/reporters/reportBenchmarks.d.ts +3 -3
- package/lib/metrics/reporters/reportBenchmarks.js +6 -5
- package/lib/metrics/reporters/reportBenchmarks.js.map +1 -1
- package/lib/metrics/reporters/reportGlobalException.d.ts +4 -4
- package/lib/metrics/reporters/reportGlobalException.js +13 -11
- package/lib/metrics/reporters/reportGlobalException.js.map +1 -1
- package/lib/metrics/reporters/reportHttpMetrics.d.ts +3 -3
- package/lib/metrics/reporters/reportHttpMetrics.js +19 -16
- package/lib/metrics/reporters/reportHttpMetrics.js.map +1 -1
- package/lib/metrics/reporters/reportLegalState.d.ts +3 -3
- package/lib/metrics/reporters/reportLegalState.js +7 -9
- package/lib/metrics/reporters/reportLegalState.js.map +1 -1
- package/lib/metrics/reporters/reportLensAndAssetDownload.d.ts +3 -3
- package/lib/metrics/reporters/reportLensAndAssetDownload.js +12 -12
- package/lib/metrics/reporters/reportLensAndAssetDownload.js.map +1 -1
- package/lib/metrics/reporters/reportLensView.d.ts +3 -3
- package/lib/metrics/reporters/reportLensView.js +6 -6
- package/lib/metrics/reporters/reportLensView.js.map +1 -1
- package/lib/metrics/reporters/reportLensWait.d.ts +2 -3
- package/lib/metrics/reporters/reportLensWait.js +1 -3
- package/lib/metrics/reporters/reportLensWait.js.map +1 -1
- package/lib/metrics/reporters/reportPlatformCapabilities.d.ts +3 -3
- package/lib/metrics/reporters/reportPlatformCapabilities.js +6 -5
- package/lib/metrics/reporters/reportPlatformCapabilities.js.map +1 -1
- package/lib/metrics/reporters/reportUserSession.js +3 -3
- package/lib/metrics/reporters/reportUserSession.js.map +1 -1
- package/lib/metrics/reporters/reporters.d.ts +2 -2
- package/lib/namedErrors.d.ts +1 -1
- package/lib/namedErrors.js +1 -1
- package/lib/namedErrors.js.map +1 -1
- package/lib/observable-operators/unsubscribed.d.ts +1 -1
- package/lib/observable-operators/unsubscribed.js +1 -1
- package/lib/observable-operators/unsubscribed.js.map +1 -1
- package/lib/platform/platformCapabilities.d.ts +1 -1
- package/lib/platform/platformCapabilities.js +9 -3
- package/lib/platform/platformCapabilities.js.map +1 -1
- package/lib/platform/platformInfo.d.ts +1 -0
- package/lib/platform/platformInfo.js +3 -3
- package/lib/platform/platformInfo.js.map +1 -1
- package/lib/remote-configuration/cofHandler.d.ts +3 -3
- package/lib/remote-configuration/cofHandler.js +6 -4
- package/lib/remote-configuration/cofHandler.js.map +1 -1
- package/lib/remote-configuration/preloadConfiguration.d.ts +1 -1
- package/lib/remote-configuration/preloadConfiguration.js +9 -4
- package/lib/remote-configuration/preloadConfiguration.js.map +1 -1
- package/lib/remote-configuration/remoteConfiguration.d.ts +7 -6
- package/lib/remote-configuration/remoteConfiguration.js +18 -15
- package/lib/remote-configuration/remoteConfiguration.js.map +1 -1
- package/lib/session/CameraKitSession.d.ts +8 -8
- package/lib/session/CameraKitSession.js +11 -9
- package/lib/session/CameraKitSession.js.map +1 -1
- package/lib/session/LensKeyboard.d.ts +1 -7
- package/lib/session/LensKeyboard.js.map +1 -1
- package/lib/session/LensPerformanceMeasurement.d.ts +1 -1
- package/lib/session/LensPerformanceMeasurement.js +3 -3
- package/lib/session/LensPerformanceMeasurement.js.map +1 -1
- package/lib/session/LensPerformanceMetrics.d.ts +1 -1
- package/lib/session/LensPerformanceMetrics.js.map +1 -1
- package/lib/session/lensState.d.ts +5 -4
- package/lib/session/lensState.js +80 -57
- package/lib/session/lensState.js.map +1 -1
- package/lib/transforms/Transform2D.d.ts +8 -3
- package/lib/transforms/Transform2D.js +1 -1
- package/lib/transforms/Transform2D.js.map +1 -1
- package/lib/utils.d.ts +3 -0
- package/lib/utils.js +4 -0
- package/lib/utils.js.map +1 -0
- package/package.json +27 -6
- package/docs/html/functions/createUserMediaSource.html +0 -138
- package/docs/html/functions/getRequiredBootstrapURLs.html +0 -130
- package/docs/html/types/CameraKitDeviceInfo.html +0 -125
- package/docs/html/types/CameraKitDeviceOptions.html +0 -120
- package/docs/html/types/CameraKitSourceInfo.html +0 -112
- package/docs/html/types/CameraKitSourceOptions.html +0 -118
- package/lib/common/index.d.ts +0 -2
- package/lib/common/index.js +0 -3
- package/lib/common/index.js.map +0 -1
- package/lib/environment.json +0 -1
- package/lib/handlers/index.d.ts +0 -2
- package/lib/handlers/index.js +0 -3
- package/lib/handlers/index.js.map +0 -1
- package/lib/lens-core-module/index.d.ts +0 -3
- package/lib/lens-core-module/index.js +0 -4
- package/lib/lens-core-module/index.js.map +0 -1
- package/lib/lens-core-module/loader/index.d.ts +0 -1
- package/lib/lens-core-module/loader/index.js +0 -2
- package/lib/lens-core-module/loader/index.js.map +0 -1
- package/lib/lensCoreWasmVersions.json +0 -5
- package/lib/metrics/metricsHandler.d.ts +0 -10
- package/lib/metrics/metricsHandler.js +0 -13
- package/lib/metrics/metricsHandler.js.map +0 -1
- package/lib/metrics/operational/operationalMetricsReporter.d.ts +0 -64
- package/lib/metrics/operational/operationalMetricsReporter.js +0 -144
- package/lib/metrics/operational/operationalMetricsReporter.js.map +0 -1
- package/lib/session/index.d.ts +0 -1
- package/lib/session/index.js +0 -2
- package/lib/session/index.js.map +0 -1
- package/lib/transforms/index.d.ts +0 -1
- package/lib/transforms/index.js +0 -2
- package/lib/transforms/index.js.map +0 -1
package/lib/session/lensState.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { defineAction, defineActions, defineState, defineStates, dispatch, forActions, inStates, StateMachine, } from "@snap/state-management";
|
|
2
|
-
import { catchError, exhaustMap, from, map, merge, mergeMap, Observable, of, switchMap, take, takeUntil, tap, } from "rxjs";
|
|
2
|
+
import { catchError, exhaustMap, forkJoin, from, map, merge, mergeMap, Observable, of, switchMap, take, takeUntil, tap, } from "rxjs";
|
|
3
3
|
import { Injectable } from "../dependency-injection/Injectable";
|
|
4
4
|
import { lensRepositoryFactory } from "../lens/LensRepository";
|
|
5
|
-
import { lensCoreFactory } from "../lens-core-module";
|
|
6
5
|
import { lensPersistenceStoreFactory } from "../lens/LensPersistenceStore";
|
|
7
6
|
import { encodeLensLaunchData } from "../lens/LensLaunchData";
|
|
8
7
|
import { legalStateFactory } from "../legal/legalState";
|
|
@@ -10,9 +9,12 @@ import { lensAssetRepositoryFactory } from "../lens/assets/LensAssetRepository";
|
|
|
10
9
|
import { legalError, lensContentValidationError, lensError, } from "../namedErrors";
|
|
11
10
|
import { getLogger } from "../logger/logger";
|
|
12
11
|
import { Timer } from "../metrics/operational/Timer";
|
|
13
|
-
import { operationalMetricReporterFactory, } from "../metrics/operational/operationalMetricsReporter";
|
|
14
12
|
import { unsubscribed } from "../observable-operators/unsubscribed";
|
|
15
13
|
import { assertUnreachable } from "../common/assertions";
|
|
14
|
+
import { metricsClientFactory } from "../clients/metricsClient";
|
|
15
|
+
import { lensCoreFactory } from "../lens-core-module/loader/lensCoreFactory";
|
|
16
|
+
import { remoteConfigurationFactory } from "../remote-configuration/remoteConfiguration";
|
|
17
|
+
import { watermarksLensGroup } from "../lens/fetchWatermarkLens";
|
|
16
18
|
const logger = getLogger("LensState");
|
|
17
19
|
const createLensState = () => {
|
|
18
20
|
const actions = defineActions(defineAction("applyLens")(), defineAction("downloadComplete")(), defineAction("turnedOn")(), defineAction("resourcesLoaded")(), defineAction("firstFrameProcessed")(), defineAction("applyLensComplete")(), defineAction("applyLensFailed")(), defineAction("applyLensAborted")(), defineAction("removeLens")(), defineAction("turnedOff")(), defineAction("removeLensComplete")(), defineAction("removeLensFailed")());
|
|
@@ -27,8 +29,9 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
27
29
|
lensAssetRepositoryFactory.token,
|
|
28
30
|
lensPersistenceStoreFactory.token,
|
|
29
31
|
legalStateFactory.token,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
metricsClientFactory.token,
|
|
33
|
+
remoteConfigurationFactory.token,
|
|
34
|
+
], (lensCore, lensRepository, lensAssetRepository, lensPersistence, legalState, metrics, remoteConfig) => {
|
|
32
35
|
const lensState = createLensState();
|
|
33
36
|
let firstLensApply = true;
|
|
34
37
|
/**
|
|
@@ -63,58 +66,76 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
63
66
|
// are not present for subsequent applies.
|
|
64
67
|
const applyTimer = new Timer("lens").mark("apply", { first: `${firstLensApply}` });
|
|
65
68
|
firstLensApply = false;
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
content
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
69
|
+
return forkJoin({
|
|
70
|
+
watermarkInput: remoteConfig.getInitializationConfig().pipe(mergeMap((config) => {
|
|
71
|
+
if (!config.watermarkEnabled)
|
|
72
|
+
return of(undefined);
|
|
73
|
+
return from(lensRepository.loadLens("", watermarksLensGroup)).pipe(mergeMap((watermark) =>
|
|
74
|
+
// NOTE: we expect that watermark lens is preloaded,
|
|
75
|
+
// to not affect loading time of the actual lens
|
|
76
|
+
from(lensRepository.getLensContent(watermark)).pipe(map(({ lensBuffer, lensChecksum }) => {
|
|
77
|
+
return {
|
|
78
|
+
lensId: watermark.id,
|
|
79
|
+
// Copy buffer, so LC can own the copy
|
|
80
|
+
lensDataBuffer: lensBuffer.slice(0),
|
|
81
|
+
lensChecksum,
|
|
82
|
+
launchData: new ArrayBuffer(0),
|
|
83
|
+
};
|
|
84
|
+
}))));
|
|
85
|
+
})),
|
|
86
|
+
lensInput: of(a.data).pipe(mergeMap(({ lens, launchData }) => {
|
|
87
|
+
// If retrieval throws an error, we still want to proceed with the lens
|
|
88
|
+
// because persisted data is not a necessity.
|
|
89
|
+
return from(lensPersistence.retrieve(lens.id).catch(() => undefined)).pipe(map((persistentStore) => ({ lens, launchData, persistentStore })));
|
|
90
|
+
}), map(({ lens, launchData, persistentStore }) => {
|
|
91
|
+
const lensDetails = lensRepository.getLensMetadata(lens.id);
|
|
92
|
+
if (!lensDetails) {
|
|
93
|
+
throw new Error(`Cannot apply lens ${lens.id}. It has not been loaded by the Lens ` +
|
|
94
|
+
`repository. Use CameraKit.lensRepository.loadLens (or loadLensGroups) ` +
|
|
95
|
+
`to load lens metadata before calling CameraKitSession.applyLens.`);
|
|
96
|
+
}
|
|
97
|
+
const { content } = lensDetails;
|
|
98
|
+
if (!content) {
|
|
99
|
+
throw new Error(`Cannot apply lens ${lens.id}. Metadata retrieved for this lens does not ` +
|
|
100
|
+
`include the lens content URL.`);
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
lens,
|
|
104
|
+
launchData: encodeLensLaunchData(launchData !== null && launchData !== void 0 ? launchData : {}, persistentStore !== null && persistentStore !== void 0 ? persistentStore : new ArrayBuffer(0)),
|
|
105
|
+
content,
|
|
106
|
+
};
|
|
107
|
+
}),
|
|
108
|
+
// Load lens assets and the lens itself in parallel. Both count toward lens download time.
|
|
109
|
+
// TODO: use RxJS fetch utilities so that these requests can be cancelled on unsubscribe.
|
|
110
|
+
mergeMap(({ lens, launchData, content }) => {
|
|
111
|
+
const networkTimer = applyTimer.mark("network");
|
|
112
|
+
return from(Promise.all([
|
|
113
|
+
lensRepository.getLensContent(lens).finally(() => networkTimer.measure("lens")),
|
|
114
|
+
content.assetManifest.length > 0
|
|
115
|
+
? lensAssetRepository
|
|
116
|
+
.cacheAssets(content.assetManifest, lens)
|
|
117
|
+
.finally(() => networkTimer.measure("assets"))
|
|
118
|
+
: Promise.resolve(),
|
|
119
|
+
])).pipe(tap(() => {
|
|
120
|
+
networkTimer.measure();
|
|
121
|
+
lensState.dispatch("downloadComplete", lens);
|
|
122
|
+
}), map(([{ lensBuffer, lensChecksum }]) => {
|
|
123
|
+
// NOTE: cached array buffer has to be copied each time in order to be reused,
|
|
124
|
+
// otherwise the original cached copy would be detached by LensCore
|
|
125
|
+
// One optimization can be done here: do not copy the array if getLensContent()
|
|
126
|
+
// returned uncached buffer
|
|
127
|
+
const lensDataBuffer = lensBuffer.slice(0);
|
|
128
|
+
return { lensId: lens.id, lensDataBuffer, lensChecksum, launchData };
|
|
129
|
+
}));
|
|
130
|
+
})),
|
|
131
|
+
}).pipe(
|
|
111
132
|
// If removeLens is dispatched while downloading, cancel download, don't apply the lens.
|
|
112
133
|
takeUntil(lensState.events.pipe(forActions("removeLens"))),
|
|
113
134
|
// Once the lens has downloaded, we can call replaceLenses. We're not concerned about
|
|
114
135
|
// waiting for prior in-progress calls to replaceLenses to complete, because LensCore
|
|
115
136
|
// guarantees that calls to replaceLenses will always be processed sequentially in the order
|
|
116
137
|
// they are received.
|
|
117
|
-
mergeMap((lensInput) => new Observable((subscriber) => {
|
|
138
|
+
mergeMap(({ lensInput, watermarkInput }) => new Observable((subscriber) => {
|
|
118
139
|
const coreTimer = applyTimer.mark("core");
|
|
119
140
|
// replaceLenses has the property that if it fails, LensCore guarantees that no
|
|
120
141
|
// lenses are active – so we can safely dispatch applyLensFailed and transition
|
|
@@ -130,9 +151,11 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
130
151
|
onFirstFrameProcessed: () => {
|
|
131
152
|
coreTimer.measure("first-frame");
|
|
132
153
|
applyTimer.measure("success");
|
|
133
|
-
applyTimer.stopAndReport(
|
|
154
|
+
applyTimer.stopAndReport(metrics);
|
|
134
155
|
dispatch("firstFrameProcessed");
|
|
135
156
|
}, onTurnOff: () => dispatch("turnedOff") }),
|
|
157
|
+
// Watermark is always applied last
|
|
158
|
+
...(watermarkInput ? [watermarkInput] : []),
|
|
136
159
|
],
|
|
137
160
|
})
|
|
138
161
|
.then(() => {
|
|
@@ -151,7 +174,7 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
151
174
|
.catch((lensCoreError) => {
|
|
152
175
|
coreTimer.measure("failure");
|
|
153
176
|
applyTimer.measure("failure");
|
|
154
|
-
applyTimer.stopAndReport(
|
|
177
|
+
applyTimer.stopAndReport(metrics);
|
|
155
178
|
const message = `Failed to apply lens ${lensInput.lensId}.`;
|
|
156
179
|
const error = /validation failed/.test(lensCoreError.message)
|
|
157
180
|
? lensContentValidationError(message, lensCoreError)
|
|
@@ -161,7 +184,7 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
161
184
|
});
|
|
162
185
|
})), catchError((error) => {
|
|
163
186
|
applyTimer.measure("failure");
|
|
164
|
-
applyTimer.stopAndReport(
|
|
187
|
+
applyTimer.stopAndReport(metrics);
|
|
165
188
|
return of(lensState.actions.applyLensFailed({ error, lens }));
|
|
166
189
|
}),
|
|
167
190
|
// If a new applyLens is received, `switchMap` will unsubscribe from this inner observable,
|
|
@@ -169,7 +192,7 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
169
192
|
// to measure aborted lens applications.
|
|
170
193
|
unsubscribed(() => {
|
|
171
194
|
applyTimer.measure("abort");
|
|
172
|
-
applyTimer.stopAndReport(
|
|
195
|
+
applyTimer.stopAndReport(metrics);
|
|
173
196
|
}));
|
|
174
197
|
}), dispatch(lensState))
|
|
175
198
|
.subscribe({
|
|
@@ -199,8 +222,8 @@ export const lensStateFactory = Injectable("lensState", [
|
|
|
199
222
|
.pipe(inStates("applyingLens"), forActions("removeLens"), switchMap(([a]) => lensState.events.pipe(
|
|
200
223
|
// Wait to remove the lens until it has been applied.
|
|
201
224
|
inStates("lensApplied"),
|
|
202
|
-
// But cancel the removal if a new applyLens
|
|
203
|
-
// make sure the latest apply/remove
|
|
225
|
+
// But cancel the removal if a new applyLens supersedes the current lens. The goal here is to
|
|
226
|
+
// make sure the latest apply/remove preempts any previous request to apply/remove.
|
|
204
227
|
takeUntil(lensState.events.pipe(forActions("applyLens"))), map(() => a))), dispatch(lensState))
|
|
205
228
|
.subscribe({
|
|
206
229
|
error: logger.error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lensState.js","sourceRoot":"","sources":["../../src/session/lensState.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Actions,\n defineAction,\n defineActions,\n defineState,\n defineStates,\n dispatch,\n forActions,\n inStates,\n StateMachine,\n} from \"@snap/state-management\";\nimport {\n catchError,\n exhaustMap,\n from,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n switchMap,\n take,\n takeUntil,\n tap,\n} from \"rxjs\";\nimport { Injectable } from \"../dependency-injection/Injectable\";\nimport { Lens } from \"../lens/Lens\";\nimport { LensRepository, lensRepositoryFactory } from \"../lens/LensRepository\";\nimport { lensCoreFactory, LensCore } from \"../lens-core-module\";\nimport { AddLensInput } from \"../lens-core-module/generated-types\";\nimport { IndexedDBPersistence } from \"../persistence/IndexedDBPersistence\";\nimport { lensPersistenceStoreFactory } from \"../lens/LensPersistenceStore\";\nimport { encodeLensLaunchData, LensLaunchData } from \"../lens/LensLaunchData\";\nimport { LegalState, legalStateFactory } from \"../legal/legalState\";\nimport { LensAssetRepository, lensAssetRepositoryFactory } from \"../lens/assets/LensAssetRepository\";\nimport {\n legalError,\n LegalError,\n lensContentValidationError,\n LensContentValidationError,\n lensError,\n LensError,\n} from \"../namedErrors\";\nimport { getLogger } from \"../logger/logger\";\nimport { Timer } from \"../metrics/operational/Timer\";\nimport {\n operationalMetricReporterFactory,\n OperationalMetricsReporter,\n} from \"../metrics/operational/operationalMetricsReporter\";\nimport { unsubscribed } from \"../observable-operators/unsubscribed\";\nimport { assertUnreachable } from \"../common/assertions\";\n\nconst logger = getLogger(\"LensState\");\n\nconst createLensState = () => {\n const actions = defineActions(\n defineAction(\"applyLens\")<{ lens: Lens; launchData?: LensLaunchData }>(),\n defineAction(\"downloadComplete\")<Lens>(),\n defineAction(\"turnedOn\")<Lens>(),\n defineAction(\"resourcesLoaded\")<Lens>(),\n defineAction(\"firstFrameProcessed\")<Lens>(),\n defineAction(\"applyLensComplete\")<Lens>(),\n defineAction(\"applyLensFailed\")<{ error: LensErrors; lens: Lens }>(),\n defineAction(\"applyLensAborted\")<Lens>(),\n\n defineAction(\"removeLens\")(),\n defineAction(\"turnedOff\")<Lens>(),\n defineAction(\"removeLensComplete\")(),\n defineAction(\"removeLensFailed\")<Error>()\n );\n\n const states = defineStates(\n defineState(\"noLensApplied\")(),\n defineState(\"applyingLens\")<Lens>(),\n defineState(\"lensApplied\")<Lens>()\n );\n\n return new StateMachine(actions, states, states.noLensApplied(), (events) =>\n merge(\n events.pipe(\n // We allow a new lens to be applied at any time, no matter the state.\n inStates(\"noLensApplied\", \"applyingLens\", \"lensApplied\"),\n forActions(\"applyLens\"),\n map(([a]) => states.applyingLens(a.data.lens))\n ),\n events.pipe(\n inStates(\"applyingLens\"),\n forActions(\"applyLensComplete\"),\n map(([a]) => states.lensApplied(a.data))\n ),\n events.pipe(\n inStates(\"applyingLens\"),\n forActions(\"applyLensFailed\"),\n map(() => states.noLensApplied())\n ),\n events.pipe(\n inStates(\"lensApplied\"),\n forActions(\"removeLensComplete\"),\n map(() => states.noLensApplied())\n )\n )\n );\n};\n\nexport type LensErrors = LegalError | LensContentValidationError | LensError;\n\nexport type LensState = ReturnType<typeof createLensState>;\n\nexport const lensStateFactory = Injectable(\n \"lensState\",\n [\n lensCoreFactory.token,\n lensRepositoryFactory.token,\n lensAssetRepositoryFactory.token,\n lensPersistenceStoreFactory.token,\n legalStateFactory.token,\n operationalMetricReporterFactory.token,\n ] as const,\n (\n lensCore: LensCore,\n lensRepository: LensRepository,\n lensAssetRepository: LensAssetRepository,\n lensPersistence: IndexedDBPersistence<ArrayBuffer>,\n legalState: LegalState,\n operationalMetricsReporter: OperationalMetricsReporter\n ): LensState => {\n const lensState = createLensState();\n let firstLensApply = true;\n\n /**\n * Apply lens\n */\n lensState.events\n .pipe(\n forActions(\"applyLens\"),\n\n // Determine the legal state (e.g. terms have been accepted). Using exhaustMap means while we are\n // ascertaining legal status (which may include prompting the end user to accept terms), we will ignore\n // any new applyLens actions.\n exhaustMap(([a]) =>\n of(legalState.actions.requestLegalPrompt()).pipe(\n dispatch(legalState),\n inStates(\"accepted\", \"rejected\"),\n take(1),\n map(([, { name }]) => {\n if (name === \"accepted\") return a;\n return lensState.actions.applyLensFailed({\n error: legalError(\n `Failed to apply lens ${a.data.lens.id}. Required legal terms were not accepted.`\n ),\n lens: a.data.lens,\n });\n })\n )\n ),\n\n // The use of switchMap is important so that if we get a new applyLens action while we're still\n // downloading lens content for a previously-requested lens, we can cancel those requests and ensure\n // that lenses are applied in the order they're requested.\n switchMap((a) => {\n if (a.name === \"applyLensFailed\") return of(a);\n\n const { lens } = a.data;\n // Convenience method making dispatching an action with Lens data less verbose.\n const dispatch = (action: Extract<Actions<LensState>, { data: Lens }>[\"name\"]) => {\n lensState.dispatch(action, lens);\n };\n\n // We record if this was the first lens apply for this page load, since there may be additional\n // sources of latency (e.g. remote configuration that needs to be loaded) on the first apply that\n // are not present for subsequent applies.\n const applyTimer = new Timer(\"lens\").mark(\"apply\", { first: `${firstLensApply}` });\n firstLensApply = false;\n\n return of(a.data).pipe(\n mergeMap(({ lens, launchData }) => {\n // If retrieval throws an error, we still want to proceed with the lens\n // because persisted data is not a necessity.\n return from(lensPersistence.retrieve(lens.id).catch(() => undefined)).pipe(\n map((persistentStore) => ({ lens, launchData, persistentStore }))\n );\n }),\n\n map(({ lens, launchData, persistentStore }) => {\n const lensDetails = lensRepository.getLensMetadata(lens.id);\n if (!lensDetails) {\n throw new Error(\n `Cannot apply lens ${lens.id}. It has not been loaded by the Lens ` +\n `repository. Use CameraKit.lensRepository.loadLens (or loadLensGroups) ` +\n `to load lens metadata before calling CameraKitSession.applyLens.`\n );\n }\n\n const { content } = lensDetails;\n if (!content) {\n throw new Error(\n `Cannot apply lens ${lens.id}. Metadata retrieved for this lens does not ` +\n `include the lens content URL.`\n );\n }\n\n return {\n lens,\n launchData: encodeLensLaunchData(\n launchData ?? {},\n persistentStore ?? new ArrayBuffer(0)\n ),\n content,\n };\n }),\n\n // Load lens assets and the lens itself in parallel. Both count toward lens download time.\n // TODO: use RxJS fetch utilities so that these requests can be cancelled on unsubscribe.\n mergeMap(({ lens, launchData, content }) => {\n const networkTimer = applyTimer.mark(\"network\");\n\n return from(\n Promise.all([\n lensRepository.getLensContent(lens).finally(() => networkTimer.measure(\"lens\")),\n content.assetManifest.length > 0\n ? lensAssetRepository\n .cacheAssets(content.assetManifest, lens)\n .finally(() => networkTimer.measure(\"assets\"))\n : Promise.resolve(),\n ])\n ).pipe(\n tap(() => {\n networkTimer.measure();\n lensState.dispatch(\"downloadComplete\", lens);\n }),\n map(([{ lensBuffer, lensChecksum }]): AddLensInput => {\n // NOTE: cached array buffer has to be copied each time in order to be reused,\n // otherwise the original cached copy would be detached by LensCore\n // One optimization can be done here: do not copy the array if getLensContent()\n // returned uncached buffer\n const lensDataBuffer = lensBuffer.slice(0);\n return { lensId: lens.id, lensDataBuffer, lensChecksum, launchData };\n })\n );\n }),\n\n // If removeLens is dispatched while downloading, cancel download, don't apply the lens.\n takeUntil(lensState.events.pipe(forActions(\"removeLens\"))),\n\n // Once the lens has downloaded, we can call replaceLenses. We're not concerned about\n // waiting for prior in-progress calls to replaceLenses to complete, because LensCore\n // guarantees that calls to replaceLenses will always be processed sequentially in the order\n // they are received.\n mergeMap(\n (lensInput) =>\n new Observable<Actions<LensState>>((subscriber) => {\n const coreTimer = applyTimer.mark(\"core\");\n\n // replaceLenses has the property that if it fails, LensCore guarantees that no\n // lenses are active – so we can safely dispatch applyLensFailed and transition\n // to noLensApplied state.\n lensCore\n .replaceLenses({\n lenses: [\n {\n ...lensInput,\n onTurnOn: () => dispatch(\"turnedOn\"),\n onResourcesLoaded: () => dispatch(\"resourcesLoaded\"),\n\n // onFirstFrameProcessed marks the end of the lens application for\n // the end-user -- this is when they see the newly applied lens\n // begin to render. As such, this is where we stop our overall\n // latency measurement and report latency metrics.\n onFirstFrameProcessed: () => {\n coreTimer.measure(\"first-frame\");\n applyTimer.measure(\"success\");\n applyTimer.stopAndReport(operationalMetricsReporter);\n dispatch(\"firstFrameProcessed\");\n },\n onTurnOff: () => dispatch(\"turnedOff\"),\n },\n ],\n })\n .then(() => {\n coreTimer.measure(\"success\");\n\n // We emit applyLensComplete (and applyLensFailed, below) on an\n // Observable, which is piped to `dispatch` – this allows `switchMap` to\n // properly cancel the dispatch of these actions if a new applyLens\n // arrives while we're waiting for onSuccess/onFailure.\n //\n // That's desirable behavior, because we don't want the applyingLens\n // state due to a *subsequent applyLens action* to be transitioned to\n // lensApplied by this action.\n subscriber.next(lensState.actions.applyLensComplete(lens));\n subscriber.complete();\n })\n .catch((lensCoreError) => {\n coreTimer.measure(\"failure\");\n applyTimer.measure(\"failure\");\n applyTimer.stopAndReport(operationalMetricsReporter);\n\n const message = `Failed to apply lens ${lensInput.lensId}.`;\n const error = /validation failed/.test(lensCoreError.message)\n ? lensContentValidationError(message, lensCoreError)\n : lensError(message, lensCoreError);\n\n subscriber.next(lensState.actions.applyLensFailed({ error, lens }));\n subscriber.complete();\n });\n })\n ),\n catchError((error: LensErrors) => {\n applyTimer.measure(\"failure\");\n applyTimer.stopAndReport(operationalMetricsReporter);\n return of(lensState.actions.applyLensFailed({ error, lens }));\n }),\n\n // If a new applyLens is received, `switchMap` will unsubscribe from this inner observable,\n // which stops the current lens application. When this happens we can record a separate metric\n // to measure aborted lens applications.\n unsubscribed(() => {\n applyTimer.measure(\"abort\");\n applyTimer.stopAndReport(operationalMetricsReporter);\n })\n );\n }),\n dispatch(lensState)\n )\n .subscribe({\n error: logger.error,\n });\n\n /**\n * Remove lens\n */\n lensState.events\n .pipe(\n inStates(\"lensApplied\", \"noLensApplied\"),\n forActions(\"removeLens\"),\n mergeMap(\n () =>\n new Observable<Actions<LensState>>((subscriber) => {\n lensCore\n .clearAllLenses()\n .then(() => {\n subscriber.next(lensState.actions.removeLensComplete());\n subscriber.complete();\n })\n .catch((lensCoreError) => {\n const error = new Error(\"Failed to remove lenses.\", { cause: lensCoreError });\n subscriber.next(lensState.actions.removeLensFailed(error));\n subscriber.complete();\n });\n })\n ),\n dispatch(lensState)\n )\n .subscribe({\n error: logger.error,\n });\n\n lensState.events\n .pipe(\n inStates(\"applyingLens\"),\n forActions(\"removeLens\"),\n switchMap(([a]) =>\n lensState.events.pipe(\n // Wait to remove the lens until it has been applied.\n inStates(\"lensApplied\"),\n // But cancel the removal if a new applyLens supercedes the current lens. The goal here is to\n // make sure the latest apply/remove pre-empts any previous request to apply/remove.\n takeUntil(lensState.events.pipe(forActions(\"applyLens\"))),\n map(() => a)\n )\n ),\n dispatch(lensState)\n )\n .subscribe({\n error: logger.error,\n });\n\n // Log transitions\n lensState.events.subscribe(([a, s]) => {\n const data = extractLoggableData(a);\n logger.debug(`Action: \"${a.name}\", state: \"${s.name}\"${data ? \", data: \" + JSON.stringify(data) : \"\"}`);\n });\n\n return lensState;\n }\n);\n\nfunction extractLoggableData(action: Actions<LensState>): Record<string, string> | undefined {\n switch (action.name) {\n case \"applyLens\":\n return { lensId: action.data.lens.id };\n case \"applyLensFailed\":\n return { lensId: action.data.lens.id, error: action.data.error.message };\n case \"downloadComplete\":\n case \"turnedOn\":\n case \"resourcesLoaded\":\n case \"firstFrameProcessed\":\n case \"applyLensComplete\":\n case \"applyLensAborted\":\n case \"turnedOff\":\n return { lensId: action.data.id };\n case \"removeLens\":\n case \"removeLensComplete\":\n return undefined;\n case \"removeLensFailed\":\n return { error: action.data.message };\n default:\n assertUnreachable(action);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"lensState.js","sourceRoot":"","sources":["../../src/session/lensState.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Actions,\n defineAction,\n defineActions,\n defineState,\n defineStates,\n dispatch,\n forActions,\n inStates,\n StateMachine,\n} from \"@snap/state-management\";\nimport {\n catchError,\n exhaustMap,\n forkJoin,\n from,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n switchMap,\n take,\n takeUntil,\n tap,\n} from \"rxjs\";\nimport { Injectable } from \"../dependency-injection/Injectable\";\nimport { Lens } from \"../lens/Lens\";\nimport { LensRepository, lensRepositoryFactory } from \"../lens/LensRepository\";\nimport { AddLensInput } from \"../lens-core-module/generated-types\";\nimport { IndexedDBPersistence } from \"../persistence/IndexedDBPersistence\";\nimport { lensPersistenceStoreFactory } from \"../lens/LensPersistenceStore\";\nimport { encodeLensLaunchData, LensLaunchData } from \"../lens/LensLaunchData\";\nimport { LegalState, legalStateFactory } from \"../legal/legalState\";\nimport { LensAssetRepository, lensAssetRepositoryFactory } from \"../lens/assets/LensAssetRepository\";\nimport {\n legalError,\n LegalError,\n lensContentValidationError,\n LensContentValidationError,\n lensError,\n LensError,\n} from \"../namedErrors\";\nimport { getLogger } from \"../logger/logger\";\nimport { Timer } from \"../metrics/operational/Timer\";\nimport { unsubscribed } from \"../observable-operators/unsubscribed\";\nimport { assertUnreachable } from \"../common/assertions\";\nimport { MetricsClient, metricsClientFactory } from \"../clients/metricsClient\";\nimport { LensCore } from \"../lens-core-module/lensCore\";\nimport { lensCoreFactory } from \"../lens-core-module/loader/lensCoreFactory\";\nimport { RemoteConfiguration, remoteConfigurationFactory } from \"../remote-configuration/remoteConfiguration\";\nimport { watermarksLensGroup } from \"../lens/fetchWatermarkLens\";\n\nconst logger = getLogger(\"LensState\");\n\nconst createLensState = () => {\n const actions = defineActions(\n defineAction(\"applyLens\")<{ lens: Lens; launchData?: LensLaunchData }>(),\n defineAction(\"downloadComplete\")<Lens>(),\n defineAction(\"turnedOn\")<Lens>(),\n defineAction(\"resourcesLoaded\")<Lens>(),\n defineAction(\"firstFrameProcessed\")<Lens>(),\n defineAction(\"applyLensComplete\")<Lens>(),\n defineAction(\"applyLensFailed\")<{ error: LensErrors; lens: Lens }>(),\n defineAction(\"applyLensAborted\")<Lens>(),\n\n defineAction(\"removeLens\")(),\n defineAction(\"turnedOff\")<Lens>(),\n defineAction(\"removeLensComplete\")(),\n defineAction(\"removeLensFailed\")<Error>()\n );\n\n const states = defineStates(\n defineState(\"noLensApplied\")(),\n defineState(\"applyingLens\")<Lens>(),\n defineState(\"lensApplied\")<Lens>()\n );\n\n return new StateMachine(actions, states, states.noLensApplied(), (events) =>\n merge(\n events.pipe(\n // We allow a new lens to be applied at any time, no matter the state.\n inStates(\"noLensApplied\", \"applyingLens\", \"lensApplied\"),\n forActions(\"applyLens\"),\n map(([a]) => states.applyingLens(a.data.lens))\n ),\n events.pipe(\n inStates(\"applyingLens\"),\n forActions(\"applyLensComplete\"),\n map(([a]) => states.lensApplied(a.data))\n ),\n events.pipe(\n inStates(\"applyingLens\"),\n forActions(\"applyLensFailed\"),\n map(() => states.noLensApplied())\n ),\n events.pipe(\n inStates(\"lensApplied\"),\n forActions(\"removeLensComplete\"),\n map(() => states.noLensApplied())\n )\n )\n );\n};\n\nexport type LensErrors = LegalError | LensContentValidationError | LensError;\n\nexport type LensState = ReturnType<typeof createLensState>;\n\nexport const lensStateFactory = Injectable(\n \"lensState\",\n [\n lensCoreFactory.token,\n lensRepositoryFactory.token,\n lensAssetRepositoryFactory.token,\n lensPersistenceStoreFactory.token,\n legalStateFactory.token,\n metricsClientFactory.token,\n remoteConfigurationFactory.token,\n ] as const,\n (\n lensCore: LensCore,\n lensRepository: LensRepository,\n lensAssetRepository: LensAssetRepository,\n lensPersistence: IndexedDBPersistence<ArrayBuffer>,\n legalState: LegalState,\n metrics: MetricsClient,\n remoteConfig: RemoteConfiguration\n ): LensState => {\n const lensState = createLensState();\n let firstLensApply = true;\n\n /**\n * Apply lens\n */\n lensState.events\n .pipe(\n forActions(\"applyLens\"),\n\n // Determine the legal state (e.g. terms have been accepted). Using exhaustMap means while we are\n // ascertaining legal status (which may include prompting the end user to accept terms), we will ignore\n // any new applyLens actions.\n exhaustMap(([a]) =>\n of(legalState.actions.requestLegalPrompt()).pipe(\n dispatch(legalState),\n inStates(\"accepted\", \"rejected\"),\n take(1),\n map(([, { name }]) => {\n if (name === \"accepted\") return a;\n return lensState.actions.applyLensFailed({\n error: legalError(\n `Failed to apply lens ${a.data.lens.id}. Required legal terms were not accepted.`\n ),\n lens: a.data.lens,\n });\n })\n )\n ),\n\n // The use of switchMap is important so that if we get a new applyLens action while we're still\n // downloading lens content for a previously-requested lens, we can cancel those requests and ensure\n // that lenses are applied in the order they're requested.\n switchMap((a) => {\n if (a.name === \"applyLensFailed\") return of(a);\n\n const { lens } = a.data;\n // Convenience method making dispatching an action with Lens data less verbose.\n const dispatch = (action: Extract<Actions<LensState>, { data: Lens }>[\"name\"]) => {\n lensState.dispatch(action, lens);\n };\n\n // We record if this was the first lens apply for this page load, since there may be additional\n // sources of latency (e.g. remote configuration that needs to be loaded) on the first apply that\n // are not present for subsequent applies.\n const applyTimer = new Timer(\"lens\").mark(\"apply\", { first: `${firstLensApply}` });\n firstLensApply = false;\n\n return forkJoin({\n watermarkInput: remoteConfig.getInitializationConfig().pipe(\n mergeMap((config) => {\n if (!config.watermarkEnabled) return of(undefined);\n\n return from(lensRepository.loadLens(\"\", watermarksLensGroup)).pipe(\n mergeMap((watermark) =>\n // NOTE: we expect that watermark lens is preloaded,\n // to not affect loading time of the actual lens\n from(lensRepository.getLensContent(watermark)).pipe(\n map(({ lensBuffer, lensChecksum }): AddLensInput => {\n return {\n lensId: watermark.id,\n // Copy buffer, so LC can own the copy\n lensDataBuffer: lensBuffer.slice(0),\n lensChecksum,\n launchData: new ArrayBuffer(0),\n };\n })\n )\n )\n );\n })\n ),\n\n lensInput: of(a.data).pipe(\n mergeMap(({ lens, launchData }) => {\n // If retrieval throws an error, we still want to proceed with the lens\n // because persisted data is not a necessity.\n return from(lensPersistence.retrieve(lens.id).catch(() => undefined)).pipe(\n map((persistentStore) => ({ lens, launchData, persistentStore }))\n );\n }),\n\n map(({ lens, launchData, persistentStore }) => {\n const lensDetails = lensRepository.getLensMetadata(lens.id);\n if (!lensDetails) {\n throw new Error(\n `Cannot apply lens ${lens.id}. It has not been loaded by the Lens ` +\n `repository. Use CameraKit.lensRepository.loadLens (or loadLensGroups) ` +\n `to load lens metadata before calling CameraKitSession.applyLens.`\n );\n }\n\n const { content } = lensDetails;\n if (!content) {\n throw new Error(\n `Cannot apply lens ${lens.id}. Metadata retrieved for this lens does not ` +\n `include the lens content URL.`\n );\n }\n\n return {\n lens,\n launchData: encodeLensLaunchData(\n launchData ?? {},\n persistentStore ?? new ArrayBuffer(0)\n ),\n content,\n };\n }),\n\n // Load lens assets and the lens itself in parallel. Both count toward lens download time.\n // TODO: use RxJS fetch utilities so that these requests can be cancelled on unsubscribe.\n mergeMap(({ lens, launchData, content }) => {\n const networkTimer = applyTimer.mark(\"network\");\n\n return from(\n Promise.all([\n lensRepository.getLensContent(lens).finally(() => networkTimer.measure(\"lens\")),\n content.assetManifest.length > 0\n ? lensAssetRepository\n .cacheAssets(content.assetManifest, lens)\n .finally(() => networkTimer.measure(\"assets\"))\n : Promise.resolve(),\n ])\n ).pipe(\n tap(() => {\n networkTimer.measure();\n lensState.dispatch(\"downloadComplete\", lens);\n }),\n map(([{ lensBuffer, lensChecksum }]): AddLensInput => {\n // NOTE: cached array buffer has to be copied each time in order to be reused,\n // otherwise the original cached copy would be detached by LensCore\n // One optimization can be done here: do not copy the array if getLensContent()\n // returned uncached buffer\n const lensDataBuffer = lensBuffer.slice(0);\n return { lensId: lens.id, lensDataBuffer, lensChecksum, launchData };\n })\n );\n })\n ),\n }).pipe(\n // If removeLens is dispatched while downloading, cancel download, don't apply the lens.\n takeUntil(lensState.events.pipe(forActions(\"removeLens\"))),\n\n // Once the lens has downloaded, we can call replaceLenses. We're not concerned about\n // waiting for prior in-progress calls to replaceLenses to complete, because LensCore\n // guarantees that calls to replaceLenses will always be processed sequentially in the order\n // they are received.\n mergeMap(\n ({ lensInput, watermarkInput }) =>\n new Observable<Actions<LensState>>((subscriber) => {\n const coreTimer = applyTimer.mark(\"core\");\n\n // replaceLenses has the property that if it fails, LensCore guarantees that no\n // lenses are active – so we can safely dispatch applyLensFailed and transition\n // to noLensApplied state.\n lensCore\n .replaceLenses({\n lenses: [\n {\n ...lensInput,\n onTurnOn: () => dispatch(\"turnedOn\"),\n onResourcesLoaded: () => dispatch(\"resourcesLoaded\"),\n\n // onFirstFrameProcessed marks the end of the lens application for\n // the end-user -- this is when they see the newly applied lens\n // begin to render. As such, this is where we stop our overall\n // latency measurement and report latency metrics.\n onFirstFrameProcessed: () => {\n coreTimer.measure(\"first-frame\");\n applyTimer.measure(\"success\");\n applyTimer.stopAndReport(metrics);\n dispatch(\"firstFrameProcessed\");\n },\n onTurnOff: () => dispatch(\"turnedOff\"),\n },\n // Watermark is always applied last\n ...(watermarkInput ? [watermarkInput] : []),\n ],\n })\n .then(() => {\n coreTimer.measure(\"success\");\n\n // We emit applyLensComplete (and applyLensFailed, below) on an\n // Observable, which is piped to `dispatch` – this allows `switchMap` to\n // properly cancel the dispatch of these actions if a new applyLens\n // arrives while we're waiting for onSuccess/onFailure.\n //\n // That's desirable behavior, because we don't want the applyingLens\n // state due to a *subsequent applyLens action* to be transitioned to\n // lensApplied by this action.\n subscriber.next(lensState.actions.applyLensComplete(lens));\n subscriber.complete();\n })\n .catch((lensCoreError) => {\n coreTimer.measure(\"failure\");\n applyTimer.measure(\"failure\");\n applyTimer.stopAndReport(metrics);\n\n const message = `Failed to apply lens ${lensInput.lensId}.`;\n const error = /validation failed/.test(lensCoreError.message)\n ? lensContentValidationError(message, lensCoreError)\n : lensError(message, lensCoreError);\n\n subscriber.next(lensState.actions.applyLensFailed({ error, lens }));\n subscriber.complete();\n });\n })\n ),\n catchError((error: LensErrors) => {\n applyTimer.measure(\"failure\");\n applyTimer.stopAndReport(metrics);\n return of(lensState.actions.applyLensFailed({ error, lens }));\n }),\n\n // If a new applyLens is received, `switchMap` will unsubscribe from this inner observable,\n // which stops the current lens application. When this happens we can record a separate metric\n // to measure aborted lens applications.\n unsubscribed(() => {\n applyTimer.measure(\"abort\");\n applyTimer.stopAndReport(metrics);\n })\n );\n }),\n dispatch(lensState)\n )\n .subscribe({\n error: logger.error,\n });\n\n /**\n * Remove lens\n */\n lensState.events\n .pipe(\n inStates(\"lensApplied\", \"noLensApplied\"),\n forActions(\"removeLens\"),\n mergeMap(\n () =>\n new Observable<Actions<LensState>>((subscriber) => {\n lensCore\n .clearAllLenses()\n .then(() => {\n subscriber.next(lensState.actions.removeLensComplete());\n subscriber.complete();\n })\n .catch((lensCoreError) => {\n const error = new Error(\"Failed to remove lenses.\", { cause: lensCoreError });\n subscriber.next(lensState.actions.removeLensFailed(error));\n subscriber.complete();\n });\n })\n ),\n dispatch(lensState)\n )\n .subscribe({\n error: logger.error,\n });\n\n lensState.events\n .pipe(\n inStates(\"applyingLens\"),\n forActions(\"removeLens\"),\n switchMap(([a]) =>\n lensState.events.pipe(\n // Wait to remove the lens until it has been applied.\n inStates(\"lensApplied\"),\n // But cancel the removal if a new applyLens supersedes the current lens. The goal here is to\n // make sure the latest apply/remove preempts any previous request to apply/remove.\n takeUntil(lensState.events.pipe(forActions(\"applyLens\"))),\n map(() => a)\n )\n ),\n dispatch(lensState)\n )\n .subscribe({\n error: logger.error,\n });\n\n // Log transitions\n lensState.events.subscribe(([a, s]) => {\n const data = extractLoggableData(a);\n logger.debug(`Action: \"${a.name}\", state: \"${s.name}\"${data ? \", data: \" + JSON.stringify(data) : \"\"}`);\n });\n\n return lensState;\n }\n);\n\nfunction extractLoggableData(action: Actions<LensState>): Record<string, string> | undefined {\n switch (action.name) {\n case \"applyLens\":\n return { lensId: action.data.lens.id };\n case \"applyLensFailed\":\n return { lensId: action.data.lens.id, error: action.data.error.message };\n case \"downloadComplete\":\n case \"turnedOn\":\n case \"resourcesLoaded\":\n case \"firstFrameProcessed\":\n case \"applyLensComplete\":\n case \"applyLensAborted\":\n case \"turnedOff\":\n return { lensId: action.data.id };\n case \"removeLens\":\n case \"removeLensComplete\":\n return undefined;\n case \"removeLensFailed\":\n return { error: action.data.message };\n default:\n assertUnreachable(action);\n }\n}\n"]}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { TupleOf } from "../common/types";
|
|
2
|
+
/**
|
|
3
|
+
* Matrix as a 9-value array in column-major order,
|
|
4
|
+
* where elements are stored sequentially by columns.
|
|
5
|
+
*/
|
|
6
|
+
export type Matrix = TupleOf<number, 9>;
|
|
2
7
|
/**
|
|
3
8
|
* Use this class to supply the CameraKitSession::setSourceTransform with the proper data
|
|
4
|
-
* needed to apply transformations
|
|
9
|
+
* needed to apply transformations.
|
|
5
10
|
*
|
|
6
11
|
* @category Rendering
|
|
7
12
|
*/
|
|
8
13
|
export declare class Transform2D {
|
|
9
|
-
readonly matrix:
|
|
14
|
+
readonly matrix: Matrix;
|
|
10
15
|
static readonly MirrorX: Transform2D;
|
|
11
16
|
static readonly MirrorY: Transform2D;
|
|
12
17
|
static readonly Identity: Transform2D;
|
|
13
18
|
/**
|
|
14
19
|
* @param matrix A 3x3 matrix in column-major order, representing a 2D transform to be applied to the source media
|
|
15
20
|
*/
|
|
16
|
-
constructor(matrix:
|
|
21
|
+
constructor(matrix: Matrix);
|
|
17
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform2D.js","sourceRoot":"","sources":["../../src/transforms/Transform2D.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Transform2D.js","sourceRoot":"","sources":["../../src/transforms/Transform2D.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAa,WAAW;IAKpB;;OAEG;IACH,YAAqB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;;AAPvB,mBAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1E,mBAAO,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1E,oBAAQ,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SAHjF,WAAW","sourcesContent":["import { TupleOf } from \"../common/types\";\n\n/**\n * Matrix as a 9-value array in column-major order,\n * where elements are stored sequentially by columns.\n */\nexport type Matrix = TupleOf<number, 9>;\n\n/**\n * Use this class to supply the CameraKitSession::setSourceTransform with the proper data\n * needed to apply transformations.\n *\n * @category Rendering\n */\nexport class Transform2D {\n static readonly MirrorX = new Transform2D([-1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0]);\n static readonly MirrorY = new Transform2D([1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0]);\n static readonly Identity = new Transform2D([1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]);\n\n /**\n * @param matrix A 3x3 matrix in column-major order, representing a 2D transform to be applied to the source media\n */\n constructor(readonly matrix: Matrix) {}\n}\n"]}
|
package/lib/utils.d.ts
ADDED
package/lib/utils.js
ADDED
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAgC,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC","sourcesContent":["export { getRequiredBootstrapURLs } from \"./lens-core-module/loader/bootstrapURLs\";\nexport { getPlatformInfo, PlatformInfo, ConnectionType } from \"./platform/platformInfo\";\nexport { getCameraKitUserAgent } from \"./platform/cameraKitUserAgent\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snap/camera-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
5
5
|
"description": "Camera Kit Web",
|
|
6
6
|
"homepage": "https://ar.snap.com/camera-kit",
|
|
7
7
|
"author": "Snap Inc.",
|
|
8
|
-
"main": "lib/index.js",
|
|
9
|
-
"
|
|
8
|
+
"main": "./lib/index.js",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./lib/index.d.ts",
|
|
12
|
+
"default": "./lib/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./utils": {
|
|
15
|
+
"types": "./lib/utils.d.ts",
|
|
16
|
+
"default": "./lib/utils.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"types": "./lib/index.d.ts",
|
|
20
|
+
"typesVersions": {
|
|
21
|
+
"*": {
|
|
22
|
+
".": [
|
|
23
|
+
"lib/index.d.ts"
|
|
24
|
+
],
|
|
25
|
+
"utils": [
|
|
26
|
+
"lib/utils.d.ts"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
10
30
|
"files": [
|
|
11
31
|
"docs",
|
|
12
32
|
"lib"
|
|
@@ -39,8 +59,9 @@
|
|
|
39
59
|
"ts-jest": "29.1.0",
|
|
40
60
|
"ts-node": "10.9.1",
|
|
41
61
|
"ts-proto": "1.110.0",
|
|
42
|
-
"typedoc": "0.
|
|
43
|
-
"typedoc-plugin-markdown": "3.
|
|
62
|
+
"typedoc": "0.25.7",
|
|
63
|
+
"typedoc-plugin-markdown": "3.17.1",
|
|
64
|
+
"typedoc-plugin-mdn-links": "3.1.14",
|
|
44
65
|
"typescript": "5.0.4",
|
|
45
66
|
"webpack": "5.72.0",
|
|
46
67
|
"webpack-bundle-analyzer": "4.5.0",
|
|
@@ -49,7 +70,7 @@
|
|
|
49
70
|
},
|
|
50
71
|
"dependencies": {
|
|
51
72
|
"@improbable-eng/grpc-web": "^0.15.0",
|
|
52
|
-
"@snap/state-management": "^0.
|
|
73
|
+
"@snap/state-management": "^0.17.0",
|
|
53
74
|
"browser-fs-access": "^0.31.1",
|
|
54
75
|
"browser-headers": "^0.4.1",
|
|
55
76
|
"long": "^4.0.0",
|