@snap/camera-kit 0.7.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 +6247 -0
- package/README.md +166 -0
- package/docs/html/.nojekyll +1 -0
- package/docs/html/assets/highlight.css +106 -0
- package/docs/html/assets/main.js +54 -0
- package/docs/html/assets/search.js +1 -0
- package/docs/html/assets/style.css +1225 -0
- package/docs/html/assets/widgets.png +0 -0
- package/docs/html/assets/widgets@2x.png +0 -0
- package/docs/html/classes/CameraKit.html +121 -0
- package/docs/html/classes/CameraKitSession.html +347 -0
- package/docs/html/classes/CameraKitSource.html +152 -0
- package/docs/html/classes/LensPerformanceMeasurement.html +115 -0
- package/docs/html/classes/LensPerformanceMetrics.html +76 -0
- package/docs/html/classes/LensRepository.html +171 -0
- package/docs/html/classes/LensSources.html +82 -0
- package/docs/html/classes/Transform2D.html +99 -0
- package/docs/html/classes/TypedCustomEvent.html +109 -0
- package/docs/html/classes/TypedEventTarget.html +146 -0
- package/docs/html/functions/Injectable.html +193 -0
- package/docs/html/functions/bootstrapCameraKit.html +158 -0
- package/docs/html/functions/createExtension.html +127 -0
- package/docs/html/functions/createImageSource.html +123 -0
- package/docs/html/functions/createMediaStreamSource.html +123 -0
- package/docs/html/functions/createUserMediaSource.html +127 -0
- package/docs/html/functions/createVideoSource.html +124 -0
- package/docs/html/functions/estimateLensPerformance.html +116 -0
- package/docs/html/functions/getRequiredBootstrapURLs.html +124 -0
- package/docs/html/functions/lensSourcesFactory.html +116 -0
- package/docs/html/functions/uriHandlersFactory.html +118 -0
- package/docs/html/index.html +208 -0
- package/docs/html/interfaces/CameraKitBootstrapConfiguration.html +132 -0
- package/docs/html/interfaces/CameraKitSourceSubscriber.html +121 -0
- package/docs/html/interfaces/ComputedFrameMetrics.html +70 -0
- package/docs/html/interfaces/CreateSessionOptions.html +77 -0
- package/docs/html/interfaces/EstimatedLensPerformance.html +78 -0
- package/docs/html/interfaces/Lens.html +115 -0
- package/docs/html/interfaces/LensSource.html +113 -0
- package/docs/html/interfaces/MediaStreamSourceOptions.html +65 -0
- package/docs/html/interfaces/UriCancelRequest.html +65 -0
- package/docs/html/interfaces/UriHandler.html +128 -0
- package/docs/html/interfaces/UriRequest.html +80 -0
- package/docs/html/interfaces/UriResponse.html +80 -0
- package/docs/html/interfaces/VideoSourceOptions.html +60 -0
- package/docs/html/modules.html +198 -0
- package/docs/html/types/AssetLoader.html +126 -0
- package/docs/html/types/AssetTiming.html +116 -0
- package/docs/html/types/BenchmarkError.html +107 -0
- package/docs/html/types/BootstrapError.html +110 -0
- package/docs/html/types/CacheKeyNotFoundError.html +107 -0
- package/docs/html/types/CameraKitDeviceInfo.html +114 -0
- package/docs/html/types/CameraKitSessionEventListener.html +109 -0
- package/docs/html/types/CameraKitSessionEvents.html +118 -0
- package/docs/html/types/CameraKitSourceError.html +107 -0
- package/docs/html/types/CameraKitSourceInfo.html +107 -0
- package/docs/html/types/CameraKitSourceOptions.html +113 -0
- package/docs/html/types/ConfigurationError.html +109 -0
- package/docs/html/types/Keyboard.html +196 -0
- package/docs/html/types/KeyboardEvents.html +109 -0
- package/docs/html/types/LegalError.html +107 -0
- package/docs/html/types/LensAssetError.html +109 -0
- package/docs/html/types/LensContentValidationError.html +107 -0
- package/docs/html/types/LensError.html +107 -0
- package/docs/html/types/LensExecutionError.html +114 -0
- package/docs/html/types/LensImagePickerError.html +110 -0
- package/docs/html/types/LensLaunchParams.html +109 -0
- package/docs/html/types/LensMetricsEvents.html +110 -0
- package/docs/html/types/LensPerformanceCluster.html +107 -0
- package/docs/html/types/LensView.html +119 -0
- package/docs/html/types/LensWait.html +111 -0
- package/docs/html/types/PersistentStoreError.html +109 -0
- package/docs/html/types/PlatformNotSupportedError.html +110 -0
- package/docs/html/types/PublicContainer.html +110 -0
- package/docs/html/types/RenderTarget.html +111 -0
- package/docs/html/types/Uri.html +107 -0
- package/docs/html/types/UriHandlers.html +109 -0
- package/docs/html/types/WebGLError.html +107 -0
- package/docs/html/variables/extensionRequestContext.html +109 -0
- package/docs/md/.nojekyll +1 -0
- package/docs/md/README.md +168 -0
- package/docs/md/classes/CameraKit.md +94 -0
- package/docs/md/classes/CameraKitSession.md +359 -0
- package/docs/md/classes/CameraKitSource.md +110 -0
- package/docs/md/classes/LensPerformanceMeasurement.md +77 -0
- package/docs/md/classes/LensPerformanceMetrics.md +37 -0
- package/docs/md/classes/LensRepository.md +145 -0
- package/docs/md/classes/LensSources.md +29 -0
- package/docs/md/classes/Transform2D.md +55 -0
- package/docs/md/classes/TypedCustomEvent.md +65 -0
- package/docs/md/classes/TypedEventTarget.md +103 -0
- package/docs/md/interfaces/CameraKitBootstrapConfiguration.md +106 -0
- package/docs/md/interfaces/CameraKitSourceSubscriber.md +55 -0
- package/docs/md/interfaces/ComputedFrameMetrics.md +29 -0
- package/docs/md/interfaces/CreateSessionOptions.md +35 -0
- package/docs/md/interfaces/EstimatedLensPerformance.md +38 -0
- package/docs/md/interfaces/Lens.md +84 -0
- package/docs/md/interfaces/LensSource.md +68 -0
- package/docs/md/interfaces/MediaStreamSourceOptions.md +22 -0
- package/docs/md/interfaces/UriCancelRequest.md +22 -0
- package/docs/md/interfaces/UriHandler.md +63 -0
- package/docs/md/interfaces/UriRequest.md +43 -0
- package/docs/md/interfaces/UriResponse.md +43 -0
- package/docs/md/interfaces/VideoSourceOptions.md +15 -0
- package/docs/md/modules.md +827 -0
- package/lib/CameraKit.d.ts +170 -0
- package/lib/CameraKit.js +145 -0
- package/lib/CameraKit.js.map +1 -0
- package/lib/__tests__/data.d.ts +9 -0
- package/lib/__tests__/data.js +50 -0
- package/lib/__tests__/data.js.map +1 -0
- package/lib/__tests__/deferred.d.ts +16 -0
- package/lib/__tests__/deferred.js +29 -0
- package/lib/__tests__/deferred.js.map +1 -0
- package/lib/__tests__/jest.matchers.d.ts +17 -0
- package/lib/__tests__/jest.matchers.js +67 -0
- package/lib/__tests__/jest.matchers.js.map +1 -0
- package/lib/assertPlatformSupported.d.ts +4 -0
- package/lib/assertPlatformSupported.js +10 -0
- package/lib/assertPlatformSupported.js.map +1 -0
- package/lib/benchmark/benchmarkGflops.d.ts +16 -0
- package/lib/benchmark/benchmarkGflops.js +129 -0
- package/lib/benchmark/benchmarkGflops.js.map +1 -0
- package/lib/benchmark/estimateLensPerformanceCluster.d.ts +33 -0
- package/lib/benchmark/estimateLensPerformanceCluster.js +48 -0
- package/lib/benchmark/estimateLensPerformanceCluster.js.map +1 -0
- package/lib/benchmark/webglUtils.d.ts +7 -0
- package/lib/benchmark/webglUtils.js +87 -0
- package/lib/benchmark/webglUtils.js.map +1 -0
- package/lib/bootstrapCameraKit.d.ts +96 -0
- package/lib/bootstrapCameraKit.js +204 -0
- package/lib/bootstrapCameraKit.js.map +1 -0
- package/lib/common/__mocks__/loadScript.d.ts +1 -0
- package/lib/common/__mocks__/loadScript.js +10 -0
- package/lib/common/__mocks__/loadScript.js.map +1 -0
- package/lib/common/assertions.d.ts +27 -0
- package/lib/common/assertions.js +39 -0
- package/lib/common/assertions.js.map +1 -0
- package/lib/common/cameraKitUserAgent.d.ts +34 -0
- package/lib/common/cameraKitUserAgent.js +216 -0
- package/lib/common/cameraKitUserAgent.js.map +1 -0
- package/lib/common/copyDefinedProperties.d.ts +13 -0
- package/lib/common/copyDefinedProperties.js +16 -0
- package/lib/common/copyDefinedProperties.js.map +1 -0
- package/lib/common/entries.d.ts +3 -0
- package/lib/common/entries.js +3 -0
- package/lib/common/entries.js.map +1 -0
- package/lib/common/errorHelpers.d.ts +10 -0
- package/lib/common/errorHelpers.js +24 -0
- package/lib/common/errorHelpers.js.map +1 -0
- package/lib/common/getFilename.d.ts +1 -0
- package/lib/common/getFilename.js +4 -0
- package/lib/common/getFilename.js.map +1 -0
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.js +3 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/loadScript.d.ts +1 -0
- package/lib/common/loadScript.js +11 -0
- package/lib/common/loadScript.js.map +1 -0
- package/lib/common/locale.d.ts +2 -0
- package/lib/common/locale.js +11 -0
- package/lib/common/locale.js.map +1 -0
- package/lib/common/localization.d.ts +43 -0
- package/lib/common/localization.js +43 -0
- package/lib/common/localization.js.map +1 -0
- package/lib/common/memoize.d.ts +8 -0
- package/lib/common/memoize.js +15 -0
- package/lib/common/memoize.js.map +1 -0
- package/lib/common/pageVisibility.d.ts +20 -0
- package/lib/common/pageVisibility.js +62 -0
- package/lib/common/pageVisibility.js.map +1 -0
- package/lib/common/time.d.ts +1 -0
- package/lib/common/time.js +2 -0
- package/lib/common/time.js.map +1 -0
- package/lib/common/typeguards.d.ts +53 -0
- package/lib/common/typeguards.js +92 -0
- package/lib/common/typeguards.js.map +1 -0
- package/lib/common/types.d.ts +10 -0
- package/lib/common/types.js +2 -0
- package/lib/common/types.js.map +1 -0
- package/lib/common/validate.d.ts +14 -0
- package/lib/common/validate.js +104 -0
- package/lib/common/validate.js.map +1 -0
- package/lib/configuration.d.ts +92 -0
- package/lib/configuration.js +36 -0
- package/lib/configuration.js.map +1 -0
- package/lib/configurationOverrides.d.ts +12 -0
- package/lib/configurationOverrides.js +41 -0
- package/lib/configurationOverrides.js.map +1 -0
- package/lib/dependency-injection/Container.d.ts +177 -0
- package/lib/dependency-injection/Container.js +160 -0
- package/lib/dependency-injection/Container.js.map +1 -0
- package/lib/dependency-injection/Injectable.d.ts +39 -0
- package/lib/dependency-injection/Injectable.js +18 -0
- package/lib/dependency-injection/Injectable.js.map +1 -0
- package/lib/dependency-injection/PartialContainer.d.ts +81 -0
- package/lib/dependency-injection/PartialContainer.js +85 -0
- package/lib/dependency-injection/PartialContainer.js.map +1 -0
- package/lib/dependency-injection/RootServices.d.ts +62 -0
- package/lib/dependency-injection/RootServices.js +2 -0
- package/lib/dependency-injection/RootServices.js.map +1 -0
- package/lib/dependency-injection/types.d.ts +56 -0
- package/lib/dependency-injection/types.js +2 -0
- package/lib/dependency-injection/types.js.map +1 -0
- package/lib/environment.json +1 -0
- package/lib/events/TypedCustomEvent.d.ts +10 -0
- package/lib/events/TypedCustomEvent.js +11 -0
- package/lib/events/TypedCustomEvent.js.map +1 -0
- package/lib/events/TypedEventTarget.d.ts +25 -0
- package/lib/events/TypedEventTarget.js +57 -0
- package/lib/events/TypedEventTarget.js.map +1 -0
- package/lib/events/scan.d.ts +15 -0
- package/lib/events/scan.js +46 -0
- package/lib/events/scan.js.map +1 -0
- package/lib/extensions/LensSources.d.ts +58 -0
- package/lib/extensions/LensSources.js +50 -0
- package/lib/extensions/LensSources.js.map +1 -0
- package/lib/extensions/UriHandlers.d.ts +54 -0
- package/lib/extensions/UriHandlers.js +93 -0
- package/lib/extensions/UriHandlers.js.map +1 -0
- package/lib/extensions/extensionRequestContext.d.ts +4 -0
- package/lib/extensions/extensionRequestContext.js +14 -0
- package/lib/extensions/extensionRequestContext.js.map +1 -0
- package/lib/generated-proto/blizzard/cameraKitEvents.d.ts +5603 -0
- package/lib/generated-proto/blizzard/cameraKitEvents.js +522 -0
- package/lib/generated-proto/blizzard/cameraKitEvents.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.d.ts +98 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.js +260 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/export.d.ts +543 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/export.js +429 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/export.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.d.ts +100 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.js +164 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/lens.d.ts +395 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/lens.js +644 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/lens.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.d.ts +185 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.js +172 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.d.ts +86 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.js +234 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.js.map +1 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/service.d.ts +854 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/service.js +629 -0
- package/lib/generated-proto/pb_schema/camera_kit/v3/service.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark.d.ts +86 -0
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark.js +185 -0
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark_name.d.ts +95 -0
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark_name.js +104 -0
- package/lib/generated-proto/pb_schema/cdp/cof/benchmark_name.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.d.ts +10212 -0
- package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.js +1300 -0
- package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_request.d.ts +401 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_request.js +525 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_request.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_response.d.ts +1287 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_response.js +135 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_response.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_result.d.ts +4208 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_result.js +1053 -0
- package/lib/generated-proto/pb_schema/cdp/cof/config_result.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/debug_info.d.ts +102 -0
- package/lib/generated-proto/pb_schema/cdp/cof/debug_info.js +165 -0
- package/lib/generated-proto/pb_schema/cdp/cof/debug_info.js.map +1 -0
- package/lib/generated-proto/pb_schema/cdp/cof/namespace.d.ts +8 -0
- package/lib/generated-proto/pb_schema/cdp/cof/namespace.js +17 -0
- package/lib/generated-proto/pb_schema/cdp/cof/namespace.js.map +1 -0
- package/lib/generated-proto/pb_schema/common/ruid.d.ts +75 -0
- package/lib/generated-proto/pb_schema/common/ruid.js +96 -0
- package/lib/generated-proto/pb_schema/common/ruid.js.map +1 -0
- package/lib/generated-proto/pb_schema/common/value.d.ts +131 -0
- package/lib/generated-proto/pb_schema/common/value.js +204 -0
- package/lib/generated-proto/pb_schema/common/value.js.map +1 -0
- package/lib/generated-proto/pb_schema/google/api/annotations.d.ts +1 -0
- package/lib/generated-proto/pb_schema/google/api/annotations.js +9 -0
- package/lib/generated-proto/pb_schema/google/api/annotations.js.map +1 -0
- package/lib/generated-proto/pb_schema/google/api/http.d.ts +3636 -0
- package/lib/generated-proto/pb_schema/google/api/http.js +271 -0
- package/lib/generated-proto/pb_schema/google/api/http.js.map +1 -0
- package/lib/generated-proto/pb_schema/google/protobuf/any.d.ts +139 -0
- package/lib/generated-proto/pb_schema/google/protobuf/any.js +94 -0
- package/lib/generated-proto/pb_schema/google/protobuf/any.js.map +1 -0
- package/lib/generated-proto/pb_schema/google/protobuf/descriptor.d.ts +50968 -0
- package/lib/generated-proto/pb_schema/google/protobuf/descriptor.js +2962 -0
- package/lib/generated-proto/pb_schema/google/protobuf/descriptor.js.map +1 -0
- package/lib/generated-proto/pb_schema/google/protobuf/timestamp.d.ts +98 -0
- package/lib/generated-proto/pb_schema/google/protobuf/timestamp.js +82 -0
- package/lib/generated-proto/pb_schema/google/protobuf/timestamp.js.map +1 -0
- package/lib/generated-proto/pb_schema/google/protobuf/wrappers.d.ts +173 -0
- package/lib/generated-proto/pb_schema/google/protobuf/wrappers.js +332 -0
- package/lib/generated-proto/pb_schema/google/protobuf/wrappers.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/geocircle.d.ts +42 -0
- package/lib/generated-proto/pb_schema/lenses/geocircle.js +52 -0
- package/lib/generated-proto/pb_schema/lenses/geocircle.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/geopoint.d.ts +32 -0
- package/lib/generated-proto/pb_schema/lenses/geopoint.js +50 -0
- package/lib/generated-proto/pb_schema/lenses/geopoint.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/launch_params.d.ts +29 -0
- package/lib/generated-proto/pb_schema/lenses/launch_params.js +43 -0
- package/lib/generated-proto/pb_schema/lenses/launch_params.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/launchdata.d.ts +365 -0
- package/lib/generated-proto/pb_schema/lenses/launchdata.js +216 -0
- package/lib/generated-proto/pb_schema/lenses/launchdata.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/lures.d.ts +113 -0
- package/lib/generated-proto/pb_schema/lenses/lures.js +64 -0
- package/lib/generated-proto/pb_schema/lenses/lures.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/persistent_store.d.ts +29 -0
- package/lib/generated-proto/pb_schema/lenses/persistent_store.js +43 -0
- package/lib/generated-proto/pb_schema/lenses/persistent_store.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/snappable.d.ts +921 -0
- package/lib/generated-proto/pb_schema/lenses/snappable.js +954 -0
- package/lib/generated-proto/pb_schema/lenses/snappable.js.map +1 -0
- package/lib/generated-proto/pb_schema/lenses/user_data.d.ts +247 -0
- package/lib/generated-proto/pb_schema/lenses/user_data.js +362 -0
- package/lib/generated-proto/pb_schema/lenses/user_data.js.map +1 -0
- package/lib/handlers/HandlerChainBuilder.d.ts +95 -0
- package/lib/handlers/HandlerChainBuilder.js +187 -0
- package/lib/handlers/HandlerChainBuilder.js.map +1 -0
- package/lib/handlers/arrayBufferParsingHandler.d.ts +10 -0
- package/lib/handlers/arrayBufferParsingHandler.js +18 -0
- package/lib/handlers/arrayBufferParsingHandler.js.map +1 -0
- package/lib/handlers/batchingHandler.d.ts +25 -0
- package/lib/handlers/batchingHandler.js +79 -0
- package/lib/handlers/batchingHandler.js.map +1 -0
- package/lib/handlers/cameraKitServiceFetchHandlerFactory.d.ts +12 -0
- package/lib/handlers/cameraKitServiceFetchHandlerFactory.js +19 -0
- package/lib/handlers/cameraKitServiceFetchHandlerFactory.js.map +1 -0
- package/lib/handlers/debugHandler.d.ts +8 -0
- package/lib/handlers/debugHandler.js +27 -0
- package/lib/handlers/debugHandler.js.map +1 -0
- package/lib/handlers/defaultFetchHandler.d.ts +15 -0
- package/lib/handlers/defaultFetchHandler.js +29 -0
- package/lib/handlers/defaultFetchHandler.js.map +1 -0
- package/lib/handlers/headersModifyingFetchHandler.d.ts +8 -0
- package/lib/handlers/headersModifyingFetchHandler.js +13 -0
- package/lib/handlers/headersModifyingFetchHandler.js.map +1 -0
- package/lib/handlers/index.d.ts +2 -0
- package/lib/handlers/index.js +3 -0
- package/lib/handlers/index.js.map +1 -0
- package/lib/handlers/mappingHandler.d.ts +15 -0
- package/lib/handlers/mappingHandler.js +65 -0
- package/lib/handlers/mappingHandler.js.map +1 -0
- package/lib/handlers/noCorsRetryingFetchHandler.d.ts +48 -0
- package/lib/handlers/noCorsRetryingFetchHandler.js +94 -0
- package/lib/handlers/noCorsRetryingFetchHandler.js.map +1 -0
- package/lib/handlers/persistingHandler.d.ts +14 -0
- package/lib/handlers/persistingHandler.js +71 -0
- package/lib/handlers/persistingHandler.js.map +1 -0
- package/lib/handlers/rateLimitingHandler.d.ts +20 -0
- package/lib/handlers/rateLimitingHandler.js +43 -0
- package/lib/handlers/rateLimitingHandler.js.map +1 -0
- package/lib/handlers/requestStateEmittingHandler.d.ts +29 -0
- package/lib/handlers/requestStateEmittingHandler.js +43 -0
- package/lib/handlers/requestStateEmittingHandler.js.map +1 -0
- package/lib/handlers/responseCachingHandler.d.ts +27 -0
- package/lib/handlers/responseCachingHandler.js +94 -0
- package/lib/handlers/responseCachingHandler.js.map +1 -0
- package/lib/handlers/retryingHandler.d.ts +37 -0
- package/lib/handlers/retryingHandler.js +73 -0
- package/lib/handlers/retryingHandler.js.map +1 -0
- package/lib/handlers/timeoutHandler.d.ts +18 -0
- package/lib/handlers/timeoutHandler.js +30 -0
- package/lib/handlers/timeoutHandler.js.map +1 -0
- package/lib/index.d.ts +33 -0
- package/lib/index.js +32 -0
- package/lib/index.js.map +1 -0
- package/lib/legal/legalPrompt.d.ts +17 -0
- package/lib/legal/legalPrompt.js +144 -0
- package/lib/legal/legalPrompt.js.map +1 -0
- package/lib/legal/legalState.d.ts +50 -0
- package/lib/legal/legalState.js +149 -0
- package/lib/legal/legalState.js.map +1 -0
- package/lib/lens/Lens.d.ts +71 -0
- package/lib/lens/Lens.js +63 -0
- package/lib/lens/Lens.js.map +1 -0
- package/lib/lens/LensLaunchParams.d.ts +19 -0
- package/lib/lens/LensLaunchParams.js +38 -0
- package/lib/lens/LensLaunchParams.js.map +1 -0
- package/lib/lens/LensPersistenceStore.d.ts +7 -0
- package/lib/lens/LensPersistenceStore.js +20 -0
- package/lib/lens/LensPersistenceStore.js.map +1 -0
- package/lib/lens/LensRepository.d.ts +134 -0
- package/lib/lens/LensRepository.js +239 -0
- package/lib/lens/LensRepository.js.map +1 -0
- package/lib/lens/assets/LensAssetRepository.d.ts +66 -0
- package/lib/lens/assets/LensAssetRepository.js +179 -0
- package/lib/lens/assets/LensAssetRepository.js.map +1 -0
- package/lib/lens/assets/LensAssetsProvider.d.ts +21 -0
- package/lib/lens/assets/LensAssetsProvider.js +41 -0
- package/lib/lens/assets/LensAssetsProvider.js.map +1 -0
- package/lib/lens/assets/deviceDependentAssetLoader.d.ts +11 -0
- package/lib/lens/assets/deviceDependentAssetLoader.js +58 -0
- package/lib/lens/assets/deviceDependentAssetLoader.js.map +1 -0
- package/lib/lens/assets/remoteMediaAssetLoaderFactory.d.ts +10 -0
- package/lib/lens/assets/remoteMediaAssetLoaderFactory.js +26 -0
- package/lib/lens/assets/remoteMediaAssetLoaderFactory.js.map +1 -0
- package/lib/lens/assets/staticAssetLoader.d.ts +10 -0
- package/lib/lens/assets/staticAssetLoader.js +24 -0
- package/lib/lens/assets/staticAssetLoader.js.map +1 -0
- package/lib/lens/index.d.ts +7 -0
- package/lib/lens/index.js +7 -0
- package/lib/lens/index.js.map +1 -0
- package/lib/lens/lensEnvelopeUtil.d.ts +5 -0
- package/lib/lens/lensEnvelopeUtil.js +19 -0
- package/lib/lens/lensEnvelopeUtil.js.map +1 -0
- package/lib/lens/lensHttpUtil.d.ts +4 -0
- package/lib/lens/lensHttpUtil.js +30 -0
- package/lib/lens/lensHttpUtil.js.map +1 -0
- package/lib/lens-client-interface/exif.d.ts +20 -0
- package/lib/lens-client-interface/exif.js +61 -0
- package/lib/lens-client-interface/exif.js.map +1 -0
- package/lib/lens-client-interface/imagePicker.d.ts +7 -0
- package/lib/lens-client-interface/imagePicker.js +128 -0
- package/lib/lens-client-interface/imagePicker.js.map +1 -0
- package/lib/lens-client-interface/lensClientInterface.d.ts +13 -0
- package/lib/lens-client-interface/lensClientInterface.js +30 -0
- package/lib/lens-client-interface/lensClientInterface.js.map +1 -0
- package/lib/lens-core-module/generated-types.d.ts +426 -0
- package/lib/lens-core-module/generated-types.js +2 -0
- package/lib/lens-core-module/generated-types.js.map +1 -0
- package/lib/lens-core-module/index.d.ts +2 -0
- package/lib/lens-core-module/index.js +3 -0
- package/lib/lens-core-module/index.js.map +1 -0
- package/lib/lens-core-module/loader/index.d.ts +1 -0
- package/lib/lens-core-module/loader/index.js +2 -0
- package/lib/lens-core-module/loader/index.js.map +1 -0
- package/lib/lens-core-module/loader/lensCoreFactory.d.ts +30 -0
- package/lib/lens-core-module/loader/lensCoreFactory.js +121 -0
- package/lib/lens-core-module/loader/lensCoreFactory.js.map +1 -0
- package/lib/lensCoreWasmVersions.json +5 -0
- package/lib/logger/errorLoggingDecorator.d.ts +9 -0
- package/lib/logger/errorLoggingDecorator.js +32 -0
- package/lib/logger/errorLoggingDecorator.js.map +1 -0
- package/lib/logger/logEntries.d.ts +15 -0
- package/lib/logger/logEntries.js +14 -0
- package/lib/logger/logEntries.js.map +1 -0
- package/lib/logger/logger.d.ts +35 -0
- package/lib/logger/logger.js +48 -0
- package/lib/logger/logger.js.map +1 -0
- package/lib/logger/registerLogEntriesSubscriber.d.ts +14 -0
- package/lib/logger/registerLogEntriesSubscriber.js +23 -0
- package/lib/logger/registerLogEntriesSubscriber.js.map +1 -0
- package/lib/media-sources/CameraKitSource.d.ts +88 -0
- package/lib/media-sources/CameraKitSource.js +140 -0
- package/lib/media-sources/CameraKitSource.js.map +1 -0
- package/lib/media-sources/FunctionSource.d.ts +30 -0
- package/lib/media-sources/FunctionSource.js +132 -0
- package/lib/media-sources/FunctionSource.js.map +1 -0
- package/lib/media-sources/ImageSource.d.ts +13 -0
- package/lib/media-sources/ImageSource.js +28 -0
- package/lib/media-sources/ImageSource.js.map +1 -0
- package/lib/media-sources/MediaStreamSource.d.ts +41 -0
- package/lib/media-sources/MediaStreamSource.js +146 -0
- package/lib/media-sources/MediaStreamSource.js.map +1 -0
- package/lib/media-sources/VideoSource.d.ts +21 -0
- package/lib/media-sources/VideoSource.js +38 -0
- package/lib/media-sources/VideoSource.js.map +1 -0
- package/lib/metrics/businessEventsReporter.d.ts +37 -0
- package/lib/metrics/businessEventsReporter.js +160 -0
- package/lib/metrics/businessEventsReporter.js.map +1 -0
- package/lib/metrics/metricsEventTarget.d.ts +41 -0
- package/lib/metrics/metricsEventTarget.js +11 -0
- package/lib/metrics/metricsEventTarget.js.map +1 -0
- package/lib/metrics/metricsHandler.d.ts +9 -0
- package/lib/metrics/metricsHandler.js +13 -0
- package/lib/metrics/metricsHandler.js.map +1 -0
- package/lib/metrics/operationalMetricsReporter.d.ts +52 -0
- package/lib/metrics/operationalMetricsReporter.js +108 -0
- package/lib/metrics/operationalMetricsReporter.js.map +1 -0
- package/lib/metrics/reporters/reportBenchmarks.d.ts +10 -0
- package/lib/metrics/reporters/reportBenchmarks.js +29 -0
- package/lib/metrics/reporters/reportBenchmarks.js.map +1 -0
- package/lib/metrics/reporters/reportGlobalException.d.ts +19 -0
- package/lib/metrics/reporters/reportGlobalException.js +68 -0
- package/lib/metrics/reporters/reportGlobalException.js.map +1 -0
- package/lib/metrics/reporters/reportHttpMetrics.d.ts +17 -0
- package/lib/metrics/reporters/reportHttpMetrics.js +92 -0
- package/lib/metrics/reporters/reportHttpMetrics.js.map +1 -0
- package/lib/metrics/reporters/reportLegalState.d.ts +15 -0
- package/lib/metrics/reporters/reportLegalState.js +34 -0
- package/lib/metrics/reporters/reportLegalState.js.map +1 -0
- package/lib/metrics/reporters/reportLensAndAssetDownload.d.ts +38 -0
- package/lib/metrics/reporters/reportLensAndAssetDownload.js +88 -0
- package/lib/metrics/reporters/reportLensAndAssetDownload.js.map +1 -0
- package/lib/metrics/reporters/reportLensValidationFailed.d.ts +20 -0
- package/lib/metrics/reporters/reportLensValidationFailed.js +24 -0
- package/lib/metrics/reporters/reportLensValidationFailed.js.map +1 -0
- package/lib/metrics/reporters/reportLensView.d.ts +36 -0
- package/lib/metrics/reporters/reportLensView.js +101 -0
- package/lib/metrics/reporters/reportLensView.js.map +1 -0
- package/lib/metrics/reporters/reportLensWait.d.ts +33 -0
- package/lib/metrics/reporters/reportLensWait.js +56 -0
- package/lib/metrics/reporters/reportLensWait.js.map +1 -0
- package/lib/metrics/reporters/reportSessionException.d.ts +17 -0
- package/lib/metrics/reporters/reportSessionException.js +12 -0
- package/lib/metrics/reporters/reportSessionException.js.map +1 -0
- package/lib/metrics/reporters/reportUserSession.d.ts +14 -0
- package/lib/metrics/reporters/reportUserSession.js +67 -0
- package/lib/metrics/reporters/reportUserSession.js.map +1 -0
- package/lib/metrics/reporters/reporters.d.ts +44 -0
- package/lib/metrics/reporters/reporters.js +33 -0
- package/lib/metrics/reporters/reporters.js.map +1 -0
- package/lib/namedErrors.d.ts +107 -0
- package/lib/namedErrors.js +56 -0
- package/lib/namedErrors.js.map +1 -0
- package/lib/persistence/ExpiringPersistence.d.ts +20 -0
- package/lib/persistence/ExpiringPersistence.js +58 -0
- package/lib/persistence/ExpiringPersistence.js.map +1 -0
- package/lib/persistence/IndexedDBPersistence.d.ts +47 -0
- package/lib/persistence/IndexedDBPersistence.js +180 -0
- package/lib/persistence/IndexedDBPersistence.js.map +1 -0
- package/lib/persistence/Persistence.d.ts +25 -0
- package/lib/persistence/Persistence.js +10 -0
- package/lib/persistence/Persistence.js.map +1 -0
- package/lib/remote-configuration/cofHandler.d.ts +21 -0
- package/lib/remote-configuration/cofHandler.js +75 -0
- package/lib/remote-configuration/cofHandler.js.map +1 -0
- package/lib/remote-configuration/remoteConfiguration.d.ts +13 -0
- package/lib/remote-configuration/remoteConfiguration.js +43 -0
- package/lib/remote-configuration/remoteConfiguration.js.map +1 -0
- package/lib/session/CameraKitSession.d.ts +252 -0
- package/lib/session/CameraKitSession.js +439 -0
- package/lib/session/CameraKitSession.js.map +1 -0
- package/lib/session/CameraKitSessionEvents.d.ts +33 -0
- package/lib/session/CameraKitSessionEvents.js +21 -0
- package/lib/session/CameraKitSessionEvents.js.map +1 -0
- package/lib/session/LensKeyboard.d.ts +89 -0
- package/lib/session/LensKeyboard.js +95 -0
- package/lib/session/LensKeyboard.js.map +1 -0
- package/lib/session/LensPerformanceMeasurement.d.ts +55 -0
- package/lib/session/LensPerformanceMeasurement.js +91 -0
- package/lib/session/LensPerformanceMeasurement.js.map +1 -0
- package/lib/session/LensPerformanceMetrics.d.ts +31 -0
- package/lib/session/LensPerformanceMetrics.js +58 -0
- package/lib/session/LensPerformanceMetrics.js.map +1 -0
- package/lib/session/index.d.ts +1 -0
- package/lib/session/index.js +2 -0
- package/lib/session/index.js.map +1 -0
- package/lib/session/lensState.d.ts +29 -0
- package/lib/session/lensState.js +160 -0
- package/lib/session/lensState.js.map +1 -0
- package/lib/session/sessionState.d.ts +10 -0
- package/lib/session/sessionState.js +12 -0
- package/lib/session/sessionState.js.map +1 -0
- package/lib/transforms/Transform2D.d.ts +17 -0
- package/lib/transforms/Transform2D.js +18 -0
- package/lib/transforms/Transform2D.js.map +1 -0
- package/lib/transforms/index.d.ts +1 -0
- package/lib/transforms/index.js +2 -0
- package/lib/transforms/index.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { LensRepository } from "./lens/LensRepository";
|
|
2
|
+
import { Container } from "./dependency-injection/Container";
|
|
3
|
+
import { LensCoreModule } from "./lens-core-module/generated-types";
|
|
4
|
+
import { CameraKitSession } from "./session/CameraKitSession";
|
|
5
|
+
import { RootServices } from "./dependency-injection/RootServices";
|
|
6
|
+
import { MetricsEventTarget } from "./metrics/metricsEventTarget";
|
|
7
|
+
import { TypedEventTarget } from "./events/TypedEventTarget";
|
|
8
|
+
import { TypedCustomEvent } from "./events/TypedCustomEvent";
|
|
9
|
+
import { LensView } from "./metrics/reporters/reportLensView";
|
|
10
|
+
import { LensWait } from "./metrics/reporters/reportLensWait";
|
|
11
|
+
/**
|
|
12
|
+
* Lens metrics events.
|
|
13
|
+
*
|
|
14
|
+
* These events are emitted by {@link CameraKit} to report lens usage, performance, apply latency, etc.
|
|
15
|
+
*
|
|
16
|
+
* @category Lenses
|
|
17
|
+
* @category Metrics
|
|
18
|
+
*/
|
|
19
|
+
export declare type LensMetricsEvents = TypedCustomEvent<LensView["name"], LensView> | TypedCustomEvent<LensWait["name"], LensWait>;
|
|
20
|
+
/**
|
|
21
|
+
* Options available when creating a {@link CameraKitSession}.
|
|
22
|
+
*
|
|
23
|
+
* @category Rendering
|
|
24
|
+
*/
|
|
25
|
+
export interface CreateSessionOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Optionally provide an existing canvas element, on which the Live RenderTarget will be rendered.
|
|
28
|
+
*
|
|
29
|
+
* If this is not provided, CameraKit will create a new canvas element which can be added to the DOM.
|
|
30
|
+
*/
|
|
31
|
+
liveRenderTarget?: HTMLCanvasElement;
|
|
32
|
+
/**
|
|
33
|
+
* Browsers optimize tabs when they are hidden - for example, by pausing the execution of requestAnimationFrame
|
|
34
|
+
* callbacks.
|
|
35
|
+
*
|
|
36
|
+
* If you need the CameraKitSession to continue rendering even when the tab is in the background, set this to true.
|
|
37
|
+
* There is a small performance penalty, and it's a good practice to only render in the background if absolutely
|
|
38
|
+
* necessary.
|
|
39
|
+
*/
|
|
40
|
+
renderWhileTabHidden?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The entry point to the CameraKit SDK's API. Most of CameraKit's features are accessed via this class.
|
|
44
|
+
*
|
|
45
|
+
* Applications obtain an instance of CameraKit by calling {@link bootstrapCameraKit}.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const cameraKit = await bootstrapCameraKit(config)
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* Then this class can be used to:
|
|
53
|
+
* - Create a {@link CameraKitSession} instance, which provides the API for setting up media inputs, applying Lenses,
|
|
54
|
+
* and obtaining rendered `<canvas>` outputs.
|
|
55
|
+
* - Query for lenses using {@link LensRepository}.
|
|
56
|
+
* - Listen for lens usage metrics events using {@link MetricsEventTarget}.
|
|
57
|
+
*
|
|
58
|
+
* @category Rendering
|
|
59
|
+
* @category Lenses
|
|
60
|
+
*/
|
|
61
|
+
export declare class CameraKit {
|
|
62
|
+
/**
|
|
63
|
+
* Used to query for lenses and lens groups.
|
|
64
|
+
*/
|
|
65
|
+
readonly lensRepository: LensRepository;
|
|
66
|
+
private readonly lensCore;
|
|
67
|
+
private readonly container;
|
|
68
|
+
/** @deprecated Use {@link lensRepository} */
|
|
69
|
+
readonly lenses: {
|
|
70
|
+
repository: LensRepository;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Business metrics (e.g. each time a lens is viewed) are emitted here.
|
|
74
|
+
*/
|
|
75
|
+
readonly metrics: TypedEventTarget<LensMetricsEvents>;
|
|
76
|
+
/** @internal */
|
|
77
|
+
constructor(
|
|
78
|
+
/**
|
|
79
|
+
* Used to query for lenses and lens groups.
|
|
80
|
+
*/
|
|
81
|
+
lensRepository: LensRepository, lensCore: LensCoreModule, container: Container<RootServices>, allMetrics: MetricsEventTarget);
|
|
82
|
+
/**
|
|
83
|
+
* Create a CameraKitSession.
|
|
84
|
+
*
|
|
85
|
+
* This initializes the rendering engine and returns a {@link CameraKitSession} instance, which provides access
|
|
86
|
+
* to Lens rendering.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const cameraKit = await bootstrapCameraKit(config)
|
|
91
|
+
* const session = await cameraKit.createSession()
|
|
92
|
+
*
|
|
93
|
+
* const lens = await cameraKit.lensRepository.loadLens(lensId, groupId)
|
|
94
|
+
* session.applyLens(lens)
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @param options
|
|
98
|
+
*/
|
|
99
|
+
createSession({ liveRenderTarget, renderWhileTabHidden, }?: CreateSessionOptions): Promise<CameraKitSession>;
|
|
100
|
+
}
|
|
101
|
+
/** @internal */
|
|
102
|
+
export declare const cameraKitFactory: {
|
|
103
|
+
(args_0: LensRepository, args_1: MetricsEventTarget, args_2: LensCoreModule, args_3: Container<{
|
|
104
|
+
LensRepository: LensRepository;
|
|
105
|
+
} & {
|
|
106
|
+
metricsEventTarget: MetricsEventTarget;
|
|
107
|
+
} & {
|
|
108
|
+
lensCore: LensCoreModule;
|
|
109
|
+
} & {
|
|
110
|
+
lensCore: LensCoreModule;
|
|
111
|
+
} & import("./dependency-injection/RootServices").PublicServices & import("./dependency-injection/types").ServicesFromInjectables<[{
|
|
112
|
+
(): MetricsEventTarget;
|
|
113
|
+
token: "metricsEventTarget";
|
|
114
|
+
dependencies: [];
|
|
115
|
+
}, {
|
|
116
|
+
(args_0: import("./configuration").CameraKitConfiguration, args_1: import("./handlers").FetchHandler<Response>): import("./handlers/HandlerChainBuilder").Handler<RequestInfo, Response, RequestInit | undefined>;
|
|
117
|
+
token: "cameraKitServiceFetchHandler";
|
|
118
|
+
dependencies: readonly ["configuration", "defaultFetchHandler"];
|
|
119
|
+
}, {
|
|
120
|
+
(args_0: import("./configuration").CameraKitConfiguration): import("./remote-configuration/remoteConfiguration").RemoteConfiguration;
|
|
121
|
+
token: "remoteConfiguration";
|
|
122
|
+
dependencies: readonly ["configuration"];
|
|
123
|
+
}, {
|
|
124
|
+
(args_0: import("./handlers").FetchHandler<Response>, args_1: import("./handlers").FetchHandler<Response>, args_2: import("./lens").LensSources, args_3: import("./lens").LensAssetRepository): LensRepository;
|
|
125
|
+
token: "LensRepository";
|
|
126
|
+
dependencies: readonly ["cameraKitServiceFetchHandler", "defaultFetchHandler", "lensSources", "lensAssetRepository"];
|
|
127
|
+
}, {
|
|
128
|
+
(args_0: LensCoreModule): import("./persistence/IndexedDBPersistence").IndexedDBPersistence<ArrayBuffer>;
|
|
129
|
+
token: "lensPersistenceStore";
|
|
130
|
+
dependencies: readonly ["lensCore"];
|
|
131
|
+
}, {
|
|
132
|
+
(args_0: import("./handlers").FetchHandler<Response>): import("./handlers/HandlerChainBuilder").Handler<RequestInfo, Response, RequestInit | undefined>;
|
|
133
|
+
token: "metricsHandler";
|
|
134
|
+
dependencies: readonly ["cameraKitServiceFetchHandler"];
|
|
135
|
+
}, {
|
|
136
|
+
(args_0: import("./handlers").FetchHandler<Response>): import("./metrics/operationalMetricsReporter").OperationalMetricsReporter;
|
|
137
|
+
token: "operationalMetricsReporter";
|
|
138
|
+
dependencies: readonly ["metricsHandler"];
|
|
139
|
+
}, {
|
|
140
|
+
(args_0: LensCoreModule, args_1: import("./lens").AssetLoader, args_2: import("./lens").AssetLoader, args_3: import("./lens").AssetLoader, args_4: MetricsEventTarget): import("./lens").LensAssetRepository;
|
|
141
|
+
token: "lensAssetRepository";
|
|
142
|
+
dependencies: readonly ["lensCore", "deviceDependentAssetLoader", "remoteMediaAssetLoader", "staticAssetLoader", "metricsEventTarget"];
|
|
143
|
+
}, {
|
|
144
|
+
(args_0: import("./handlers").FetchHandler<Response>, args_1: import("./remote-configuration/remoteConfiguration").RemoteConfiguration): import("./lens").AssetLoader;
|
|
145
|
+
token: "deviceDependentAssetLoader";
|
|
146
|
+
dependencies: readonly ["defaultFetchHandler", "remoteConfiguration"];
|
|
147
|
+
}, {
|
|
148
|
+
(args_0: import("./handlers").FetchHandler<Response>): import("./lens").AssetLoader;
|
|
149
|
+
token: "staticAssetLoader";
|
|
150
|
+
dependencies: readonly ["defaultFetchHandler"];
|
|
151
|
+
}, {
|
|
152
|
+
(args_0: import("./remote-configuration/remoteConfiguration").RemoteConfiguration, args_1: import("./legal/legalPrompt").LegalPrompt): import("@snap/state-management").StateMachine<import("@snap/state-management").Action<"requestLegalPrompt", undefined> | import("@snap/state-management").Action<"accept", string> | import("@snap/state-management").Action<"reject", string>, import("@snap/state-management").State<"unknown", undefined> | import("@snap/state-management").State<"accepted", undefined> | import("@snap/state-management").State<"rejected", undefined>>;
|
|
153
|
+
token: "legalState";
|
|
154
|
+
dependencies: readonly ["remoteConfiguration", "legalPrompt"];
|
|
155
|
+
}, {
|
|
156
|
+
(): import("./legal/legalPrompt").LegalPrompt;
|
|
157
|
+
token: "legalPrompt";
|
|
158
|
+
dependencies: [];
|
|
159
|
+
}, {
|
|
160
|
+
(): import("rxjs").Observable<import("./logger/logger").LogEntry>;
|
|
161
|
+
token: "logEntries";
|
|
162
|
+
dependencies: [];
|
|
163
|
+
}, {
|
|
164
|
+
(args_0: import("rxjs").Observable<import("./logger/logger").LogEntry>, args_1: MetricsEventTarget, args_2: import("./metrics/operationalMetricsReporter").OperationalMetricsReporter): import("./metrics/reporters/reportGlobalException").GlobalExceptionReporter;
|
|
165
|
+
token: "reportGlobalException";
|
|
166
|
+
dependencies: readonly ["logEntries", "metricsEventTarget", "operationalMetricsReporter"];
|
|
167
|
+
}]>>): CameraKit;
|
|
168
|
+
token: "CameraKit";
|
|
169
|
+
dependencies: readonly ["LensRepository", "metricsEventTarget", "lensCore", "$container"];
|
|
170
|
+
};
|
package/lib/CameraKit.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { __awaiter, __decorate, __metadata } from "tslib";
|
|
2
|
+
import { lensRepositoryFactory } from "./lens/LensRepository";
|
|
3
|
+
import { CONTAINER } from "./dependency-injection/Container";
|
|
4
|
+
import { Injectable } from "./dependency-injection/Injectable";
|
|
5
|
+
import { cameraKitSessionFactory } from "./session/CameraKitSession";
|
|
6
|
+
import { registerLensAssetsProvider } from "./lens/assets/LensAssetsProvider";
|
|
7
|
+
import { lensCoreFactory } from "./lens-core-module/loader/lensCoreFactory";
|
|
8
|
+
import { configurationToken } from "./configuration";
|
|
9
|
+
import { registerUriHandlers } from "./extensions/UriHandlers";
|
|
10
|
+
import { metricsEventTargetFactory } from "./metrics/metricsEventTarget";
|
|
11
|
+
import { reportSessionScopedMetrics } from "./metrics/reporters/reporters";
|
|
12
|
+
import { lensStateFactory } from "./session/lensState";
|
|
13
|
+
import { lensKeyboardFactory } from "./session/LensKeyboard";
|
|
14
|
+
import { registerLensClientInterfaceHandler } from "./lens-client-interface/lensClientInterface";
|
|
15
|
+
import { sessionStateFactory } from "./session/sessionState";
|
|
16
|
+
import { lensExecutionError } from "./namedErrors";
|
|
17
|
+
import { getLogger } from "./logger/logger";
|
|
18
|
+
import { errorLoggingDecorator } from "./logger/errorLoggingDecorator";
|
|
19
|
+
import { TypedEventTarget } from "./events/TypedEventTarget";
|
|
20
|
+
const logger = getLogger("CameraKit");
|
|
21
|
+
const log = errorLoggingDecorator(logger);
|
|
22
|
+
/**
|
|
23
|
+
* Metrics event names that are exposed to apps.
|
|
24
|
+
*/
|
|
25
|
+
const publicMetricsEventNames = ["lensView", "lensWait"];
|
|
26
|
+
/**
|
|
27
|
+
* The entry point to the CameraKit SDK's API. Most of CameraKit's features are accessed via this class.
|
|
28
|
+
*
|
|
29
|
+
* Applications obtain an instance of CameraKit by calling {@link bootstrapCameraKit}.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const cameraKit = await bootstrapCameraKit(config)
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Then this class can be used to:
|
|
37
|
+
* - Create a {@link CameraKitSession} instance, which provides the API for setting up media inputs, applying Lenses,
|
|
38
|
+
* and obtaining rendered `<canvas>` outputs.
|
|
39
|
+
* - Query for lenses using {@link LensRepository}.
|
|
40
|
+
* - Listen for lens usage metrics events using {@link MetricsEventTarget}.
|
|
41
|
+
*
|
|
42
|
+
* @category Rendering
|
|
43
|
+
* @category Lenses
|
|
44
|
+
*/
|
|
45
|
+
export class CameraKit {
|
|
46
|
+
/** @internal */
|
|
47
|
+
constructor(
|
|
48
|
+
/**
|
|
49
|
+
* Used to query for lenses and lens groups.
|
|
50
|
+
*/
|
|
51
|
+
lensRepository, lensCore, container, allMetrics) {
|
|
52
|
+
this.lensRepository = lensRepository;
|
|
53
|
+
this.lensCore = lensCore;
|
|
54
|
+
this.container = container;
|
|
55
|
+
/**
|
|
56
|
+
* Business metrics (e.g. each time a lens is viewed) are emitted here.
|
|
57
|
+
*/
|
|
58
|
+
this.metrics = new TypedEventTarget();
|
|
59
|
+
this.lenses = { repository: this.lensRepository };
|
|
60
|
+
// Proxy only a subset of all metrics events to the public-facing emitter -- applications don't need to
|
|
61
|
+
// know about most events.
|
|
62
|
+
publicMetricsEventNames.forEach((eventName) => {
|
|
63
|
+
allMetrics.addEventListener(eventName, (e) => this.metrics.dispatchEvent(e));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create a CameraKitSession.
|
|
68
|
+
*
|
|
69
|
+
* This initializes the rendering engine and returns a {@link CameraKitSession} instance, which provides access
|
|
70
|
+
* to Lens rendering.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* const cameraKit = await bootstrapCameraKit(config)
|
|
75
|
+
* const session = await cameraKit.createSession()
|
|
76
|
+
*
|
|
77
|
+
* const lens = await cameraKit.lensRepository.loadLens(lensId, groupId)
|
|
78
|
+
* session.applyLens(lens)
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @param options
|
|
82
|
+
*/
|
|
83
|
+
createSession({ liveRenderTarget, renderWhileTabHidden, } = {}) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
// Any error happened during lens rendering can be processed by subscribing to sessionErrors
|
|
86
|
+
const exceptionHandler = (e) => logger.error(lensExecutionError("Lens execution error.", e));
|
|
87
|
+
/**
|
|
88
|
+
* If/when we add support for multiple concurrent sessions, we'll need to create a copy of the LensCore WASM
|
|
89
|
+
* module. If we move managing web workers into JS, spawing a new worker thread with its own copy of LensCore
|
|
90
|
+
* probably becomes a lot more straightforward.
|
|
91
|
+
*
|
|
92
|
+
* Currently chromium has a bug preventing rendering while tab is hidden when LensCore is in worker mode.
|
|
93
|
+
* In order to process tab while it is hidden, the current stopgap is to pass in renderWhileTabHidden as true,
|
|
94
|
+
* which will initiate session in non worker mode, and set the RenderLoopMode to `SetTimeout`.
|
|
95
|
+
*/
|
|
96
|
+
yield new Promise((onSuccess, onFailure) => {
|
|
97
|
+
this.lensCore.initialize({
|
|
98
|
+
canvas: liveRenderTarget,
|
|
99
|
+
shouldUseWorker: !renderWhileTabHidden && this.container.get(configurationToken).shouldUseWorker,
|
|
100
|
+
exceptionHandler,
|
|
101
|
+
onSuccess,
|
|
102
|
+
onFailure,
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
yield new Promise((onSuccess, onFailure) => {
|
|
106
|
+
this.lensCore.setRenderLoopMode({
|
|
107
|
+
mode: renderWhileTabHidden
|
|
108
|
+
? this.lensCore.RenderLoopMode.SetTimeout
|
|
109
|
+
: this.lensCore.RenderLoopMode.RequestAnimationFrame,
|
|
110
|
+
onSuccess,
|
|
111
|
+
onFailure,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
// Each session gets its own DI Container – some Services provided by this Container may be shared with the
|
|
115
|
+
// root CameraKit Container, but others may be scoped to the session by passing their token to `copy()`.
|
|
116
|
+
const sessionContainer = this.container
|
|
117
|
+
// Right now this is a no-op. If/when we add support for multiple concurrent sessions, we may end up
|
|
118
|
+
// scoping LensCore to the session.
|
|
119
|
+
.copy()
|
|
120
|
+
.provides(sessionStateFactory)
|
|
121
|
+
.provides(lensStateFactory)
|
|
122
|
+
.provides(lensKeyboardFactory)
|
|
123
|
+
.provides(cameraKitSessionFactory)
|
|
124
|
+
.run(registerLensAssetsProvider)
|
|
125
|
+
.run(registerLensClientInterfaceHandler)
|
|
126
|
+
// We'll run a PartialContainer containing reporters for session-scoped metrics. Running this container
|
|
127
|
+
// allows each metric reporter to initialize itself (e.g. by adding event listeners to detect when certain
|
|
128
|
+
// actions occur).
|
|
129
|
+
.run(reportSessionScopedMetrics)
|
|
130
|
+
// UriHandlers may have dependencies on session-scoped services (e.g. LensState, LensKeyboard), so they'll
|
|
131
|
+
// be registered with LensCore here.
|
|
132
|
+
.run(registerUriHandlers);
|
|
133
|
+
return sessionContainer.get(cameraKitSessionFactory.token);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
__decorate([
|
|
138
|
+
log,
|
|
139
|
+
__metadata("design:type", Function),
|
|
140
|
+
__metadata("design:paramtypes", [Object]),
|
|
141
|
+
__metadata("design:returntype", Promise)
|
|
142
|
+
], CameraKit.prototype, "createSession", null);
|
|
143
|
+
/** @internal */
|
|
144
|
+
export const cameraKitFactory = Injectable("CameraKit", [lensRepositoryFactory.token, metricsEventTargetFactory.token, lensCoreFactory.token, CONTAINER], (lensRepository, metrics, lensCore, container) => new CameraKit(lensRepository, lensCore, container, metrics));
|
|
145
|
+
//# sourceMappingURL=CameraKit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraKit.js","sourceRoot":"","sources":["../src/CameraKit.ts"],"names":[],"mappings":"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","sourcesContent":["import { lensRepositoryFactory, LensRepository } from \"./lens/LensRepository\";\nimport { CONTAINER, Container } from \"./dependency-injection/Container\";\nimport { Injectable } from \"./dependency-injection/Injectable\";\nimport { LensCoreError, LensCoreModule } from \"./lens-core-module/generated-types\";\nimport { CameraKitSession, cameraKitSessionFactory } from \"./session/CameraKitSession\";\nimport { registerLensAssetsProvider } from \"./lens/assets/LensAssetsProvider\";\nimport { lensCoreFactory } from \"./lens-core-module/loader/lensCoreFactory\";\nimport { configurationToken } from \"./configuration\";\nimport { RootServices } from \"./dependency-injection/RootServices\";\nimport { registerUriHandlers } from \"./extensions/UriHandlers\";\nimport { MetricsEventTarget, metricsEventTargetFactory } from \"./metrics/metricsEventTarget\";\nimport { reportSessionScopedMetrics } from \"./metrics/reporters/reporters\";\nimport { lensStateFactory } from \"./session/lensState\";\nimport { lensKeyboardFactory } from \"./session/LensKeyboard\";\nimport { registerLensClientInterfaceHandler } from \"./lens-client-interface/lensClientInterface\";\nimport { sessionStateFactory } from \"./session/sessionState\";\nimport { lensExecutionError } from \"./namedErrors\";\nimport { getLogger } from \"./logger/logger\";\nimport { errorLoggingDecorator } from \"./logger/errorLoggingDecorator\";\nimport { TypedEventTarget } from \"./events/TypedEventTarget\";\nimport { TypedCustomEvent } from \"./events/TypedCustomEvent\";\nimport { LensView } from \"./metrics/reporters/reportLensView\";\nimport { LensWait } from \"./metrics/reporters/reportLensWait\";\n\nconst logger = getLogger(\"CameraKit\");\nconst log = errorLoggingDecorator(logger);\n\n/**\n * Metrics event names that are exposed to apps.\n */\nconst publicMetricsEventNames: Array<LensMetricsEvents[\"detail\"][\"name\"]> = [\"lensView\", \"lensWait\"];\n\n/**\n * Lens metrics events.\n *\n * These events are emitted by {@link CameraKit} to report lens usage, performance, apply latency, etc.\n *\n * @category Lenses\n * @category Metrics\n */\nexport type LensMetricsEvents =\n | TypedCustomEvent<LensView[\"name\"], LensView>\n | TypedCustomEvent<LensWait[\"name\"], LensWait>;\n\n/**\n * Options available when creating a {@link CameraKitSession}.\n *\n * @category Rendering\n */\nexport interface CreateSessionOptions {\n /**\n * Optionally provide an existing canvas element, on which the Live RenderTarget will be rendered.\n *\n * If this is not provided, CameraKit will create a new canvas element which can be added to the DOM.\n */\n liveRenderTarget?: HTMLCanvasElement;\n\n /**\n * Browsers optimize tabs when they are hidden - for example, by pausing the execution of requestAnimationFrame\n * callbacks.\n *\n * If you need the CameraKitSession to continue rendering even when the tab is in the background, set this to true.\n * There is a small performance penalty, and it's a good practice to only render in the background if absolutely\n * necessary.\n */\n renderWhileTabHidden?: boolean;\n}\n\n/**\n * The entry point to the CameraKit SDK's API. Most of CameraKit's features are accessed via this class.\n *\n * Applications obtain an instance of CameraKit by calling {@link bootstrapCameraKit}.\n *\n * @example\n * ```ts\n * const cameraKit = await bootstrapCameraKit(config)\n * ```\n *\n * Then this class can be used to:\n * - Create a {@link CameraKitSession} instance, which provides the API for setting up media inputs, applying Lenses,\n * and obtaining rendered `<canvas>` outputs.\n * - Query for lenses using {@link LensRepository}.\n * - Listen for lens usage metrics events using {@link MetricsEventTarget}.\n *\n * @category Rendering\n * @category Lenses\n */\nexport class CameraKit {\n /** @deprecated Use {@link lensRepository} */\n readonly lenses: { repository: LensRepository };\n\n /**\n * Business metrics (e.g. each time a lens is viewed) are emitted here.\n */\n readonly metrics: TypedEventTarget<LensMetricsEvents> = new TypedEventTarget();\n\n /** @internal */\n constructor(\n /**\n * Used to query for lenses and lens groups.\n */\n readonly lensRepository: LensRepository,\n\n private readonly lensCore: LensCoreModule,\n private readonly container: Container<RootServices>,\n allMetrics: MetricsEventTarget\n ) {\n this.lenses = { repository: this.lensRepository };\n // Proxy only a subset of all metrics events to the public-facing emitter -- applications don't need to\n // know about most events.\n publicMetricsEventNames.forEach((eventName) => {\n allMetrics.addEventListener(eventName, (e) => this.metrics.dispatchEvent(e));\n });\n }\n\n /**\n * Create a CameraKitSession.\n *\n * This initializes the rendering engine and returns a {@link CameraKitSession} instance, which provides access\n * to Lens rendering.\n *\n * @example\n * ```ts\n * const cameraKit = await bootstrapCameraKit(config)\n * const session = await cameraKit.createSession()\n *\n * const lens = await cameraKit.lensRepository.loadLens(lensId, groupId)\n * session.applyLens(lens)\n * ```\n *\n * @param options\n */\n @log\n async createSession({\n liveRenderTarget,\n renderWhileTabHidden,\n }: CreateSessionOptions = {}): Promise<CameraKitSession> {\n // Any error happened during lens rendering can be processed by subscribing to sessionErrors\n const exceptionHandler = (e: LensCoreError) => logger.error(lensExecutionError(\"Lens execution error.\", e));\n\n /**\n * If/when we add support for multiple concurrent sessions, we'll need to create a copy of the LensCore WASM\n * module. If we move managing web workers into JS, spawing a new worker thread with its own copy of LensCore\n * probably becomes a lot more straightforward.\n *\n * Currently chromium has a bug preventing rendering while tab is hidden when LensCore is in worker mode.\n * In order to process tab while it is hidden, the current stopgap is to pass in renderWhileTabHidden as true,\n * which will initiate session in non worker mode, and set the RenderLoopMode to `SetTimeout`.\n */\n await new Promise<void>((onSuccess, onFailure) => {\n this.lensCore.initialize({\n canvas: liveRenderTarget,\n shouldUseWorker: !renderWhileTabHidden && this.container.get(configurationToken).shouldUseWorker,\n exceptionHandler,\n onSuccess,\n onFailure,\n });\n });\n\n await new Promise<void>((onSuccess, onFailure) => {\n this.lensCore.setRenderLoopMode({\n mode: renderWhileTabHidden\n ? this.lensCore.RenderLoopMode.SetTimeout\n : this.lensCore.RenderLoopMode.RequestAnimationFrame,\n onSuccess,\n onFailure,\n });\n });\n\n // Each session gets its own DI Container – some Services provided by this Container may be shared with the\n // root CameraKit Container, but others may be scoped to the session by passing their token to `copy()`.\n const sessionContainer = this.container\n // Right now this is a no-op. If/when we add support for multiple concurrent sessions, we may end up\n // scoping LensCore to the session.\n .copy()\n\n .provides(sessionStateFactory)\n .provides(lensStateFactory)\n .provides(lensKeyboardFactory)\n .provides(cameraKitSessionFactory)\n\n .run(registerLensAssetsProvider)\n .run(registerLensClientInterfaceHandler)\n\n // We'll run a PartialContainer containing reporters for session-scoped metrics. Running this container\n // allows each metric reporter to initialize itself (e.g. by adding event listeners to detect when certain\n // actions occur).\n .run(reportSessionScopedMetrics)\n\n // UriHandlers may have dependencies on session-scoped services (e.g. LensState, LensKeyboard), so they'll\n // be registered with LensCore here.\n .run(registerUriHandlers);\n\n return sessionContainer.get(cameraKitSessionFactory.token);\n }\n}\n\n/** @internal */\nexport const cameraKitFactory = Injectable(\n \"CameraKit\",\n [lensRepositoryFactory.token, metricsEventTargetFactory.token, lensCoreFactory.token, CONTAINER] as const,\n (\n lensRepository: LensRepository,\n metrics: MetricsEventTarget,\n lensCore: LensCoreModule,\n container: Container<RootServices>\n ) => new CameraKit(lensRepository, lensCore, container, metrics)\n);\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
import { ContentProto, LensProto } from "../lens";
|
|
3
|
+
import { LensCoreModule, AssetType as LensCoreAssetType } from "../lens-core-module/generated-types";
|
|
4
|
+
export declare const falsyValues: readonly [false, null, undefined, 0, ""];
|
|
5
|
+
export declare const truthyValues: readonly [true, 1, {}, Date, readonly []];
|
|
6
|
+
export declare function createLensFixture(name: string, content?: Partial<ContentProto>): LensProto;
|
|
7
|
+
export declare type LensCoreMock = Pick<jest.Mocked<LensCoreModule>, "AssetType" | "CanvasType" | "InterfaceAction" | "InterfaceControl" | "ExternalMediaOrientation" | "initialize" | "setRemoteAssetsProvider" | "provideRemoteAssetsResponse" | "getOutputCanvases" | "setRenderLoopMode" | "RenderLoopMode" | "setOnFrameProcessedCallback" | "setClientInterfaceRequestHandler" | "provideExternalImage" | "provideExternalVideo" | "registerSavePersistentStoreCallback">;
|
|
8
|
+
export declare const AssetType: Record<keyof LensCoreModule["AssetType"], LensCoreAssetType>;
|
|
9
|
+
export declare function createLensCore(): LensCoreMock;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* eslint-disable max-len */
|
|
2
|
+
import { Lens_CameraFacing } from "../lens";
|
|
3
|
+
export const falsyValues = [false, null, undefined, 0, ""];
|
|
4
|
+
export const truthyValues = [true, 1, {}, new Date(), []];
|
|
5
|
+
export function createLensFixture(name, content) {
|
|
6
|
+
return {
|
|
7
|
+
id: name,
|
|
8
|
+
name,
|
|
9
|
+
vendorData: {},
|
|
10
|
+
content: Object.assign({ iconUrlBolt: "https://bolt.com/iconUrl1", lnsSha256: "", lnsUrlBolt: "", preview: { imageUrl: "https://bolt.com/previewUrl1" }, assetManifest: [], defaultHintId: "", hintTranslations: {} }, content),
|
|
11
|
+
isThirdParty: false,
|
|
12
|
+
cameraFacingPreference: Lens_CameraFacing.UNRECOGNIZED,
|
|
13
|
+
featureMetadata: [],
|
|
14
|
+
lensCreator: {
|
|
15
|
+
displayName: "",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// NOTE: type of the record ensures newly added asset types break compilation
|
|
20
|
+
export const AssetType = {
|
|
21
|
+
DeviceDependent: { value: 3 },
|
|
22
|
+
RemoteMediaByUrl: { value: 6 },
|
|
23
|
+
Static: { value: 1 },
|
|
24
|
+
URL: { value: 2 },
|
|
25
|
+
BitmojiDynamicAsset: { value: 4 },
|
|
26
|
+
};
|
|
27
|
+
export function createLensCore() {
|
|
28
|
+
return {
|
|
29
|
+
AssetType,
|
|
30
|
+
CanvasType: { Preview: { value: 1 }, Capture: { value: 2 }, None: { value: 0 }, All: { value: 3 } },
|
|
31
|
+
RenderLoopMode: { SetTimeout: { value: 1 }, RequestAnimationFrame: { value: 0 } },
|
|
32
|
+
// https://github.sc-corp.net/Snapchat/LensCore/blob/502b54b9a663203bcdf3b90c63214cdf8cc1e713/Src/CoreManager/ClientInterfaceDelegate.hpp#L39
|
|
33
|
+
InterfaceAction: { Show: { value: 3 } },
|
|
34
|
+
// https://github.sc-corp.net/Snapchat/LensCore/blob/502b54b9a663203bcdf3b90c63214cdf8cc1e713/Src/CoreManager/ClientInterfaceDelegate.hpp#L21
|
|
35
|
+
InterfaceControl: { ImagePicker: { value: 1 } },
|
|
36
|
+
// https://github.sc-corp.net/Snapchat/LensCore/blob/2d538ecc41f67dd2c199e0ff0eefd96aac6f22dc/Src/Common/IExternalMediaFilePickedObserver.h#L21
|
|
37
|
+
ExternalMediaOrientation: { CW0: { value: 0 }, CW90: { value: 1 }, CW180: { value: 2 }, CW270: { value: 3 } },
|
|
38
|
+
initialize: jest.fn(),
|
|
39
|
+
setRemoteAssetsProvider: jest.fn(),
|
|
40
|
+
provideRemoteAssetsResponse: jest.fn(),
|
|
41
|
+
getOutputCanvases: jest.fn(),
|
|
42
|
+
setRenderLoopMode: jest.fn(),
|
|
43
|
+
setOnFrameProcessedCallback: jest.fn(),
|
|
44
|
+
setClientInterfaceRequestHandler: jest.fn(),
|
|
45
|
+
provideExternalImage: jest.fn(),
|
|
46
|
+
provideExternalVideo: jest.fn(),
|
|
47
|
+
registerSavePersistentStoreCallback: jest.fn(),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/__tests__/data.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-len */\nimport { ContentProto, LensProto, Lens_CameraFacing } from \"../lens\";\nimport { LensCoreModule, AssetType as LensCoreAssetType } from \"../lens-core-module/generated-types\";\n\nexport const falsyValues = [false, null, undefined, 0, \"\"] as const;\nexport const truthyValues = [true, 1, {}, new Date(), []] as const;\n\nexport function createLensFixture(name: string, content?: Partial<ContentProto>): LensProto {\n return {\n id: name,\n name,\n vendorData: {},\n content: {\n iconUrlBolt: \"https://bolt.com/iconUrl1\",\n lnsSha256: \"\",\n lnsUrlBolt: \"\",\n preview: { imageUrl: \"https://bolt.com/previewUrl1\" },\n assetManifest: [],\n defaultHintId: \"\",\n hintTranslations: {},\n ...content,\n },\n isThirdParty: false,\n cameraFacingPreference: Lens_CameraFacing.UNRECOGNIZED,\n featureMetadata: [],\n lensCreator: {\n displayName: \"\",\n },\n };\n}\n\nexport type LensCoreMock = Pick<\n jest.Mocked<LensCoreModule>,\n | \"AssetType\"\n | \"CanvasType\"\n | \"InterfaceAction\"\n | \"InterfaceControl\"\n | \"ExternalMediaOrientation\"\n | \"initialize\"\n | \"setRemoteAssetsProvider\"\n | \"provideRemoteAssetsResponse\"\n | \"getOutputCanvases\"\n | \"setRenderLoopMode\"\n | \"RenderLoopMode\"\n | \"setOnFrameProcessedCallback\"\n | \"setClientInterfaceRequestHandler\"\n | \"provideExternalImage\"\n | \"provideExternalVideo\"\n | \"registerSavePersistentStoreCallback\"\n>;\n\n// NOTE: type of the record ensures newly added asset types break compilation\nexport const AssetType: Record<keyof LensCoreModule[\"AssetType\"], LensCoreAssetType> = {\n DeviceDependent: { value: 3 },\n RemoteMediaByUrl: { value: 6 },\n Static: { value: 1 },\n URL: { value: 2 },\n BitmojiDynamicAsset: { value: 4 },\n};\n\nexport function createLensCore(): LensCoreMock {\n return {\n AssetType,\n CanvasType: { Preview: { value: 1 }, Capture: { value: 2 }, None: { value: 0 }, All: { value: 3 } },\n RenderLoopMode: { SetTimeout: { value: 1 }, RequestAnimationFrame: { value: 0 } },\n // https://github.sc-corp.net/Snapchat/LensCore/blob/502b54b9a663203bcdf3b90c63214cdf8cc1e713/Src/CoreManager/ClientInterfaceDelegate.hpp#L39\n InterfaceAction: { Show: { value: 3 } } as any,\n // https://github.sc-corp.net/Snapchat/LensCore/blob/502b54b9a663203bcdf3b90c63214cdf8cc1e713/Src/CoreManager/ClientInterfaceDelegate.hpp#L21\n InterfaceControl: { ImagePicker: { value: 1 } } as any,\n // https://github.sc-corp.net/Snapchat/LensCore/blob/2d538ecc41f67dd2c199e0ff0eefd96aac6f22dc/Src/Common/IExternalMediaFilePickedObserver.h#L21\n ExternalMediaOrientation: { CW0: { value: 0 }, CW90: { value: 1 }, CW180: { value: 2 }, CW270: { value: 3 } },\n initialize: jest.fn(),\n setRemoteAssetsProvider: jest.fn(),\n provideRemoteAssetsResponse: jest.fn(),\n getOutputCanvases: jest.fn(),\n setRenderLoopMode: jest.fn(),\n setOnFrameProcessedCallback: jest.fn(),\n setClientInterfaceRequestHandler: jest.fn(),\n provideExternalImage: jest.fn(),\n provideExternalVideo: jest.fn(),\n registerSavePersistentStoreCallback: jest.fn(),\n };\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare type Deferred<T> = Promise<T> & {
|
|
2
|
+
resolve: (v: T) => Promise<void>;
|
|
3
|
+
reject: (e: unknown) => Promise<void>;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Creates a promise that can be resolved/rejected manually later.
|
|
7
|
+
*```ts
|
|
8
|
+
* const promise = createDeferred();
|
|
9
|
+
* // when some piece of code awaits the promise:
|
|
10
|
+
* await promise
|
|
11
|
+
* // we can resovle that promise when it is more suitable for us:
|
|
12
|
+
* await promise.resolve();
|
|
13
|
+
*```
|
|
14
|
+
* @returns A promise wtih resolve() and reject() methods.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createDeferred<T>(): Deferred<T>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a promise that can be resolved/rejected manually later.
|
|
3
|
+
*```ts
|
|
4
|
+
* const promise = createDeferred();
|
|
5
|
+
* // when some piece of code awaits the promise:
|
|
6
|
+
* await promise
|
|
7
|
+
* // we can resovle that promise when it is more suitable for us:
|
|
8
|
+
* await promise.resolve();
|
|
9
|
+
*```
|
|
10
|
+
* @returns A promise wtih resolve() and reject() methods.
|
|
11
|
+
*/
|
|
12
|
+
export function createDeferred() {
|
|
13
|
+
let resolve;
|
|
14
|
+
let reject;
|
|
15
|
+
const promise = new Promise((res, rej) => {
|
|
16
|
+
resolve = res;
|
|
17
|
+
reject = rej;
|
|
18
|
+
});
|
|
19
|
+
promise.resolve = (v) => {
|
|
20
|
+
resolve(v);
|
|
21
|
+
return promise;
|
|
22
|
+
};
|
|
23
|
+
promise.reject = (reason) => {
|
|
24
|
+
reject(reason);
|
|
25
|
+
return promise;
|
|
26
|
+
};
|
|
27
|
+
return promise;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=deferred.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred.js","sourceRoot":"","sources":["../../src/__tests__/deferred.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAC1B,IAAI,OAAuB,CAAC;IAC5B,IAAI,MAA8B,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxC,OAAO,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,GAAG,CAAC;IACjB,CAAC,CAAC,CAAC;IACF,OAAe,CAAC,OAAO,GAAG,CAAC,CAAI,EAAE,EAAE;QAChC,OAAO,CAAC,CAAC,CAAC,CAAC;QACX,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;IACD,OAAe,CAAC,MAAM,GAAG,CAAC,MAAe,EAAE,EAAE;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC;QACf,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,OAAsB,CAAC;AAClC,CAAC","sourcesContent":["export type Deferred<T> = Promise<T> & { resolve: (v: T) => Promise<void>; reject: (e: unknown) => Promise<void> };\n\n/**\n * Creates a promise that can be resolved/rejected manually later.\n *```ts\n * const promise = createDeferred();\n * // when some piece of code awaits the promise:\n * await promise\n * // we can resovle that promise when it is more suitable for us:\n * await promise.resolve();\n *```\n * @returns A promise wtih resolve() and reject() methods.\n */\nexport function createDeferred<T>(): Deferred<T> {\n let resolve: (v: T) => void;\n let reject: (reason?: any) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n (promise as any).resolve = (v: T) => {\n resolve(v);\n return promise;\n };\n (promise as any).reject = (reason: unknown) => {\n reject(reason);\n return promise;\n };\n return promise as Deferred<T>;\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
declare global {
|
|
3
|
+
namespace jest {
|
|
4
|
+
interface Expect {
|
|
5
|
+
errorContaining<T extends (string | ErrorLike)[]>(...errors: T): T;
|
|
6
|
+
}
|
|
7
|
+
interface Matchers<R> {
|
|
8
|
+
toBeCalledBefore(secondMock: jest.Mock): R;
|
|
9
|
+
toEqualError(...errors: string[] | ErrorLike[]): R;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
declare type ErrorLike = {
|
|
14
|
+
message: string;
|
|
15
|
+
name: string;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function areErrorsEqual(error, errorOrMessageOrName) {
|
|
2
|
+
if (typeof errorOrMessageOrName === "string") {
|
|
3
|
+
return error.message === errorOrMessageOrName || error.name === errorOrMessageOrName;
|
|
4
|
+
}
|
|
5
|
+
return error.message === errorOrMessageOrName.message && error.name === errorOrMessageOrName.name;
|
|
6
|
+
}
|
|
7
|
+
function expectErrorsToEqual(utils, error, ...errors) {
|
|
8
|
+
expect(error).toBeInstanceOf(Error);
|
|
9
|
+
for (const errorOrMessage of errors) {
|
|
10
|
+
if (!areErrorsEqual(error, errorOrMessage)) {
|
|
11
|
+
const receivedMessage = utils.printReceived(error.message);
|
|
12
|
+
const receivedName = utils.printReceived(error.name);
|
|
13
|
+
const expected = utils.printExpected(errorOrMessage);
|
|
14
|
+
throw new Error(`Expected ${receivedMessage} error message (or ${receivedName} error name) to equal ${expected}.`);
|
|
15
|
+
}
|
|
16
|
+
error = error.cause;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const smallest = (numbers) => numbers.reduce((a, b) => (a < b ? a : b));
|
|
20
|
+
const toBeCalledBeforeMessage = (pass, a, b) => () => `Expected first mock to${pass ? " not" : ""} have been called before second. First mock call order:\n` +
|
|
21
|
+
`\t${a}\nSecond mock call order:\n\t${b}`;
|
|
22
|
+
expect.extend({
|
|
23
|
+
/**
|
|
24
|
+
* Usage: expect(mockA).toBeCalledBefore(mockB)
|
|
25
|
+
*/
|
|
26
|
+
toBeCalledBefore(firstMock, secondMock) {
|
|
27
|
+
expect(firstMock).toBeCalled();
|
|
28
|
+
expect(secondMock).toBeCalled();
|
|
29
|
+
const firstOrder = smallest(firstMock.mock.invocationCallOrder);
|
|
30
|
+
const secondOrder = smallest(secondMock.mock.invocationCallOrder);
|
|
31
|
+
const pass = firstOrder < secondOrder;
|
|
32
|
+
return { pass, message: toBeCalledBeforeMessage(pass, firstOrder, secondOrder) };
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* Use .toEqualError() to compare error objects.
|
|
36
|
+
* This is useful for comparing nested error objects.
|
|
37
|
+
* @param actualError Error object.
|
|
38
|
+
* @param expectedErrors Error like objects, messages or names. Multiple values represent nested error chain.
|
|
39
|
+
*/
|
|
40
|
+
toEqualError(actualError, ...expectedErrors) {
|
|
41
|
+
try {
|
|
42
|
+
expectErrorsToEqual(this.utils, actualError, ...expectedErrors);
|
|
43
|
+
return {
|
|
44
|
+
pass: true,
|
|
45
|
+
message: () => "",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
return {
|
|
50
|
+
pass: false,
|
|
51
|
+
message: () => e.message,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* Allows to do expecations like expect(fn).toBeCalledWith(expect.errorContaining("BOOM!"))
|
|
57
|
+
*/
|
|
58
|
+
errorContaining(actualError, ...expectedErrors) {
|
|
59
|
+
expectErrorsToEqual(this.utils, actualError, ...expectedErrors);
|
|
60
|
+
return {
|
|
61
|
+
pass: true,
|
|
62
|
+
message: () => "",
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=jest.matchers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest.matchers.js","sourceRoot":"","sources":["../../src/__tests__/jest.matchers.ts"],"names":[],"mappings":"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","sourcesContent":["declare global {\n namespace jest {\n interface Expect {\n errorContaining<T extends (string | ErrorLike)[]>(...errors: T): T;\n }\n interface Matchers<R> {\n toBeCalledBefore(secondMock: jest.Mock): R;\n toEqualError(...errors: string[] | ErrorLike[]): R;\n }\n }\n}\n\ntype ErrorLike = { message: string; name: string };\n\nfunction areErrorsEqual(error: Error, errorOrMessageOrName: string | ErrorLike) {\n if (typeof errorOrMessageOrName === \"string\") {\n return error.message === errorOrMessageOrName || error.name === errorOrMessageOrName;\n }\n return error.message === errorOrMessageOrName.message && error.name === errorOrMessageOrName.name;\n}\n\nfunction expectErrorsToEqual(utils: jest.MatcherUtils[\"utils\"], error: any, ...errors: (string | ErrorLike)[]) {\n expect(error).toBeInstanceOf(Error);\n for (const errorOrMessage of errors) {\n if (!areErrorsEqual(error, errorOrMessage)) {\n const receivedMessage = utils.printReceived(error.message);\n const receivedName = utils.printReceived(error.name);\n const expected = utils.printExpected(errorOrMessage);\n throw new Error(\n `Expected ${receivedMessage} error message (or ${receivedName} error name) to equal ${expected}.`\n );\n }\n error = error.cause;\n }\n}\n\nconst smallest = (numbers: number[]) => numbers.reduce((a, b) => (a < b ? a : b));\nconst toBeCalledBeforeMessage = (pass: boolean, a: number, b: number) => () =>\n `Expected first mock to${pass ? \" not\" : \"\"} have been called before second. First mock call order:\\n` +\n `\\t${a}\\nSecond mock call order:\\n\\t${b}`;\nexpect.extend({\n /**\n * Usage: expect(mockA).toBeCalledBefore(mockB)\n */\n toBeCalledBefore(firstMock: jest.Mock, secondMock: jest.Mock) {\n expect(firstMock).toBeCalled();\n expect(secondMock).toBeCalled();\n const firstOrder = smallest(firstMock.mock.invocationCallOrder);\n const secondOrder = smallest(secondMock.mock.invocationCallOrder);\n const pass = firstOrder < secondOrder;\n return { pass, message: toBeCalledBeforeMessage(pass, firstOrder, secondOrder) };\n },\n\n /**\n * Use .toEqualError() to compare error objects.\n * This is useful for comparing nested error objects.\n * @param actualError Error object.\n * @param expectedErrors Error like objects, messages or names. Multiple values represent nested error chain.\n */\n toEqualError(actualError: any, ...expectedErrors: string[] | ErrorLike[]) {\n try {\n expectErrorsToEqual(this.utils, actualError, ...expectedErrors);\n return {\n pass: true,\n message: () => \"\",\n };\n } catch (e) {\n return {\n pass: false,\n message: () => (e as any).message,\n };\n }\n },\n\n /**\n * Allows to do expecations like expect(fn).toBeCalledWith(expect.errorContaining(\"BOOM!\"))\n */\n errorContaining(actualError: Error, ...expectedErrors: (string | ErrorLike)[]) {\n expectErrorsToEqual(this.utils, actualError, ...expectedErrors);\n return {\n pass: true,\n message: () => \"\",\n };\n },\n});\n\n// TS compiler needs to identify this as a module, which requires an import/export statement -- otherwise it will not\n// allow augmenting the global scope with additional type definitions.\nexport {};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { assert } from "./common/assertions";
|
|
2
|
+
import { platformNotSupportedError } from "./namedErrors";
|
|
3
|
+
/**
|
|
4
|
+
* Assert current platform is supported.
|
|
5
|
+
*/
|
|
6
|
+
export function assertPlatformSupported() {
|
|
7
|
+
const canvas = document.createElement("canvas");
|
|
8
|
+
assert(!!canvas.getContext("webgl2") || !!canvas.getContext("webgl"), platformNotSupportedError("Cannot bootstrap the SDK because the browser does not support WebGL canvas rendering context."));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=assertPlatformSupported.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertPlatformSupported.js","sourceRoot":"","sources":["../src/assertPlatformSupported.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CACF,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAC7D,yBAAyB,CACrB,+FAA+F,CAClG,CACJ,CAAC;AACN,CAAC","sourcesContent":["import { assert } from \"./common/assertions\";\nimport { platformNotSupportedError } from \"./namedErrors\";\n\n/**\n * Assert current platform is supported.\n */\nexport function assertPlatformSupported() {\n const canvas = document.createElement(\"canvas\");\n assert(\n !!canvas.getContext(\"webgl2\") || !!canvas.getContext(\"webgl\"),\n platformNotSupportedError(\n \"Cannot bootstrap the SDK because the browser does not support WebGL canvas rendering context.\"\n )\n );\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BenchmarkResult, LensPerformanceCluster } from "./estimateLensPerformanceCluster";
|
|
2
|
+
/**
|
|
3
|
+
* These are obtained from historical performance data gathered from end-user devices. Keys are gflops, values are the
|
|
4
|
+
* corresponding performance rating.
|
|
5
|
+
*
|
|
6
|
+
* To compute the performance rating given a gflops value, find the nearest key in this map and look up the rating.
|
|
7
|
+
*/
|
|
8
|
+
export declare const gflopsClusterCenters: Map<number, LensPerformanceCluster>;
|
|
9
|
+
/**
|
|
10
|
+
* This benchmark is the same that's run on non-web (e.g. native mobile) platforms, and produces results that can be
|
|
11
|
+
* compared to those gathered on those platforms – this allows us to cluster results and determine a performance rating
|
|
12
|
+
* based on historical data gathered elsewhere.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare function benchmarkGflops(gl: WebGL2RenderingContext): Promise<BenchmarkResult>;
|