@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.
Files changed (554) hide show
  1. package/LICENSE.md +6247 -0
  2. package/README.md +166 -0
  3. package/docs/html/.nojekyll +1 -0
  4. package/docs/html/assets/highlight.css +106 -0
  5. package/docs/html/assets/main.js +54 -0
  6. package/docs/html/assets/search.js +1 -0
  7. package/docs/html/assets/style.css +1225 -0
  8. package/docs/html/assets/widgets.png +0 -0
  9. package/docs/html/assets/widgets@2x.png +0 -0
  10. package/docs/html/classes/CameraKit.html +121 -0
  11. package/docs/html/classes/CameraKitSession.html +347 -0
  12. package/docs/html/classes/CameraKitSource.html +152 -0
  13. package/docs/html/classes/LensPerformanceMeasurement.html +115 -0
  14. package/docs/html/classes/LensPerformanceMetrics.html +76 -0
  15. package/docs/html/classes/LensRepository.html +171 -0
  16. package/docs/html/classes/LensSources.html +82 -0
  17. package/docs/html/classes/Transform2D.html +99 -0
  18. package/docs/html/classes/TypedCustomEvent.html +109 -0
  19. package/docs/html/classes/TypedEventTarget.html +146 -0
  20. package/docs/html/functions/Injectable.html +193 -0
  21. package/docs/html/functions/bootstrapCameraKit.html +158 -0
  22. package/docs/html/functions/createExtension.html +127 -0
  23. package/docs/html/functions/createImageSource.html +123 -0
  24. package/docs/html/functions/createMediaStreamSource.html +123 -0
  25. package/docs/html/functions/createUserMediaSource.html +127 -0
  26. package/docs/html/functions/createVideoSource.html +124 -0
  27. package/docs/html/functions/estimateLensPerformance.html +116 -0
  28. package/docs/html/functions/getRequiredBootstrapURLs.html +124 -0
  29. package/docs/html/functions/lensSourcesFactory.html +116 -0
  30. package/docs/html/functions/uriHandlersFactory.html +118 -0
  31. package/docs/html/index.html +208 -0
  32. package/docs/html/interfaces/CameraKitBootstrapConfiguration.html +132 -0
  33. package/docs/html/interfaces/CameraKitSourceSubscriber.html +121 -0
  34. package/docs/html/interfaces/ComputedFrameMetrics.html +70 -0
  35. package/docs/html/interfaces/CreateSessionOptions.html +77 -0
  36. package/docs/html/interfaces/EstimatedLensPerformance.html +78 -0
  37. package/docs/html/interfaces/Lens.html +115 -0
  38. package/docs/html/interfaces/LensSource.html +113 -0
  39. package/docs/html/interfaces/MediaStreamSourceOptions.html +65 -0
  40. package/docs/html/interfaces/UriCancelRequest.html +65 -0
  41. package/docs/html/interfaces/UriHandler.html +128 -0
  42. package/docs/html/interfaces/UriRequest.html +80 -0
  43. package/docs/html/interfaces/UriResponse.html +80 -0
  44. package/docs/html/interfaces/VideoSourceOptions.html +60 -0
  45. package/docs/html/modules.html +198 -0
  46. package/docs/html/types/AssetLoader.html +126 -0
  47. package/docs/html/types/AssetTiming.html +116 -0
  48. package/docs/html/types/BenchmarkError.html +107 -0
  49. package/docs/html/types/BootstrapError.html +110 -0
  50. package/docs/html/types/CacheKeyNotFoundError.html +107 -0
  51. package/docs/html/types/CameraKitDeviceInfo.html +114 -0
  52. package/docs/html/types/CameraKitSessionEventListener.html +109 -0
  53. package/docs/html/types/CameraKitSessionEvents.html +118 -0
  54. package/docs/html/types/CameraKitSourceError.html +107 -0
  55. package/docs/html/types/CameraKitSourceInfo.html +107 -0
  56. package/docs/html/types/CameraKitSourceOptions.html +113 -0
  57. package/docs/html/types/ConfigurationError.html +109 -0
  58. package/docs/html/types/Keyboard.html +196 -0
  59. package/docs/html/types/KeyboardEvents.html +109 -0
  60. package/docs/html/types/LegalError.html +107 -0
  61. package/docs/html/types/LensAssetError.html +109 -0
  62. package/docs/html/types/LensContentValidationError.html +107 -0
  63. package/docs/html/types/LensError.html +107 -0
  64. package/docs/html/types/LensExecutionError.html +114 -0
  65. package/docs/html/types/LensImagePickerError.html +110 -0
  66. package/docs/html/types/LensLaunchParams.html +109 -0
  67. package/docs/html/types/LensMetricsEvents.html +110 -0
  68. package/docs/html/types/LensPerformanceCluster.html +107 -0
  69. package/docs/html/types/LensView.html +119 -0
  70. package/docs/html/types/LensWait.html +111 -0
  71. package/docs/html/types/PersistentStoreError.html +109 -0
  72. package/docs/html/types/PlatformNotSupportedError.html +110 -0
  73. package/docs/html/types/PublicContainer.html +110 -0
  74. package/docs/html/types/RenderTarget.html +111 -0
  75. package/docs/html/types/Uri.html +107 -0
  76. package/docs/html/types/UriHandlers.html +109 -0
  77. package/docs/html/types/WebGLError.html +107 -0
  78. package/docs/html/variables/extensionRequestContext.html +109 -0
  79. package/docs/md/.nojekyll +1 -0
  80. package/docs/md/README.md +168 -0
  81. package/docs/md/classes/CameraKit.md +94 -0
  82. package/docs/md/classes/CameraKitSession.md +359 -0
  83. package/docs/md/classes/CameraKitSource.md +110 -0
  84. package/docs/md/classes/LensPerformanceMeasurement.md +77 -0
  85. package/docs/md/classes/LensPerformanceMetrics.md +37 -0
  86. package/docs/md/classes/LensRepository.md +145 -0
  87. package/docs/md/classes/LensSources.md +29 -0
  88. package/docs/md/classes/Transform2D.md +55 -0
  89. package/docs/md/classes/TypedCustomEvent.md +65 -0
  90. package/docs/md/classes/TypedEventTarget.md +103 -0
  91. package/docs/md/interfaces/CameraKitBootstrapConfiguration.md +106 -0
  92. package/docs/md/interfaces/CameraKitSourceSubscriber.md +55 -0
  93. package/docs/md/interfaces/ComputedFrameMetrics.md +29 -0
  94. package/docs/md/interfaces/CreateSessionOptions.md +35 -0
  95. package/docs/md/interfaces/EstimatedLensPerformance.md +38 -0
  96. package/docs/md/interfaces/Lens.md +84 -0
  97. package/docs/md/interfaces/LensSource.md +68 -0
  98. package/docs/md/interfaces/MediaStreamSourceOptions.md +22 -0
  99. package/docs/md/interfaces/UriCancelRequest.md +22 -0
  100. package/docs/md/interfaces/UriHandler.md +63 -0
  101. package/docs/md/interfaces/UriRequest.md +43 -0
  102. package/docs/md/interfaces/UriResponse.md +43 -0
  103. package/docs/md/interfaces/VideoSourceOptions.md +15 -0
  104. package/docs/md/modules.md +827 -0
  105. package/lib/CameraKit.d.ts +170 -0
  106. package/lib/CameraKit.js +145 -0
  107. package/lib/CameraKit.js.map +1 -0
  108. package/lib/__tests__/data.d.ts +9 -0
  109. package/lib/__tests__/data.js +50 -0
  110. package/lib/__tests__/data.js.map +1 -0
  111. package/lib/__tests__/deferred.d.ts +16 -0
  112. package/lib/__tests__/deferred.js +29 -0
  113. package/lib/__tests__/deferred.js.map +1 -0
  114. package/lib/__tests__/jest.matchers.d.ts +17 -0
  115. package/lib/__tests__/jest.matchers.js +67 -0
  116. package/lib/__tests__/jest.matchers.js.map +1 -0
  117. package/lib/assertPlatformSupported.d.ts +4 -0
  118. package/lib/assertPlatformSupported.js +10 -0
  119. package/lib/assertPlatformSupported.js.map +1 -0
  120. package/lib/benchmark/benchmarkGflops.d.ts +16 -0
  121. package/lib/benchmark/benchmarkGflops.js +129 -0
  122. package/lib/benchmark/benchmarkGflops.js.map +1 -0
  123. package/lib/benchmark/estimateLensPerformanceCluster.d.ts +33 -0
  124. package/lib/benchmark/estimateLensPerformanceCluster.js +48 -0
  125. package/lib/benchmark/estimateLensPerformanceCluster.js.map +1 -0
  126. package/lib/benchmark/webglUtils.d.ts +7 -0
  127. package/lib/benchmark/webglUtils.js +87 -0
  128. package/lib/benchmark/webglUtils.js.map +1 -0
  129. package/lib/bootstrapCameraKit.d.ts +96 -0
  130. package/lib/bootstrapCameraKit.js +204 -0
  131. package/lib/bootstrapCameraKit.js.map +1 -0
  132. package/lib/common/__mocks__/loadScript.d.ts +1 -0
  133. package/lib/common/__mocks__/loadScript.js +10 -0
  134. package/lib/common/__mocks__/loadScript.js.map +1 -0
  135. package/lib/common/assertions.d.ts +27 -0
  136. package/lib/common/assertions.js +39 -0
  137. package/lib/common/assertions.js.map +1 -0
  138. package/lib/common/cameraKitUserAgent.d.ts +34 -0
  139. package/lib/common/cameraKitUserAgent.js +216 -0
  140. package/lib/common/cameraKitUserAgent.js.map +1 -0
  141. package/lib/common/copyDefinedProperties.d.ts +13 -0
  142. package/lib/common/copyDefinedProperties.js +16 -0
  143. package/lib/common/copyDefinedProperties.js.map +1 -0
  144. package/lib/common/entries.d.ts +3 -0
  145. package/lib/common/entries.js +3 -0
  146. package/lib/common/entries.js.map +1 -0
  147. package/lib/common/errorHelpers.d.ts +10 -0
  148. package/lib/common/errorHelpers.js +24 -0
  149. package/lib/common/errorHelpers.js.map +1 -0
  150. package/lib/common/getFilename.d.ts +1 -0
  151. package/lib/common/getFilename.js +4 -0
  152. package/lib/common/getFilename.js.map +1 -0
  153. package/lib/common/index.d.ts +2 -0
  154. package/lib/common/index.js +3 -0
  155. package/lib/common/index.js.map +1 -0
  156. package/lib/common/loadScript.d.ts +1 -0
  157. package/lib/common/loadScript.js +11 -0
  158. package/lib/common/loadScript.js.map +1 -0
  159. package/lib/common/locale.d.ts +2 -0
  160. package/lib/common/locale.js +11 -0
  161. package/lib/common/locale.js.map +1 -0
  162. package/lib/common/localization.d.ts +43 -0
  163. package/lib/common/localization.js +43 -0
  164. package/lib/common/localization.js.map +1 -0
  165. package/lib/common/memoize.d.ts +8 -0
  166. package/lib/common/memoize.js +15 -0
  167. package/lib/common/memoize.js.map +1 -0
  168. package/lib/common/pageVisibility.d.ts +20 -0
  169. package/lib/common/pageVisibility.js +62 -0
  170. package/lib/common/pageVisibility.js.map +1 -0
  171. package/lib/common/time.d.ts +1 -0
  172. package/lib/common/time.js +2 -0
  173. package/lib/common/time.js.map +1 -0
  174. package/lib/common/typeguards.d.ts +53 -0
  175. package/lib/common/typeguards.js +92 -0
  176. package/lib/common/typeguards.js.map +1 -0
  177. package/lib/common/types.d.ts +10 -0
  178. package/lib/common/types.js +2 -0
  179. package/lib/common/types.js.map +1 -0
  180. package/lib/common/validate.d.ts +14 -0
  181. package/lib/common/validate.js +104 -0
  182. package/lib/common/validate.js.map +1 -0
  183. package/lib/configuration.d.ts +92 -0
  184. package/lib/configuration.js +36 -0
  185. package/lib/configuration.js.map +1 -0
  186. package/lib/configurationOverrides.d.ts +12 -0
  187. package/lib/configurationOverrides.js +41 -0
  188. package/lib/configurationOverrides.js.map +1 -0
  189. package/lib/dependency-injection/Container.d.ts +177 -0
  190. package/lib/dependency-injection/Container.js +160 -0
  191. package/lib/dependency-injection/Container.js.map +1 -0
  192. package/lib/dependency-injection/Injectable.d.ts +39 -0
  193. package/lib/dependency-injection/Injectable.js +18 -0
  194. package/lib/dependency-injection/Injectable.js.map +1 -0
  195. package/lib/dependency-injection/PartialContainer.d.ts +81 -0
  196. package/lib/dependency-injection/PartialContainer.js +85 -0
  197. package/lib/dependency-injection/PartialContainer.js.map +1 -0
  198. package/lib/dependency-injection/RootServices.d.ts +62 -0
  199. package/lib/dependency-injection/RootServices.js +2 -0
  200. package/lib/dependency-injection/RootServices.js.map +1 -0
  201. package/lib/dependency-injection/types.d.ts +56 -0
  202. package/lib/dependency-injection/types.js +2 -0
  203. package/lib/dependency-injection/types.js.map +1 -0
  204. package/lib/environment.json +1 -0
  205. package/lib/events/TypedCustomEvent.d.ts +10 -0
  206. package/lib/events/TypedCustomEvent.js +11 -0
  207. package/lib/events/TypedCustomEvent.js.map +1 -0
  208. package/lib/events/TypedEventTarget.d.ts +25 -0
  209. package/lib/events/TypedEventTarget.js +57 -0
  210. package/lib/events/TypedEventTarget.js.map +1 -0
  211. package/lib/events/scan.d.ts +15 -0
  212. package/lib/events/scan.js +46 -0
  213. package/lib/events/scan.js.map +1 -0
  214. package/lib/extensions/LensSources.d.ts +58 -0
  215. package/lib/extensions/LensSources.js +50 -0
  216. package/lib/extensions/LensSources.js.map +1 -0
  217. package/lib/extensions/UriHandlers.d.ts +54 -0
  218. package/lib/extensions/UriHandlers.js +93 -0
  219. package/lib/extensions/UriHandlers.js.map +1 -0
  220. package/lib/extensions/extensionRequestContext.d.ts +4 -0
  221. package/lib/extensions/extensionRequestContext.js +14 -0
  222. package/lib/extensions/extensionRequestContext.js.map +1 -0
  223. package/lib/generated-proto/blizzard/cameraKitEvents.d.ts +5603 -0
  224. package/lib/generated-proto/blizzard/cameraKitEvents.js +522 -0
  225. package/lib/generated-proto/blizzard/cameraKitEvents.js.map +1 -0
  226. package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.d.ts +98 -0
  227. package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.js +260 -0
  228. package/lib/generated-proto/pb_schema/camera_kit/v3/business_events.js.map +1 -0
  229. package/lib/generated-proto/pb_schema/camera_kit/v3/export.d.ts +543 -0
  230. package/lib/generated-proto/pb_schema/camera_kit/v3/export.js +429 -0
  231. package/lib/generated-proto/pb_schema/camera_kit/v3/export.js.map +1 -0
  232. package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.d.ts +100 -0
  233. package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.js +164 -0
  234. package/lib/generated-proto/pb_schema/camera_kit/v3/legal_prompt.js.map +1 -0
  235. package/lib/generated-proto/pb_schema/camera_kit/v3/lens.d.ts +395 -0
  236. package/lib/generated-proto/pb_schema/camera_kit/v3/lens.js +644 -0
  237. package/lib/generated-proto/pb_schema/camera_kit/v3/lens.js.map +1 -0
  238. package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.d.ts +185 -0
  239. package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.js +172 -0
  240. package/lib/generated-proto/pb_schema/camera_kit/v3/operational_metrics.js.map +1 -0
  241. package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.d.ts +86 -0
  242. package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.js +234 -0
  243. package/lib/generated-proto/pb_schema/camera_kit/v3/ranking.js.map +1 -0
  244. package/lib/generated-proto/pb_schema/camera_kit/v3/service.d.ts +854 -0
  245. package/lib/generated-proto/pb_schema/camera_kit/v3/service.js +629 -0
  246. package/lib/generated-proto/pb_schema/camera_kit/v3/service.js.map +1 -0
  247. package/lib/generated-proto/pb_schema/cdp/cof/benchmark.d.ts +86 -0
  248. package/lib/generated-proto/pb_schema/cdp/cof/benchmark.js +185 -0
  249. package/lib/generated-proto/pb_schema/cdp/cof/benchmark.js.map +1 -0
  250. package/lib/generated-proto/pb_schema/cdp/cof/benchmark_name.d.ts +95 -0
  251. package/lib/generated-proto/pb_schema/cdp/cof/benchmark_name.js +104 -0
  252. package/lib/generated-proto/pb_schema/cdp/cof/benchmark_name.js.map +1 -0
  253. package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.d.ts +10212 -0
  254. package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.js +1300 -0
  255. package/lib/generated-proto/pb_schema/cdp/cof/circumstance_service.js.map +1 -0
  256. package/lib/generated-proto/pb_schema/cdp/cof/config_request.d.ts +401 -0
  257. package/lib/generated-proto/pb_schema/cdp/cof/config_request.js +525 -0
  258. package/lib/generated-proto/pb_schema/cdp/cof/config_request.js.map +1 -0
  259. package/lib/generated-proto/pb_schema/cdp/cof/config_response.d.ts +1287 -0
  260. package/lib/generated-proto/pb_schema/cdp/cof/config_response.js +135 -0
  261. package/lib/generated-proto/pb_schema/cdp/cof/config_response.js.map +1 -0
  262. package/lib/generated-proto/pb_schema/cdp/cof/config_result.d.ts +4208 -0
  263. package/lib/generated-proto/pb_schema/cdp/cof/config_result.js +1053 -0
  264. package/lib/generated-proto/pb_schema/cdp/cof/config_result.js.map +1 -0
  265. package/lib/generated-proto/pb_schema/cdp/cof/debug_info.d.ts +102 -0
  266. package/lib/generated-proto/pb_schema/cdp/cof/debug_info.js +165 -0
  267. package/lib/generated-proto/pb_schema/cdp/cof/debug_info.js.map +1 -0
  268. package/lib/generated-proto/pb_schema/cdp/cof/namespace.d.ts +8 -0
  269. package/lib/generated-proto/pb_schema/cdp/cof/namespace.js +17 -0
  270. package/lib/generated-proto/pb_schema/cdp/cof/namespace.js.map +1 -0
  271. package/lib/generated-proto/pb_schema/common/ruid.d.ts +75 -0
  272. package/lib/generated-proto/pb_schema/common/ruid.js +96 -0
  273. package/lib/generated-proto/pb_schema/common/ruid.js.map +1 -0
  274. package/lib/generated-proto/pb_schema/common/value.d.ts +131 -0
  275. package/lib/generated-proto/pb_schema/common/value.js +204 -0
  276. package/lib/generated-proto/pb_schema/common/value.js.map +1 -0
  277. package/lib/generated-proto/pb_schema/google/api/annotations.d.ts +1 -0
  278. package/lib/generated-proto/pb_schema/google/api/annotations.js +9 -0
  279. package/lib/generated-proto/pb_schema/google/api/annotations.js.map +1 -0
  280. package/lib/generated-proto/pb_schema/google/api/http.d.ts +3636 -0
  281. package/lib/generated-proto/pb_schema/google/api/http.js +271 -0
  282. package/lib/generated-proto/pb_schema/google/api/http.js.map +1 -0
  283. package/lib/generated-proto/pb_schema/google/protobuf/any.d.ts +139 -0
  284. package/lib/generated-proto/pb_schema/google/protobuf/any.js +94 -0
  285. package/lib/generated-proto/pb_schema/google/protobuf/any.js.map +1 -0
  286. package/lib/generated-proto/pb_schema/google/protobuf/descriptor.d.ts +50968 -0
  287. package/lib/generated-proto/pb_schema/google/protobuf/descriptor.js +2962 -0
  288. package/lib/generated-proto/pb_schema/google/protobuf/descriptor.js.map +1 -0
  289. package/lib/generated-proto/pb_schema/google/protobuf/timestamp.d.ts +98 -0
  290. package/lib/generated-proto/pb_schema/google/protobuf/timestamp.js +82 -0
  291. package/lib/generated-proto/pb_schema/google/protobuf/timestamp.js.map +1 -0
  292. package/lib/generated-proto/pb_schema/google/protobuf/wrappers.d.ts +173 -0
  293. package/lib/generated-proto/pb_schema/google/protobuf/wrappers.js +332 -0
  294. package/lib/generated-proto/pb_schema/google/protobuf/wrappers.js.map +1 -0
  295. package/lib/generated-proto/pb_schema/lenses/geocircle.d.ts +42 -0
  296. package/lib/generated-proto/pb_schema/lenses/geocircle.js +52 -0
  297. package/lib/generated-proto/pb_schema/lenses/geocircle.js.map +1 -0
  298. package/lib/generated-proto/pb_schema/lenses/geopoint.d.ts +32 -0
  299. package/lib/generated-proto/pb_schema/lenses/geopoint.js +50 -0
  300. package/lib/generated-proto/pb_schema/lenses/geopoint.js.map +1 -0
  301. package/lib/generated-proto/pb_schema/lenses/launch_params.d.ts +29 -0
  302. package/lib/generated-proto/pb_schema/lenses/launch_params.js +43 -0
  303. package/lib/generated-proto/pb_schema/lenses/launch_params.js.map +1 -0
  304. package/lib/generated-proto/pb_schema/lenses/launchdata.d.ts +365 -0
  305. package/lib/generated-proto/pb_schema/lenses/launchdata.js +216 -0
  306. package/lib/generated-proto/pb_schema/lenses/launchdata.js.map +1 -0
  307. package/lib/generated-proto/pb_schema/lenses/lures.d.ts +113 -0
  308. package/lib/generated-proto/pb_schema/lenses/lures.js +64 -0
  309. package/lib/generated-proto/pb_schema/lenses/lures.js.map +1 -0
  310. package/lib/generated-proto/pb_schema/lenses/persistent_store.d.ts +29 -0
  311. package/lib/generated-proto/pb_schema/lenses/persistent_store.js +43 -0
  312. package/lib/generated-proto/pb_schema/lenses/persistent_store.js.map +1 -0
  313. package/lib/generated-proto/pb_schema/lenses/snappable.d.ts +921 -0
  314. package/lib/generated-proto/pb_schema/lenses/snappable.js +954 -0
  315. package/lib/generated-proto/pb_schema/lenses/snappable.js.map +1 -0
  316. package/lib/generated-proto/pb_schema/lenses/user_data.d.ts +247 -0
  317. package/lib/generated-proto/pb_schema/lenses/user_data.js +362 -0
  318. package/lib/generated-proto/pb_schema/lenses/user_data.js.map +1 -0
  319. package/lib/handlers/HandlerChainBuilder.d.ts +95 -0
  320. package/lib/handlers/HandlerChainBuilder.js +187 -0
  321. package/lib/handlers/HandlerChainBuilder.js.map +1 -0
  322. package/lib/handlers/arrayBufferParsingHandler.d.ts +10 -0
  323. package/lib/handlers/arrayBufferParsingHandler.js +18 -0
  324. package/lib/handlers/arrayBufferParsingHandler.js.map +1 -0
  325. package/lib/handlers/batchingHandler.d.ts +25 -0
  326. package/lib/handlers/batchingHandler.js +79 -0
  327. package/lib/handlers/batchingHandler.js.map +1 -0
  328. package/lib/handlers/cameraKitServiceFetchHandlerFactory.d.ts +12 -0
  329. package/lib/handlers/cameraKitServiceFetchHandlerFactory.js +19 -0
  330. package/lib/handlers/cameraKitServiceFetchHandlerFactory.js.map +1 -0
  331. package/lib/handlers/debugHandler.d.ts +8 -0
  332. package/lib/handlers/debugHandler.js +27 -0
  333. package/lib/handlers/debugHandler.js.map +1 -0
  334. package/lib/handlers/defaultFetchHandler.d.ts +15 -0
  335. package/lib/handlers/defaultFetchHandler.js +29 -0
  336. package/lib/handlers/defaultFetchHandler.js.map +1 -0
  337. package/lib/handlers/headersModifyingFetchHandler.d.ts +8 -0
  338. package/lib/handlers/headersModifyingFetchHandler.js +13 -0
  339. package/lib/handlers/headersModifyingFetchHandler.js.map +1 -0
  340. package/lib/handlers/index.d.ts +2 -0
  341. package/lib/handlers/index.js +3 -0
  342. package/lib/handlers/index.js.map +1 -0
  343. package/lib/handlers/mappingHandler.d.ts +15 -0
  344. package/lib/handlers/mappingHandler.js +65 -0
  345. package/lib/handlers/mappingHandler.js.map +1 -0
  346. package/lib/handlers/noCorsRetryingFetchHandler.d.ts +48 -0
  347. package/lib/handlers/noCorsRetryingFetchHandler.js +94 -0
  348. package/lib/handlers/noCorsRetryingFetchHandler.js.map +1 -0
  349. package/lib/handlers/persistingHandler.d.ts +14 -0
  350. package/lib/handlers/persistingHandler.js +71 -0
  351. package/lib/handlers/persistingHandler.js.map +1 -0
  352. package/lib/handlers/rateLimitingHandler.d.ts +20 -0
  353. package/lib/handlers/rateLimitingHandler.js +43 -0
  354. package/lib/handlers/rateLimitingHandler.js.map +1 -0
  355. package/lib/handlers/requestStateEmittingHandler.d.ts +29 -0
  356. package/lib/handlers/requestStateEmittingHandler.js +43 -0
  357. package/lib/handlers/requestStateEmittingHandler.js.map +1 -0
  358. package/lib/handlers/responseCachingHandler.d.ts +27 -0
  359. package/lib/handlers/responseCachingHandler.js +94 -0
  360. package/lib/handlers/responseCachingHandler.js.map +1 -0
  361. package/lib/handlers/retryingHandler.d.ts +37 -0
  362. package/lib/handlers/retryingHandler.js +73 -0
  363. package/lib/handlers/retryingHandler.js.map +1 -0
  364. package/lib/handlers/timeoutHandler.d.ts +18 -0
  365. package/lib/handlers/timeoutHandler.js +30 -0
  366. package/lib/handlers/timeoutHandler.js.map +1 -0
  367. package/lib/index.d.ts +33 -0
  368. package/lib/index.js +32 -0
  369. package/lib/index.js.map +1 -0
  370. package/lib/legal/legalPrompt.d.ts +17 -0
  371. package/lib/legal/legalPrompt.js +144 -0
  372. package/lib/legal/legalPrompt.js.map +1 -0
  373. package/lib/legal/legalState.d.ts +50 -0
  374. package/lib/legal/legalState.js +149 -0
  375. package/lib/legal/legalState.js.map +1 -0
  376. package/lib/lens/Lens.d.ts +71 -0
  377. package/lib/lens/Lens.js +63 -0
  378. package/lib/lens/Lens.js.map +1 -0
  379. package/lib/lens/LensLaunchParams.d.ts +19 -0
  380. package/lib/lens/LensLaunchParams.js +38 -0
  381. package/lib/lens/LensLaunchParams.js.map +1 -0
  382. package/lib/lens/LensPersistenceStore.d.ts +7 -0
  383. package/lib/lens/LensPersistenceStore.js +20 -0
  384. package/lib/lens/LensPersistenceStore.js.map +1 -0
  385. package/lib/lens/LensRepository.d.ts +134 -0
  386. package/lib/lens/LensRepository.js +239 -0
  387. package/lib/lens/LensRepository.js.map +1 -0
  388. package/lib/lens/assets/LensAssetRepository.d.ts +66 -0
  389. package/lib/lens/assets/LensAssetRepository.js +179 -0
  390. package/lib/lens/assets/LensAssetRepository.js.map +1 -0
  391. package/lib/lens/assets/LensAssetsProvider.d.ts +21 -0
  392. package/lib/lens/assets/LensAssetsProvider.js +41 -0
  393. package/lib/lens/assets/LensAssetsProvider.js.map +1 -0
  394. package/lib/lens/assets/deviceDependentAssetLoader.d.ts +11 -0
  395. package/lib/lens/assets/deviceDependentAssetLoader.js +58 -0
  396. package/lib/lens/assets/deviceDependentAssetLoader.js.map +1 -0
  397. package/lib/lens/assets/remoteMediaAssetLoaderFactory.d.ts +10 -0
  398. package/lib/lens/assets/remoteMediaAssetLoaderFactory.js +26 -0
  399. package/lib/lens/assets/remoteMediaAssetLoaderFactory.js.map +1 -0
  400. package/lib/lens/assets/staticAssetLoader.d.ts +10 -0
  401. package/lib/lens/assets/staticAssetLoader.js +24 -0
  402. package/lib/lens/assets/staticAssetLoader.js.map +1 -0
  403. package/lib/lens/index.d.ts +7 -0
  404. package/lib/lens/index.js +7 -0
  405. package/lib/lens/index.js.map +1 -0
  406. package/lib/lens/lensEnvelopeUtil.d.ts +5 -0
  407. package/lib/lens/lensEnvelopeUtil.js +19 -0
  408. package/lib/lens/lensEnvelopeUtil.js.map +1 -0
  409. package/lib/lens/lensHttpUtil.d.ts +4 -0
  410. package/lib/lens/lensHttpUtil.js +30 -0
  411. package/lib/lens/lensHttpUtil.js.map +1 -0
  412. package/lib/lens-client-interface/exif.d.ts +20 -0
  413. package/lib/lens-client-interface/exif.js +61 -0
  414. package/lib/lens-client-interface/exif.js.map +1 -0
  415. package/lib/lens-client-interface/imagePicker.d.ts +7 -0
  416. package/lib/lens-client-interface/imagePicker.js +128 -0
  417. package/lib/lens-client-interface/imagePicker.js.map +1 -0
  418. package/lib/lens-client-interface/lensClientInterface.d.ts +13 -0
  419. package/lib/lens-client-interface/lensClientInterface.js +30 -0
  420. package/lib/lens-client-interface/lensClientInterface.js.map +1 -0
  421. package/lib/lens-core-module/generated-types.d.ts +426 -0
  422. package/lib/lens-core-module/generated-types.js +2 -0
  423. package/lib/lens-core-module/generated-types.js.map +1 -0
  424. package/lib/lens-core-module/index.d.ts +2 -0
  425. package/lib/lens-core-module/index.js +3 -0
  426. package/lib/lens-core-module/index.js.map +1 -0
  427. package/lib/lens-core-module/loader/index.d.ts +1 -0
  428. package/lib/lens-core-module/loader/index.js +2 -0
  429. package/lib/lens-core-module/loader/index.js.map +1 -0
  430. package/lib/lens-core-module/loader/lensCoreFactory.d.ts +30 -0
  431. package/lib/lens-core-module/loader/lensCoreFactory.js +121 -0
  432. package/lib/lens-core-module/loader/lensCoreFactory.js.map +1 -0
  433. package/lib/lensCoreWasmVersions.json +5 -0
  434. package/lib/logger/errorLoggingDecorator.d.ts +9 -0
  435. package/lib/logger/errorLoggingDecorator.js +32 -0
  436. package/lib/logger/errorLoggingDecorator.js.map +1 -0
  437. package/lib/logger/logEntries.d.ts +15 -0
  438. package/lib/logger/logEntries.js +14 -0
  439. package/lib/logger/logEntries.js.map +1 -0
  440. package/lib/logger/logger.d.ts +35 -0
  441. package/lib/logger/logger.js +48 -0
  442. package/lib/logger/logger.js.map +1 -0
  443. package/lib/logger/registerLogEntriesSubscriber.d.ts +14 -0
  444. package/lib/logger/registerLogEntriesSubscriber.js +23 -0
  445. package/lib/logger/registerLogEntriesSubscriber.js.map +1 -0
  446. package/lib/media-sources/CameraKitSource.d.ts +88 -0
  447. package/lib/media-sources/CameraKitSource.js +140 -0
  448. package/lib/media-sources/CameraKitSource.js.map +1 -0
  449. package/lib/media-sources/FunctionSource.d.ts +30 -0
  450. package/lib/media-sources/FunctionSource.js +132 -0
  451. package/lib/media-sources/FunctionSource.js.map +1 -0
  452. package/lib/media-sources/ImageSource.d.ts +13 -0
  453. package/lib/media-sources/ImageSource.js +28 -0
  454. package/lib/media-sources/ImageSource.js.map +1 -0
  455. package/lib/media-sources/MediaStreamSource.d.ts +41 -0
  456. package/lib/media-sources/MediaStreamSource.js +146 -0
  457. package/lib/media-sources/MediaStreamSource.js.map +1 -0
  458. package/lib/media-sources/VideoSource.d.ts +21 -0
  459. package/lib/media-sources/VideoSource.js +38 -0
  460. package/lib/media-sources/VideoSource.js.map +1 -0
  461. package/lib/metrics/businessEventsReporter.d.ts +37 -0
  462. package/lib/metrics/businessEventsReporter.js +160 -0
  463. package/lib/metrics/businessEventsReporter.js.map +1 -0
  464. package/lib/metrics/metricsEventTarget.d.ts +41 -0
  465. package/lib/metrics/metricsEventTarget.js +11 -0
  466. package/lib/metrics/metricsEventTarget.js.map +1 -0
  467. package/lib/metrics/metricsHandler.d.ts +9 -0
  468. package/lib/metrics/metricsHandler.js +13 -0
  469. package/lib/metrics/metricsHandler.js.map +1 -0
  470. package/lib/metrics/operationalMetricsReporter.d.ts +52 -0
  471. package/lib/metrics/operationalMetricsReporter.js +108 -0
  472. package/lib/metrics/operationalMetricsReporter.js.map +1 -0
  473. package/lib/metrics/reporters/reportBenchmarks.d.ts +10 -0
  474. package/lib/metrics/reporters/reportBenchmarks.js +29 -0
  475. package/lib/metrics/reporters/reportBenchmarks.js.map +1 -0
  476. package/lib/metrics/reporters/reportGlobalException.d.ts +19 -0
  477. package/lib/metrics/reporters/reportGlobalException.js +68 -0
  478. package/lib/metrics/reporters/reportGlobalException.js.map +1 -0
  479. package/lib/metrics/reporters/reportHttpMetrics.d.ts +17 -0
  480. package/lib/metrics/reporters/reportHttpMetrics.js +92 -0
  481. package/lib/metrics/reporters/reportHttpMetrics.js.map +1 -0
  482. package/lib/metrics/reporters/reportLegalState.d.ts +15 -0
  483. package/lib/metrics/reporters/reportLegalState.js +34 -0
  484. package/lib/metrics/reporters/reportLegalState.js.map +1 -0
  485. package/lib/metrics/reporters/reportLensAndAssetDownload.d.ts +38 -0
  486. package/lib/metrics/reporters/reportLensAndAssetDownload.js +88 -0
  487. package/lib/metrics/reporters/reportLensAndAssetDownload.js.map +1 -0
  488. package/lib/metrics/reporters/reportLensValidationFailed.d.ts +20 -0
  489. package/lib/metrics/reporters/reportLensValidationFailed.js +24 -0
  490. package/lib/metrics/reporters/reportLensValidationFailed.js.map +1 -0
  491. package/lib/metrics/reporters/reportLensView.d.ts +36 -0
  492. package/lib/metrics/reporters/reportLensView.js +101 -0
  493. package/lib/metrics/reporters/reportLensView.js.map +1 -0
  494. package/lib/metrics/reporters/reportLensWait.d.ts +33 -0
  495. package/lib/metrics/reporters/reportLensWait.js +56 -0
  496. package/lib/metrics/reporters/reportLensWait.js.map +1 -0
  497. package/lib/metrics/reporters/reportSessionException.d.ts +17 -0
  498. package/lib/metrics/reporters/reportSessionException.js +12 -0
  499. package/lib/metrics/reporters/reportSessionException.js.map +1 -0
  500. package/lib/metrics/reporters/reportUserSession.d.ts +14 -0
  501. package/lib/metrics/reporters/reportUserSession.js +67 -0
  502. package/lib/metrics/reporters/reportUserSession.js.map +1 -0
  503. package/lib/metrics/reporters/reporters.d.ts +44 -0
  504. package/lib/metrics/reporters/reporters.js +33 -0
  505. package/lib/metrics/reporters/reporters.js.map +1 -0
  506. package/lib/namedErrors.d.ts +107 -0
  507. package/lib/namedErrors.js +56 -0
  508. package/lib/namedErrors.js.map +1 -0
  509. package/lib/persistence/ExpiringPersistence.d.ts +20 -0
  510. package/lib/persistence/ExpiringPersistence.js +58 -0
  511. package/lib/persistence/ExpiringPersistence.js.map +1 -0
  512. package/lib/persistence/IndexedDBPersistence.d.ts +47 -0
  513. package/lib/persistence/IndexedDBPersistence.js +180 -0
  514. package/lib/persistence/IndexedDBPersistence.js.map +1 -0
  515. package/lib/persistence/Persistence.d.ts +25 -0
  516. package/lib/persistence/Persistence.js +10 -0
  517. package/lib/persistence/Persistence.js.map +1 -0
  518. package/lib/remote-configuration/cofHandler.d.ts +21 -0
  519. package/lib/remote-configuration/cofHandler.js +75 -0
  520. package/lib/remote-configuration/cofHandler.js.map +1 -0
  521. package/lib/remote-configuration/remoteConfiguration.d.ts +13 -0
  522. package/lib/remote-configuration/remoteConfiguration.js +43 -0
  523. package/lib/remote-configuration/remoteConfiguration.js.map +1 -0
  524. package/lib/session/CameraKitSession.d.ts +252 -0
  525. package/lib/session/CameraKitSession.js +439 -0
  526. package/lib/session/CameraKitSession.js.map +1 -0
  527. package/lib/session/CameraKitSessionEvents.d.ts +33 -0
  528. package/lib/session/CameraKitSessionEvents.js +21 -0
  529. package/lib/session/CameraKitSessionEvents.js.map +1 -0
  530. package/lib/session/LensKeyboard.d.ts +89 -0
  531. package/lib/session/LensKeyboard.js +95 -0
  532. package/lib/session/LensKeyboard.js.map +1 -0
  533. package/lib/session/LensPerformanceMeasurement.d.ts +55 -0
  534. package/lib/session/LensPerformanceMeasurement.js +91 -0
  535. package/lib/session/LensPerformanceMeasurement.js.map +1 -0
  536. package/lib/session/LensPerformanceMetrics.d.ts +31 -0
  537. package/lib/session/LensPerformanceMetrics.js +58 -0
  538. package/lib/session/LensPerformanceMetrics.js.map +1 -0
  539. package/lib/session/index.d.ts +1 -0
  540. package/lib/session/index.js +2 -0
  541. package/lib/session/index.js.map +1 -0
  542. package/lib/session/lensState.d.ts +29 -0
  543. package/lib/session/lensState.js +160 -0
  544. package/lib/session/lensState.js.map +1 -0
  545. package/lib/session/sessionState.d.ts +10 -0
  546. package/lib/session/sessionState.js +12 -0
  547. package/lib/session/sessionState.js.map +1 -0
  548. package/lib/transforms/Transform2D.d.ts +17 -0
  549. package/lib/transforms/Transform2D.js +18 -0
  550. package/lib/transforms/Transform2D.js.map +1 -0
  551. package/lib/transforms/index.d.ts +1 -0
  552. package/lib/transforms/index.js +2 -0
  553. package/lib/transforms/index.js.map +1 -0
  554. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseCachingHandler.js","sourceRoot":"","sources":["../../src/handlers/responseCachingHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { ensureError } from \"../common/errorHelpers\";\nimport { cacheKeyNotFoundError } from \"../namedErrors\";\nimport { getLogger } from \"../logger/logger\";\nimport { Persistence, ValidKey } from \"../persistence/Persistence\";\nimport { ChainableHandler, RequestMetadata } from \"./HandlerChainBuilder\";\n\nconst logger = getLogger(\"responseCachingHandler\");\nconst notFound = (key: ValidKey) => cacheKeyNotFoundError(`Response for key ${key} not found in cache.`);\nconst strategyFailed = (key: ValidKey, cause?: unknown) =>\n new Error(`Network request and cache lookup for ${key} both failed.`, { cause });\n\nexport type CachingStrategy<T> = (key: ValidKey, cache: Persistence<T>, network: () => Promise<T>) => Promise<T>;\n\n/**\n * Create a CachingStrategy that first makes a request to the network, falling back to cache if the network request\n * fails. If the network request fails and a prior response has not been cached, an error is returned to the caller.\n */\nexport const staleIfErrorStrategy = <T>(): CachingStrategy<T> => async (key, cache, network) => {\n try {\n const response = await network();\n cache.store(key, response).catch((error) => {\n logger.warn(`staleIfErrorStrategy failed to store key ${key}.`, error);\n });\n return response;\n } catch (networkError) {\n try {\n const cachedResponse = await cache.retrieve(key);\n if (!cachedResponse) throw notFound(key);\n logger.debug(\n `staleIfErrorStrategy successfully fell back to cache for key ${key} after network error.`,\n networkError\n );\n return cachedResponse;\n } catch (cacheError) {\n const error = ensureError(cacheError);\n error.cause = networkError;\n throw strategyFailed(key, error);\n }\n }\n};\n\n/**\n * Create a CachingStrategy that first does a cache lookup – if the response is found in cache, it is returned and the\n * entry is updated with a request to the network in the background. If no cached response is found, the network request\n * is made, the result cached and returned to the caller.\n */\nexport const staleWhileRevalidateStrategy = <T>(): CachingStrategy<T> => async (key, cache, network) => {\n try {\n const cachedResponse = await cache.retrieve(key);\n if (!cachedResponse) throw notFound(key);\n network()\n .then((response) => cache.store(key, response))\n .catch((error) => {\n logger.warn(`staleWhileRevalidateStrategy failed to retrieve and store key ${key}.`, error);\n });\n return cachedResponse;\n } catch (cacheError) {\n try {\n const response = await network();\n cache.store(key, response).catch((error) => {\n logger.warn(`staleWhileRevalidateStrategy failed to store key ${key}.`, error);\n });\n logger.debug(\n `staleWhileRevalidateStrategy successfully fell back to network for key ${key} after cache error.`,\n cacheError\n );\n return response;\n } catch (networkError) {\n const error = ensureError(networkError);\n error.cause = cacheError;\n throw strategyFailed(key, error);\n }\n }\n};\n\n/**\n * Create a Handler capable of caching responses using various caching strategies.\n *\n * More than one caching strategy can be provided, and they will be composed into a single strategy. For example, an\n * expiringStrategy could be composed with a staleIfErrorStrategy so that responses\n *\n * @param cache A Persistence instance capable of storing responses.\n * @param resolveKey This function is called once for each request, and must return a valid persistence key\n * corresponding uniquely to that request.\n * @param strategy A CachingStrategy used to determine when to retrieve from cache vs. request from the network.\n * @returns\n */\nexport const createResponseCachingHandler = <Req, Res, Meta extends RequestMetadata>(\n cache: Persistence<Res>,\n resolveKey: (request: Req, metadata?: Meta) => ValidKey,\n strategy: CachingStrategy<Res>\n): ChainableHandler<Req, Res, Req, Res, Meta> => {\n return (next) => async (request, metadata) => {\n const network = () => next(request, metadata);\n\n let key: ValidKey;\n try {\n key = resolveKey(request, metadata);\n } catch (error) {\n logger.warn(\"Cache lookup failed because the cache key could not be resolved.\", error);\n return network();\n }\n return strategy(key, cache, network);\n };\n};\n"]}
@@ -0,0 +1,37 @@
1
+ import { ChainableHandler, RequestMetadata } from "./HandlerChainBuilder";
2
+ export interface RetryingHandlerOptions<Req> {
3
+ /**
4
+ * Multiple used to increase the random backoff between attempts. Default is 3, usually doesn't need to be changed.
5
+ */
6
+ backoffMultiple: number;
7
+ /**
8
+ * The minimum number of milliseconds to sleep between attempts.
9
+ *
10
+ * The actual number of milliseconds slept between attempts is chosen at random.
11
+ */
12
+ baseSleep: number;
13
+ /**
14
+ * The maximum number of milliseconds to sleep between attempts. Note that this is not a timeout -- if multiple
15
+ * request attempts are made, the total request latency will be longer than this.
16
+ *
17
+ * The actual number of milliseconds slept between attempts is chosen at random.
18
+ */
19
+ maxSleep: number;
20
+ /**
21
+ * Determine if a given error is retryable. If `false` is returned, the error will be passed up to the Handler's
22
+ * caller and no additional retry attempts will be made.
23
+ */
24
+ retryPredicate: (responseOrError: Req | Error) => boolean;
25
+ }
26
+ /**
27
+ * Retry requests using an exponential backoff with jitter strategy.
28
+ *
29
+ * More about this approach to retries can be found
30
+ * [here](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/). This implementation uses the
31
+ * "Decorrelated jitter" algorithm described in that post. This offers a good tradeoff between call volume and latency,
32
+ * and also allows for convenient configurability.
33
+ *
34
+ * @param options
35
+ * @returns {@link ChainableHandler}, suitable for use in {@link HandlerChainBuilder.map}
36
+ */
37
+ export declare const createRetryingHandler: <Req, Res, Meta extends RequestMetadata>(options?: Partial<RetryingHandlerOptions<Res>>) => ChainableHandler<Req, Res, Req, Res, Meta>;
@@ -0,0 +1,73 @@
1
+ import { __awaiter } from "tslib";
2
+ import { copyDefinedProperties } from "../common/copyDefinedProperties";
3
+ import { getLogger } from "../logger/logger";
4
+ const logger = getLogger("retryingHandler");
5
+ const logRetry = (responseOrError, sleep) => {
6
+ logger.warn(`Retrying handler got failed response:`, responseOrError, `Waited ${sleep} millis, attempting retry now.`);
7
+ };
8
+ const sleep = (millis) => new Promise((resolve) => setTimeout(resolve, millis));
9
+ const randomInRange = (min, max) => Math.round(Math.random() * (max - min) + min);
10
+ const defaultOptions = {
11
+ backoffMultiple: 3,
12
+ baseSleep: 500,
13
+ maxSleep: 5 * 1000,
14
+ // The Response type is very common, so our default predicate special-cases to retry all failed Responses.
15
+ retryPredicate: (responseOrError) => (responseOrError instanceof Response ? !responseOrError.ok : true),
16
+ };
17
+ /**
18
+ * Retry requests using an exponential backoff with jitter strategy.
19
+ *
20
+ * More about this approach to retries can be found
21
+ * [here](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/). This implementation uses the
22
+ * "Decorrelated jitter" algorithm described in that post. This offers a good tradeoff between call volume and latency,
23
+ * and also allows for convenient configurability.
24
+ *
25
+ * @param options
26
+ * @returns {@link ChainableHandler}, suitable for use in {@link HandlerChainBuilder.map}
27
+ */
28
+ export const createRetryingHandler = (options = {}) => {
29
+ const definedOptions = copyDefinedProperties(options);
30
+ const { backoffMultiple, baseSleep, maxSleep, retryPredicate } = Object.assign(Object.assign({}, defaultOptions), definedOptions);
31
+ const jitterSleep = (priorSleep) => __awaiter(void 0, void 0, void 0, function* () {
32
+ const nextSleep = Math.min(maxSleep, randomInRange(baseSleep, priorSleep * backoffMultiple));
33
+ yield sleep(nextSleep);
34
+ return nextSleep;
35
+ });
36
+ const makeRequestAttempt = (next, priorSleep = baseSleep) => (req, metadata) => __awaiter(void 0, void 0, void 0, function* () {
37
+ var _a, _b;
38
+ try {
39
+ const response = yield next(req, metadata);
40
+ if (retryPredicate(response)) {
41
+ const nextSleep = yield jitterSleep(priorSleep);
42
+ // The request may have been aborted while we were sleeping. In that case, we'll resolve with the failed
43
+ // response. In many cases this will be ignored, because an AbortError has already been returned to
44
+ // the caller of the Handler chain – but this prevents us from doing any extra work, and there may be
45
+ // edge cases where the caller could find the response useful.
46
+ if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.signal) === null || _a === void 0 ? void 0 : _a.aborted)
47
+ return response;
48
+ logRetry(response, nextSleep);
49
+ return makeRequestAttempt(next, nextSleep)(req, metadata);
50
+ }
51
+ return response;
52
+ }
53
+ catch (error) {
54
+ if (!(error instanceof Error)) {
55
+ throw new Error("Invalid type caught by retrying handler. Handlers may only throw Errors. Got " +
56
+ `${JSON.stringify(error)}`);
57
+ }
58
+ // If the request fails because it was aborted, we assume this was done intentionally and we can stop.
59
+ if (error.name === "AbortError")
60
+ throw error;
61
+ // If no retry is to be attempted, return the error to the caller.
62
+ if (!retryPredicate(error))
63
+ throw error;
64
+ const nextSleep = yield jitterSleep(priorSleep);
65
+ if ((_b = metadata === null || metadata === void 0 ? void 0 : metadata.signal) === null || _b === void 0 ? void 0 : _b.aborted)
66
+ throw error;
67
+ logRetry(error, nextSleep);
68
+ return makeRequestAttempt(next, nextSleep)(req, metadata);
69
+ }
70
+ });
71
+ return (next) => makeRequestAttempt(next);
72
+ };
73
+ //# sourceMappingURL=retryingHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryingHandler.js","sourceRoot":"","sources":["../../src/handlers/retryingHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { copyDefinedProperties } from \"../common/copyDefinedProperties\";\nimport { getLogger } from \"../logger/logger\";\nimport { ChainableHandler, Handler, RequestMetadata } from \"./HandlerChainBuilder\";\n\nconst logger = getLogger(\"retryingHandler\");\n\nconst logRetry = (responseOrError: any, sleep: number) => {\n logger.warn(\n `Retrying handler got failed response:`,\n responseOrError,\n `Waited ${sleep} millis, attempting retry now.`\n );\n};\n\nconst sleep = (millis: number) => new Promise((resolve) => setTimeout(resolve, millis));\n\nconst randomInRange = (min: number, max: number) => Math.round(Math.random() * (max - min) + min);\n\nconst defaultOptions: RetryingHandlerOptions<unknown> = {\n backoffMultiple: 3,\n baseSleep: 500,\n maxSleep: 5 * 1000,\n\n // The Response type is very common, so our default predicate special-cases to retry all failed Responses.\n retryPredicate: (responseOrError: unknown) => (responseOrError instanceof Response ? !responseOrError.ok : true),\n};\nexport interface RetryingHandlerOptions<Req> {\n /**\n * Multiple used to increase the random backoff between attempts. Default is 3, usually doesn't need to be changed.\n */\n backoffMultiple: number;\n\n /**\n * The minimum number of milliseconds to sleep between attempts.\n *\n * The actual number of milliseconds slept between attempts is chosen at random.\n */\n baseSleep: number;\n\n /**\n * The maximum number of milliseconds to sleep between attempts. Note that this is not a timeout -- if multiple\n * request attempts are made, the total request latency will be longer than this.\n *\n * The actual number of milliseconds slept between attempts is chosen at random.\n */\n maxSleep: number;\n\n /**\n * Determine if a given error is retryable. If `false` is returned, the error will be passed up to the Handler's\n * caller and no additional retry attempts will be made.\n */\n retryPredicate: (responseOrError: Req | Error) => boolean;\n}\n\n/**\n * Retry requests using an exponential backoff with jitter strategy.\n *\n * More about this approach to retries can be found\n * [here](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/). This implementation uses the\n * \"Decorrelated jitter\" algorithm described in that post. This offers a good tradeoff between call volume and latency,\n * and also allows for convenient configurability.\n *\n * @param options\n * @returns {@link ChainableHandler}, suitable for use in {@link HandlerChainBuilder.map}\n */\nexport const createRetryingHandler = <Req, Res, Meta extends RequestMetadata>(\n options: Partial<RetryingHandlerOptions<Res>> = {}\n): ChainableHandler<Req, Res, Req, Res, Meta> => {\n const definedOptions = copyDefinedProperties(options);\n const { backoffMultiple, baseSleep, maxSleep, retryPredicate } = { ...defaultOptions, ...definedOptions };\n\n const jitterSleep = async (priorSleep: number) => {\n const nextSleep = Math.min(maxSleep, randomInRange(baseSleep, priorSleep * backoffMultiple));\n await sleep(nextSleep);\n return nextSleep;\n };\n\n const makeRequestAttempt = (next: Handler<Req, Res, Meta>, priorSleep = baseSleep) => async (\n req: Req,\n metadata?: Meta\n ): Promise<Res> => {\n try {\n const response = await next(req, metadata);\n if (retryPredicate(response)) {\n const nextSleep = await jitterSleep(priorSleep);\n // The request may have been aborted while we were sleeping. In that case, we'll resolve with the failed\n // response. In many cases this will be ignored, because an AbortError has already been returned to\n // the caller of the Handler chain – but this prevents us from doing any extra work, and there may be\n // edge cases where the caller could find the response useful.\n if (metadata?.signal?.aborted) return response;\n logRetry(response, nextSleep);\n return makeRequestAttempt(next, nextSleep)(req, metadata);\n }\n return response;\n } catch (error) {\n if (!(error instanceof Error)) {\n throw new Error(\n \"Invalid type caught by retrying handler. Handlers may only throw Errors. Got \" +\n `${JSON.stringify(error)}`\n );\n }\n\n // If the request fails because it was aborted, we assume this was done intentionally and we can stop.\n if (error.name === \"AbortError\") throw error;\n\n // If no retry is to be attempted, return the error to the caller.\n if (!retryPredicate(error)) throw error;\n\n const nextSleep = await jitterSleep(priorSleep);\n if (metadata?.signal?.aborted) throw error;\n logRetry(error, nextSleep);\n return makeRequestAttempt(next, nextSleep)(req, metadata);\n }\n };\n\n return (next) => makeRequestAttempt(next);\n};\n"]}
@@ -0,0 +1,18 @@
1
+ import { ChainableHandler, RequestMetadata } from "./HandlerChainBuilder";
2
+ export interface TimeoutHandlerOptions<Req> {
3
+ /**
4
+ * A function that returns a new Error instance when a timeout occurs.
5
+ */
6
+ createError: (req: Req, meta?: RequestMetadata | void) => Error;
7
+ /**
8
+ * Abort requests after this number of milliseconds. Defaults to 30 seconds.
9
+ */
10
+ timeout: number;
11
+ }
12
+ /**
13
+ * Timeout requests after a given number of milliseconds, rejecting the Response promise with a custom error.
14
+ *
15
+ * @param options
16
+ * @returns {@link ChainableHandler}, suitable for use in {@link HandlerChainBuilder.map}
17
+ */
18
+ export declare const createTimeoutHandler: <Req, Res, Meta extends RequestMetadata>(options?: Partial<TimeoutHandlerOptions<Req>>) => ChainableHandler<Req, Res, Req, Res, Meta>;
@@ -0,0 +1,30 @@
1
+ import { copyDefinedProperties } from "../common/copyDefinedProperties";
2
+ import { isString } from "../common/typeguards";
3
+ const sleep = (millis) => new Promise((resolve) => setTimeout(resolve, millis));
4
+ const defaultOptions = {
5
+ createError: (request) => {
6
+ // The string and Request types are very common, so our default error creator special-cases those types to
7
+ // provide better error messages.
8
+ const destination = isString(request)
9
+ ? `for ${request}`
10
+ : request instanceof Request
11
+ ? `for ${request.url}`
12
+ : "";
13
+ return new Error(`Request ${destination} timed out by client timeout handler.`);
14
+ },
15
+ timeout: 30 * 1000,
16
+ };
17
+ /**
18
+ * Timeout requests after a given number of milliseconds, rejecting the Response promise with a custom error.
19
+ *
20
+ * @param options
21
+ * @returns {@link ChainableHandler}, suitable for use in {@link HandlerChainBuilder.map}
22
+ */
23
+ export const createTimeoutHandler = (options = {}) => {
24
+ const definedOptions = copyDefinedProperties(options);
25
+ const { createError, timeout } = Object.assign(Object.assign({}, defaultOptions), definedOptions);
26
+ // If the timeout Promise wins the race, the HandlerChainBuilder sets the abort signal for subsequent handlers. They
27
+ // may look at the abort signal in order to terminate themselves early.
28
+ return (next) => (req, meta) => Promise.race([next(req, meta), sleep(timeout).then(() => Promise.reject(createError(req, meta)))]);
29
+ };
30
+ //# sourceMappingURL=timeoutHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeoutHandler.js","sourceRoot":"","sources":["../../src/handlers/timeoutHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9F,MAAM,cAAc,GAAmC;IACnD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;QACrB,0GAA0G;QAC1G,iCAAiC;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,CAAC,CAAC,OAAO,OAAO,EAAE;YAClB,CAAC,CAAC,OAAO,YAAY,OAAO;gBAC5B,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE;gBACtB,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,IAAI,KAAK,CAAC,WAAW,WAAW,uCAAuC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,EAAE,GAAG,IAAI;CACrB,CAAC;AAcF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,UAA+C,EAAE,EACP,EAAE;IAC5C,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,mCAAQ,cAAc,GAAK,cAAc,CAAE,CAAC;IAE1E,oHAAoH;IACpH,uEAAuE;IACvE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3G,CAAC,CAAC","sourcesContent":["import { copyDefinedProperties } from \"../common/copyDefinedProperties\";\nimport { isString } from \"../common/typeguards\";\nimport { ChainableHandler, RequestMetadata } from \"./HandlerChainBuilder\";\n\nconst sleep = (millis: number) => new Promise<void>((resolve) => setTimeout(resolve, millis));\n\nconst defaultOptions: TimeoutHandlerOptions<unknown> = {\n createError: (request) => {\n // The string and Request types are very common, so our default error creator special-cases those types to\n // provide better error messages.\n const destination = isString(request)\n ? `for ${request}`\n : request instanceof Request\n ? `for ${request.url}`\n : \"\";\n return new Error(`Request ${destination} timed out by client timeout handler.`);\n },\n timeout: 30 * 1000,\n};\n\nexport interface TimeoutHandlerOptions<Req> {\n /**\n * A function that returns a new Error instance when a timeout occurs.\n */\n createError: (req: Req, meta?: RequestMetadata | void) => Error;\n\n /**\n * Abort requests after this number of milliseconds. Defaults to 30 seconds.\n */\n timeout: number;\n}\n\n/**\n * Timeout requests after a given number of milliseconds, rejecting the Response promise with a custom error.\n *\n * @param options\n * @returns {@link ChainableHandler}, suitable for use in {@link HandlerChainBuilder.map}\n */\nexport const createTimeoutHandler = <Req, Res, Meta extends RequestMetadata>(\n options: Partial<TimeoutHandlerOptions<Req>> = {}\n): ChainableHandler<Req, Res, Req, Res, Meta> => {\n const definedOptions = copyDefinedProperties(options);\n const { createError, timeout } = { ...defaultOptions, ...definedOptions };\n\n // If the timeout Promise wins the race, the HandlerChainBuilder sets the abort signal for subsequent handlers. They\n // may look at the abort signal in order to terminate themselves early.\n return (next) => (req, meta) =>\n Promise.race([next(req, meta), sleep(timeout).then(() => Promise.reject(createError(req, meta)))]);\n};\n"]}
package/lib/index.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ export { Keyboard, KeyboardEvents } from "./session/LensKeyboard";
2
+ export { CameraKitConfiguration, CameraKitBootstrapConfiguration, configurationToken } from "./configuration";
3
+ export { getRequiredBootstrapURLs } from "./lens-core-module/loader/lensCoreFactory";
4
+ export { estimateLensPerformance, EstimatedLensPerformance, LensPerformanceCluster, } from "./benchmark/estimateLensPerformanceCluster";
5
+ export * from "./bootstrapCameraKit";
6
+ export { extensionRequestContext } from "./extensions/extensionRequestContext";
7
+ export { LensSource, LensSources, lensSourcesFactory } from "./extensions/LensSources";
8
+ export { Uri, UriRequest, UriResponse, UriCancelRequest, UriHandler, UriHandlers, uriHandlersFactory, } from "./extensions/UriHandlers";
9
+ export { CameraKit, CreateSessionOptions, LensMetricsEvents } from "./CameraKit";
10
+ export { LensView } from "./metrics/reporters/reportLensView";
11
+ export { LensWait } from "./metrics/reporters/reportLensWait";
12
+ export { cameraKitUserAgent, CameraKitUserAgent } from "./common/cameraKitUserAgent";
13
+ export { Lens, toPublicLens } from "./lens/Lens";
14
+ export { AssetTiming, LensRepository } from "./lens/LensRepository";
15
+ export { LensLaunchParams } from "./lens/LensLaunchParams";
16
+ export { AssetLoader } from "./lens/assets/LensAssetRepository";
17
+ export { remoteMediaAssetLoaderFactory } from "./lens/assets/remoteMediaAssetLoaderFactory";
18
+ export * from "./media-sources/CameraKitSource";
19
+ export * from "./media-sources/MediaStreamSource";
20
+ export * from "./media-sources/FunctionSource";
21
+ export * from "./media-sources/VideoSource";
22
+ export * from "./media-sources/ImageSource";
23
+ export * from "./session/CameraKitSession";
24
+ export { CameraKitSessionEvents, CameraKitSessionEventListener } from "./session/CameraKitSessionEvents";
25
+ export { Injectable } from "./dependency-injection/Injectable";
26
+ export { PartialContainer } from "./dependency-injection/PartialContainer";
27
+ export * from "./transforms";
28
+ export * from "./namedErrors";
29
+ export { LensPerformanceMeasurement, ComputedFrameMetrics } from "./session/LensPerformanceMeasurement";
30
+ export { LensPerformanceMetrics } from "./session/LensPerformanceMetrics";
31
+ export { TypedCustomEvent } from "./events/TypedCustomEvent";
32
+ export { TypedEventTarget } from "./events/TypedEventTarget";
33
+ export { namedError } from "./namedErrors";
package/lib/index.js ADDED
@@ -0,0 +1,32 @@
1
+ import environment from "./environment.json";
2
+ import lensCoreWasm from "./lensCoreWasmVersions.json";
3
+ console.info(`SDK: ${environment.PACKAGE_VERSION} \
4
+ (${lensCoreWasm.version}/${lensCoreWasm.buildNumber})`);
5
+ export { configurationToken } from "./configuration";
6
+ export { getRequiredBootstrapURLs } from "./lens-core-module/loader/lensCoreFactory";
7
+ export { estimateLensPerformance, } from "./benchmark/estimateLensPerformanceCluster";
8
+ export * from "./bootstrapCameraKit";
9
+ export { extensionRequestContext } from "./extensions/extensionRequestContext";
10
+ export { LensSources, lensSourcesFactory } from "./extensions/LensSources";
11
+ export { uriHandlersFactory, } from "./extensions/UriHandlers";
12
+ export { CameraKit } from "./CameraKit";
13
+ export { cameraKitUserAgent } from "./common/cameraKitUserAgent";
14
+ export { toPublicLens } from "./lens/Lens";
15
+ export { LensRepository } from "./lens/LensRepository";
16
+ export { remoteMediaAssetLoaderFactory } from "./lens/assets/remoteMediaAssetLoaderFactory";
17
+ export * from "./media-sources/CameraKitSource";
18
+ export * from "./media-sources/MediaStreamSource";
19
+ export * from "./media-sources/FunctionSource";
20
+ export * from "./media-sources/VideoSource";
21
+ export * from "./media-sources/ImageSource";
22
+ export * from "./session/CameraKitSession";
23
+ export { Injectable } from "./dependency-injection/Injectable";
24
+ export { PartialContainer } from "./dependency-injection/PartialContainer";
25
+ export * from "./transforms";
26
+ export * from "./namedErrors";
27
+ export { LensPerformanceMeasurement } from "./session/LensPerformanceMeasurement";
28
+ export { LensPerformanceMetrics } from "./session/LensPerformanceMetrics";
29
+ export { TypedCustomEvent } from "./events/TypedCustomEvent";
30
+ export { TypedEventTarget } from "./events/TypedEventTarget";
31
+ export { namedError } from "./namedErrors";
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,eAAe;GAC7C,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;AAGxD,OAAO,EAA2D,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EACH,uBAAuB,GAG1B,MAAM,4CAA4C,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAc,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAOH,kBAAkB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA2C,MAAM,aAAa,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAQ,YAAY,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAe,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAwB,MAAM,sCAAsC,CAAC;AACxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC","sourcesContent":["import environment from \"./environment.json\";\nimport lensCoreWasm from \"./lensCoreWasmVersions.json\";\nconsole.info(`SDK: ${environment.PACKAGE_VERSION} \\\n(${lensCoreWasm.version}/${lensCoreWasm.buildNumber})`);\n\nexport { Keyboard, KeyboardEvents } from \"./session/LensKeyboard\";\nexport { CameraKitConfiguration, CameraKitBootstrapConfiguration, configurationToken } from \"./configuration\";\nexport { getRequiredBootstrapURLs } from \"./lens-core-module/loader/lensCoreFactory\";\nexport {\n estimateLensPerformance,\n EstimatedLensPerformance,\n LensPerformanceCluster,\n} from \"./benchmark/estimateLensPerformanceCluster\";\nexport * from \"./bootstrapCameraKit\";\nexport { extensionRequestContext } from \"./extensions/extensionRequestContext\";\nexport { LensSource, LensSources, lensSourcesFactory } from \"./extensions/LensSources\";\nexport {\n Uri,\n UriRequest,\n UriResponse,\n UriCancelRequest,\n UriHandler,\n UriHandlers,\n uriHandlersFactory,\n} from \"./extensions/UriHandlers\";\nexport { CameraKit, CreateSessionOptions, LensMetricsEvents } from \"./CameraKit\";\nexport { LensView } from \"./metrics/reporters/reportLensView\";\nexport { LensWait } from \"./metrics/reporters/reportLensWait\";\nexport { cameraKitUserAgent, CameraKitUserAgent } from \"./common/cameraKitUserAgent\";\nexport { Lens, toPublicLens } from \"./lens/Lens\";\nexport { AssetTiming, LensRepository } from \"./lens/LensRepository\";\nexport { LensLaunchParams } from \"./lens/LensLaunchParams\";\nexport { AssetLoader } from \"./lens/assets/LensAssetRepository\";\nexport { remoteMediaAssetLoaderFactory } from \"./lens/assets/remoteMediaAssetLoaderFactory\";\nexport * from \"./media-sources/CameraKitSource\";\nexport * from \"./media-sources/MediaStreamSource\";\nexport * from \"./media-sources/FunctionSource\";\nexport * from \"./media-sources/VideoSource\";\nexport * from \"./media-sources/ImageSource\";\nexport * from \"./session/CameraKitSession\";\nexport { CameraKitSessionEvents, CameraKitSessionEventListener } from \"./session/CameraKitSessionEvents\";\nexport { Injectable } from \"./dependency-injection/Injectable\";\nexport { PartialContainer } from \"./dependency-injection/PartialContainer\";\nexport * from \"./transforms\";\nexport * from \"./namedErrors\";\nexport { LensPerformanceMeasurement, ComputedFrameMetrics } from \"./session/LensPerformanceMeasurement\";\nexport { LensPerformanceMetrics } from \"./session/LensPerformanceMetrics\";\nexport { TypedCustomEvent } from \"./events/TypedCustomEvent\";\nexport { TypedEventTarget } from \"./events/TypedEventTarget\";\nexport { namedError } from \"./namedErrors\";\n"]}
@@ -0,0 +1,17 @@
1
+ import { Observable } from "rxjs";
2
+ import { LegalDocument, LegalDocument_Type } from "../generated-proto/pb_schema/camera_kit/v3/legal_prompt";
3
+ export declare type LegalPrompt = (privacyPolicy: LegalDocument & {
4
+ type: LegalDocument_Type.PRIVACY_POLICY;
5
+ }, termsOfService: LegalDocument & {
6
+ type: LegalDocument_Type.TERMS_OF_SERVICE;
7
+ }, learnMore: LegalDocument & {
8
+ type: LegalDocument_Type.LEARN_MORE;
9
+ }, container?: HTMLElement) => Observable<boolean>;
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const legalPromptFactory: {
14
+ (): LegalPrompt;
15
+ token: "legalPrompt";
16
+ dependencies: [];
17
+ };
@@ -0,0 +1,144 @@
1
+ import { fromEvent, map, mergeWith, take } from "rxjs";
2
+ import { Injectable } from "../dependency-injection/Injectable";
3
+ import { localizedString } from "../common/localization";
4
+ function createCameraKitLegalPrompt(privacyPolicyUrl, termsOfServiceUrl, learnMoreUrl) {
5
+ const element = document.createElement("div");
6
+ element.id = "tos-popup";
7
+ const shadow = element.attachShadow({ mode: "open" });
8
+ const prompt = document.createElement("div");
9
+ prompt.id = "content";
10
+ /* eslint-disable max-len */
11
+ prompt.innerHTML = `
12
+ <button id="reject">
13
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
14
+ <title>${localizedString("legalPromptReject")}</title>
15
+ <path
16
+ d="M 14.356 12.5 L 17.803 15.947 C 18.316 16.46 18.316 17.291 17.803 17.803 C 17.291 18.316 16.46 18.316 15.947 17.803 L 12.5 14.356 L 9.053 17.803 C 8.54 18.316 7.709 18.316 7.197 17.803 C 6.684 17.291 6.684 16.46 7.197 15.947 L 10.644 12.5 L 7.197 9.053 C 6.684 8.54 6.684 7.709 7.197 7.197 C 7.709 6.684 8.54 6.684 9.053 7.197 L 12.5 10.644 L 15.947 7.197 C 16.46 6.684 17.291 6.684 17.803 7.197 C 18.316 7.709 18.316 8.54 17.803 9.053 Z"
17
+ fill="#a0a0a0"
18
+ />
19
+ </svg>
20
+ </button>
21
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
22
+ <g>
23
+ <path
24
+ d="M 30.898 23.477 C 30.77 23.045 30.148 22.743 30.148 22.743 C 30.092 22.71 30.039 22.684 29.994 22.663 C 28.962 22.161 28.048 21.561 27.277 20.876 C 26.659 20.325 26.128 19.719 25.701 19.074 C 25.182 18.288 24.937 17.632 24.831 17.275 C 24.773 17.043 24.782 16.951 24.831 16.832 C 24.873 16.731 24.99 16.632 25.049 16.588 C 25.397 16.341 25.96 15.976 26.303 15.75 C 26.602 15.556 26.859 15.389 27.009 15.283 C 27.494 14.944 27.824 14.596 28.02 14.223 C 28.275 13.74 28.303 13.208 28.107 12.684 C 27.84 11.978 27.184 11.556 26.35 11.556 C 26.163 11.556 25.974 11.577 25.785 11.62 C 25.308 11.723 24.852 11.894 24.474 12.042 C 24.446 12.054 24.416 12.032 24.418 12.002 C 24.457 11.059 24.502 9.79 24.399 8.584 C 24.306 7.493 24.082 6.576 23.717 5.776 C 23.351 4.972 22.874 4.376 22.5 3.947 C 22.143 3.536 21.519 2.936 20.577 2.394 C 19.251 1.631 17.742 1.244 16.09 1.244 C 14.443 1.244 12.934 1.631 11.605 2.394 C 10.607 2.966 9.97 3.614 9.678 3.947 C 9.304 4.376 8.827 4.972 8.46 5.776 C 8.096 6.576 7.872 7.496 7.778 8.584 C 7.673 9.792 7.715 10.96 7.76 11.999 C 7.762 12.03 7.732 12.051 7.704 12.039 C 7.325 11.892 6.87 11.72 6.393 11.617 C 6.204 11.575 6.012 11.554 5.828 11.554 C 4.994 11.554 4.337 11.976 4.071 12.682 C 3.875 13.205 3.903 13.738 4.157 14.221 C 4.354 14.594 4.685 14.941 5.169 15.281 C 5.318 15.387 5.575 15.553 5.874 15.748 C 6.211 15.968 6.758 16.323 7.108 16.569 C 7.152 16.599 7.299 16.712 7.346 16.827 C 7.397 16.951 7.404 17.045 7.341 17.289 C 7.234 17.648 6.989 18.298 6.479 19.069 C 6.052 19.715 5.522 20.32 4.902 20.871 C 4.132 21.556 3.218 22.157 2.186 22.658 C 2.137 22.682 2.078 22.712 2.015 22.748 C 2.015 22.748 1.399 23.064 1.282 23.472 C 1.109 24.075 1.567 24.64 2.036 24.943 C 2.8 25.438 3.732 25.703 4.272 25.849 C 4.421 25.889 4.559 25.926 4.683 25.964 C 4.76 25.989 4.956 26.062 5.038 26.17 C 5.143 26.306 5.155 26.473 5.192 26.66 C 5.253 26.977 5.384 27.373 5.774 27.643 C 6.204 27.941 6.75 27.962 7.444 27.99 C 8.168 28.018 9.07 28.054 10.1 28.394 C 10.579 28.553 11.011 28.818 11.514 29.128 C 12.56 29.773 13.864 30.578 16.09 30.578 C 18.318 30.578 19.629 29.768 20.685 29.119 C 21.183 28.811 21.612 28.546 22.08 28.391 C 23.11 28.049 24.011 28.014 24.735 27.988 C 25.427 27.962 25.974 27.941 26.404 27.641 C 26.822 27.35 26.943 26.918 26.997 26.59 C 27.027 26.428 27.046 26.285 27.14 26.165 C 27.219 26.064 27.399 25.992 27.483 25.964 C 27.609 25.924 27.751 25.886 27.906 25.844 C 28.445 25.698 29.123 25.527 29.945 25.061 C 30.933 24.511 31.001 23.82 30.898 23.477"
25
+ fill="#ffffff"
26
+ stroke="#00000000"
27
+ stroke-width="1"
28
+ />
29
+ </g>
30
+ <g>
31
+ <path
32
+ d="M 29.56 24.299 C 28.21 25.045 27.312 24.965 26.613 25.414 C 26.021 25.795 26.37 26.618 25.939 26.915 C 25.411 27.279 23.843 26.889 21.822 27.555 C 20.155 28.107 19.09 29.689 16.089 29.689 C 13.081 29.689 12.047 28.114 10.357 27.555 C 8.335 26.889 6.768 27.279 6.24 26.915 C 5.809 26.618 6.16 25.795 5.566 25.414 C 4.869 24.965 3.969 25.045 2.619 24.299 C 1.758 23.825 2.247 23.53 2.532 23.393 C 7.426 21.027 8.204 17.372 8.24 17.096 C 8.282 16.769 8.328 16.509 7.966 16.175 C 7.615 15.853 6.066 14.895 5.636 14.593 C 4.925 14.098 4.612 13.6 4.841 12.99 C 5 12.569 5.395 12.41 5.812 12.41 C 5.94 12.41 6.071 12.426 6.2 12.452 C 6.981 12.623 7.741 13.013 8.179 13.118 C 8.24 13.132 8.293 13.139 8.34 13.139 C 8.574 13.139 8.656 13.022 8.639 12.754 C 8.59 11.9 8.469 10.234 8.602 8.677 C 8.787 6.536 9.477 5.476 10.298 4.538 C 10.693 4.087 12.543 2.133 16.082 2.133 C 19.633 2.133 21.474 4.087 21.867 4.538 C 22.688 5.478 23.378 6.536 23.563 8.677 C 23.698 10.234 23.581 11.898 23.525 12.754 C 23.506 13.034 23.591 13.139 23.825 13.139 C 23.872 13.139 23.925 13.132 23.986 13.118 C 24.426 13.013 25.184 12.62 25.965 12.452 C 26.091 12.424 26.222 12.41 26.353 12.41 C 26.77 12.41 27.165 12.569 27.324 12.99 C 27.555 13.6 27.242 14.095 26.529 14.593 C 26.098 14.892 24.547 15.85 24.199 16.175 C 23.836 16.509 23.883 16.767 23.925 17.096 C 23.96 17.372 24.739 21.025 29.633 23.393 C 29.932 23.53 30.421 23.825 29.56 24.299 M 31.709 23.12 C 31.489 22.523 31.07 22.203 30.594 21.939 C 30.505 21.887 30.423 21.845 30.355 21.812 C 30.212 21.74 30.067 21.667 29.922 21.592 C 28.435 20.806 27.275 19.812 26.469 18.635 C 26.198 18.238 26.008 17.88 25.877 17.587 C 25.809 17.391 25.811 17.281 25.86 17.178 C 25.898 17.101 25.996 17.019 26.05 16.979 C 26.305 16.811 26.57 16.64 26.748 16.525 C 27.067 16.319 27.317 16.156 27.481 16.043 C 28.093 15.617 28.519 15.164 28.786 14.658 C 29.163 13.945 29.21 13.131 28.919 12.363 C 28.517 11.301 27.509 10.642 26.291 10.642 C 26.038 10.642 25.783 10.67 25.527 10.726 C 25.46 10.74 25.394 10.756 25.328 10.773 C 25.34 10.05 25.324 9.278 25.258 8.524 C 25.029 5.872 24.099 4.48 23.129 3.371 C 22.724 2.908 22.021 2.232 20.964 1.628 C 19.491 0.781 17.821 0.356 16 0.356 C 14.185 0.356 12.518 0.781 11.044 1.623 C 9.983 2.229 9.278 2.905 8.875 3.366 C 7.905 4.475 6.975 5.867 6.746 8.52 C 6.68 9.273 6.663 10.045 6.675 10.768 C 6.61 10.752 6.544 10.735 6.476 10.721 C 6.221 10.665 5.965 10.637 5.713 10.637 C 4.494 10.637 3.487 11.297 3.084 12.359 C 2.794 13.126 2.841 13.94 3.218 14.654 C 3.485 15.159 3.911 15.613 4.522 16.039 C 4.686 16.153 4.937 16.314 5.256 16.52 C 5.427 16.633 5.68 16.794 5.926 16.958 C 5.963 16.984 6.097 17.082 6.141 17.173 C 6.193 17.279 6.195 17.393 6.118 17.604 C 5.987 17.891 5.801 18.242 5.535 18.631 C 4.747 19.782 3.62 20.757 2.18 21.536 C 1.419 21.941 0.54 22.355 0.29 23.118 C 0.039 23.88 0.203 24.582 0.842 25.239 C 1.053 25.466 1.318 25.665 1.653 25.85 C 2.438 26.283 3.105 26.496 3.63 26.641 C 3.721 26.669 3.937 26.736 4.031 26.819 C 4.265 27.022 4.23 27.331 4.543 27.78 C 4.731 28.061 4.949 28.25 5.129 28.374 C 5.783 28.826 6.516 28.854 7.294 28.881 C 7.997 28.908 8.793 28.94 9.702 29.24 C 10.079 29.364 10.47 29.605 10.922 29.883 C 12.011 30.552 13.501 31.467 15.998 31.467 C 18.493 31.467 19.995 30.547 21.091 29.876 C 21.541 29.6 21.93 29.361 22.297 29.242 C 23.206 28.942 24.003 28.912 24.706 28.884 C 25.483 28.854 26.216 28.826 26.87 28.377 C 27.076 28.234 27.331 28.004 27.535 27.651 C 27.76 27.272 27.753 27.003 27.964 26.821 C 28.05 26.746 28.238 26.68 28.338 26.65 C 28.868 26.505 29.545 26.292 30.344 25.852 C 30.697 25.658 30.976 25.443 31.192 25.2 C 31.194 25.197 31.196 25.192 31.199 25.19 C 31.805 24.544 31.955 23.787 31.709 23.12"
33
+ fill="#000000"
34
+ stroke="#00000000"
35
+ stroke-width="1"
36
+ />
37
+ </g>
38
+ </svg>
39
+ <p>${localizedString("legalPromptMessage")({ privacyPolicyUrl, termsOfServiceUrl, learnMoreUrl })}</p>
40
+ <button id="accept">${localizedString("legalPromptAccept")}</button>
41
+ `;
42
+ /* eslint-enable */
43
+ const style = document.createElement("style");
44
+ style.innerHTML = `
45
+ div#content {
46
+ display: flex;
47
+ flex-direction: column;
48
+
49
+ position: fixed;
50
+ top: 25%;
51
+ left: 50%;
52
+ transform: translate(-50%, -25%);
53
+
54
+ background-color: #fff;
55
+ border: #efefef 1px solid;
56
+ border-radius: 1.5rem;
57
+ box-shadow: rgba(0, 0, 0, 0.25) 0 1.5rem 2rem;
58
+
59
+ min-width: 16rem;
60
+ max-width: 20rem;
61
+ padding: 2rem;
62
+
63
+ text-align: center;
64
+ font-family: sans-serif;
65
+ }
66
+
67
+ div > svg {
68
+ height: 3rem;
69
+ }
70
+
71
+ div > p {
72
+ margin: 1rem 0;
73
+ }
74
+
75
+ div > p > a {
76
+ color: rgb(78, 171, 248);
77
+ }
78
+
79
+ div > button {
80
+ cursor: pointer;
81
+ }
82
+
83
+ div > button#reject {
84
+ align-self: flex-end;
85
+
86
+ position: absolute;
87
+
88
+ background-color: transparent;
89
+ border: 0;
90
+
91
+ width: 3rem;
92
+ margin: -1.5rem;
93
+ }
94
+
95
+ div > button#accept {
96
+ align-self: center;
97
+
98
+ background-color: rgb(78, 171, 248);
99
+ border: 0;
100
+ border-radius: 1.5rem;
101
+
102
+ width: 80%;
103
+ padding: 1rem;
104
+ margin-top: 1rem;
105
+
106
+ color: #fff;
107
+ font-size: 1.5rem;
108
+ font-weight: 700;
109
+ font-family: inherit;
110
+ }
111
+
112
+ div#overlay {
113
+ position: fixed;
114
+ top: 0;
115
+ right: 0;
116
+ bottom: 0;
117
+ left: 0;
118
+
119
+ background-color: rgba(0, 0, 0, 0.4);
120
+ }
121
+ `;
122
+ const overlay = document.createElement("div");
123
+ overlay.id = "overlay";
124
+ shadow.appendChild(overlay);
125
+ shadow.appendChild(style);
126
+ shadow.appendChild(prompt);
127
+ const acceptBtn = prompt.querySelector("#accept");
128
+ const rejectBtn = prompt.querySelector("#reject");
129
+ const result = fromEvent(acceptBtn, "click").pipe(map(() => true), mergeWith(fromEvent(rejectBtn, "click").pipe(map(() => false))), take(1));
130
+ result.subscribe({ complete: element.remove.bind(element) });
131
+ return { element, result, focus: () => rejectBtn.focus() };
132
+ }
133
+ /**
134
+ * @internal
135
+ */
136
+ export const legalPromptFactory = Injectable("legalPrompt", () => {
137
+ return function legalPrompt(privacyPolicy, termsOfService, learnMore, container = document.body) {
138
+ const prompt = createCameraKitLegalPrompt(privacyPolicy.webUrl, termsOfService.webUrl, learnMore.webUrl);
139
+ container.appendChild(prompt.element);
140
+ prompt.focus();
141
+ return prompt.result;
142
+ };
143
+ });
144
+ //# sourceMappingURL=legalPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legalPrompt.js","sourceRoot":"","sources":["../../src/legal/legalPrompt.ts"],"names":[],"mappings":"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","sourcesContent":["import { fromEvent, map, mergeWith, Observable, take } from \"rxjs\";\nimport { Injectable } from \"../dependency-injection/Injectable\";\nimport { LegalDocument, LegalDocument_Type } from \"../generated-proto/pb_schema/camera_kit/v3/legal_prompt\";\nimport { localizedString } from \"../common/localization\";\n\nfunction createCameraKitLegalPrompt(\n privacyPolicyUrl: string,\n termsOfServiceUrl: string,\n learnMoreUrl: string\n): { element: HTMLDivElement; result: Observable<boolean>; focus: () => void } {\n const element = document.createElement(\"div\");\n element.id = \"tos-popup\";\n const shadow = element.attachShadow({ mode: \"open\" });\n const prompt = document.createElement(\"div\");\n prompt.id = \"content\";\n\n /* eslint-disable max-len */\n prompt.innerHTML = `\n <button id=\"reject\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <title>${localizedString(\"legalPromptReject\")}</title>\n <path\n d=\"M 14.356 12.5 L 17.803 15.947 C 18.316 16.46 18.316 17.291 17.803 17.803 C 17.291 18.316 16.46 18.316 15.947 17.803 L 12.5 14.356 L 9.053 17.803 C 8.54 18.316 7.709 18.316 7.197 17.803 C 6.684 17.291 6.684 16.46 7.197 15.947 L 10.644 12.5 L 7.197 9.053 C 6.684 8.54 6.684 7.709 7.197 7.197 C 7.709 6.684 8.54 6.684 9.053 7.197 L 12.5 10.644 L 15.947 7.197 C 16.46 6.684 17.291 6.684 17.803 7.197 C 18.316 7.709 18.316 8.54 17.803 9.053 Z\"\n fill=\"#a0a0a0\"\n />\n </svg>\n </button>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n <g>\n <path\n d=\"M 30.898 23.477 C 30.77 23.045 30.148 22.743 30.148 22.743 C 30.092 22.71 30.039 22.684 29.994 22.663 C 28.962 22.161 28.048 21.561 27.277 20.876 C 26.659 20.325 26.128 19.719 25.701 19.074 C 25.182 18.288 24.937 17.632 24.831 17.275 C 24.773 17.043 24.782 16.951 24.831 16.832 C 24.873 16.731 24.99 16.632 25.049 16.588 C 25.397 16.341 25.96 15.976 26.303 15.75 C 26.602 15.556 26.859 15.389 27.009 15.283 C 27.494 14.944 27.824 14.596 28.02 14.223 C 28.275 13.74 28.303 13.208 28.107 12.684 C 27.84 11.978 27.184 11.556 26.35 11.556 C 26.163 11.556 25.974 11.577 25.785 11.62 C 25.308 11.723 24.852 11.894 24.474 12.042 C 24.446 12.054 24.416 12.032 24.418 12.002 C 24.457 11.059 24.502 9.79 24.399 8.584 C 24.306 7.493 24.082 6.576 23.717 5.776 C 23.351 4.972 22.874 4.376 22.5 3.947 C 22.143 3.536 21.519 2.936 20.577 2.394 C 19.251 1.631 17.742 1.244 16.09 1.244 C 14.443 1.244 12.934 1.631 11.605 2.394 C 10.607 2.966 9.97 3.614 9.678 3.947 C 9.304 4.376 8.827 4.972 8.46 5.776 C 8.096 6.576 7.872 7.496 7.778 8.584 C 7.673 9.792 7.715 10.96 7.76 11.999 C 7.762 12.03 7.732 12.051 7.704 12.039 C 7.325 11.892 6.87 11.72 6.393 11.617 C 6.204 11.575 6.012 11.554 5.828 11.554 C 4.994 11.554 4.337 11.976 4.071 12.682 C 3.875 13.205 3.903 13.738 4.157 14.221 C 4.354 14.594 4.685 14.941 5.169 15.281 C 5.318 15.387 5.575 15.553 5.874 15.748 C 6.211 15.968 6.758 16.323 7.108 16.569 C 7.152 16.599 7.299 16.712 7.346 16.827 C 7.397 16.951 7.404 17.045 7.341 17.289 C 7.234 17.648 6.989 18.298 6.479 19.069 C 6.052 19.715 5.522 20.32 4.902 20.871 C 4.132 21.556 3.218 22.157 2.186 22.658 C 2.137 22.682 2.078 22.712 2.015 22.748 C 2.015 22.748 1.399 23.064 1.282 23.472 C 1.109 24.075 1.567 24.64 2.036 24.943 C 2.8 25.438 3.732 25.703 4.272 25.849 C 4.421 25.889 4.559 25.926 4.683 25.964 C 4.76 25.989 4.956 26.062 5.038 26.17 C 5.143 26.306 5.155 26.473 5.192 26.66 C 5.253 26.977 5.384 27.373 5.774 27.643 C 6.204 27.941 6.75 27.962 7.444 27.99 C 8.168 28.018 9.07 28.054 10.1 28.394 C 10.579 28.553 11.011 28.818 11.514 29.128 C 12.56 29.773 13.864 30.578 16.09 30.578 C 18.318 30.578 19.629 29.768 20.685 29.119 C 21.183 28.811 21.612 28.546 22.08 28.391 C 23.11 28.049 24.011 28.014 24.735 27.988 C 25.427 27.962 25.974 27.941 26.404 27.641 C 26.822 27.35 26.943 26.918 26.997 26.59 C 27.027 26.428 27.046 26.285 27.14 26.165 C 27.219 26.064 27.399 25.992 27.483 25.964 C 27.609 25.924 27.751 25.886 27.906 25.844 C 28.445 25.698 29.123 25.527 29.945 25.061 C 30.933 24.511 31.001 23.82 30.898 23.477\"\n fill=\"#ffffff\"\n stroke=\"#00000000\"\n stroke-width=\"1\"\n />\n </g>\n <g>\n <path\n d=\"M 29.56 24.299 C 28.21 25.045 27.312 24.965 26.613 25.414 C 26.021 25.795 26.37 26.618 25.939 26.915 C 25.411 27.279 23.843 26.889 21.822 27.555 C 20.155 28.107 19.09 29.689 16.089 29.689 C 13.081 29.689 12.047 28.114 10.357 27.555 C 8.335 26.889 6.768 27.279 6.24 26.915 C 5.809 26.618 6.16 25.795 5.566 25.414 C 4.869 24.965 3.969 25.045 2.619 24.299 C 1.758 23.825 2.247 23.53 2.532 23.393 C 7.426 21.027 8.204 17.372 8.24 17.096 C 8.282 16.769 8.328 16.509 7.966 16.175 C 7.615 15.853 6.066 14.895 5.636 14.593 C 4.925 14.098 4.612 13.6 4.841 12.99 C 5 12.569 5.395 12.41 5.812 12.41 C 5.94 12.41 6.071 12.426 6.2 12.452 C 6.981 12.623 7.741 13.013 8.179 13.118 C 8.24 13.132 8.293 13.139 8.34 13.139 C 8.574 13.139 8.656 13.022 8.639 12.754 C 8.59 11.9 8.469 10.234 8.602 8.677 C 8.787 6.536 9.477 5.476 10.298 4.538 C 10.693 4.087 12.543 2.133 16.082 2.133 C 19.633 2.133 21.474 4.087 21.867 4.538 C 22.688 5.478 23.378 6.536 23.563 8.677 C 23.698 10.234 23.581 11.898 23.525 12.754 C 23.506 13.034 23.591 13.139 23.825 13.139 C 23.872 13.139 23.925 13.132 23.986 13.118 C 24.426 13.013 25.184 12.62 25.965 12.452 C 26.091 12.424 26.222 12.41 26.353 12.41 C 26.77 12.41 27.165 12.569 27.324 12.99 C 27.555 13.6 27.242 14.095 26.529 14.593 C 26.098 14.892 24.547 15.85 24.199 16.175 C 23.836 16.509 23.883 16.767 23.925 17.096 C 23.96 17.372 24.739 21.025 29.633 23.393 C 29.932 23.53 30.421 23.825 29.56 24.299 M 31.709 23.12 C 31.489 22.523 31.07 22.203 30.594 21.939 C 30.505 21.887 30.423 21.845 30.355 21.812 C 30.212 21.74 30.067 21.667 29.922 21.592 C 28.435 20.806 27.275 19.812 26.469 18.635 C 26.198 18.238 26.008 17.88 25.877 17.587 C 25.809 17.391 25.811 17.281 25.86 17.178 C 25.898 17.101 25.996 17.019 26.05 16.979 C 26.305 16.811 26.57 16.64 26.748 16.525 C 27.067 16.319 27.317 16.156 27.481 16.043 C 28.093 15.617 28.519 15.164 28.786 14.658 C 29.163 13.945 29.21 13.131 28.919 12.363 C 28.517 11.301 27.509 10.642 26.291 10.642 C 26.038 10.642 25.783 10.67 25.527 10.726 C 25.46 10.74 25.394 10.756 25.328 10.773 C 25.34 10.05 25.324 9.278 25.258 8.524 C 25.029 5.872 24.099 4.48 23.129 3.371 C 22.724 2.908 22.021 2.232 20.964 1.628 C 19.491 0.781 17.821 0.356 16 0.356 C 14.185 0.356 12.518 0.781 11.044 1.623 C 9.983 2.229 9.278 2.905 8.875 3.366 C 7.905 4.475 6.975 5.867 6.746 8.52 C 6.68 9.273 6.663 10.045 6.675 10.768 C 6.61 10.752 6.544 10.735 6.476 10.721 C 6.221 10.665 5.965 10.637 5.713 10.637 C 4.494 10.637 3.487 11.297 3.084 12.359 C 2.794 13.126 2.841 13.94 3.218 14.654 C 3.485 15.159 3.911 15.613 4.522 16.039 C 4.686 16.153 4.937 16.314 5.256 16.52 C 5.427 16.633 5.68 16.794 5.926 16.958 C 5.963 16.984 6.097 17.082 6.141 17.173 C 6.193 17.279 6.195 17.393 6.118 17.604 C 5.987 17.891 5.801 18.242 5.535 18.631 C 4.747 19.782 3.62 20.757 2.18 21.536 C 1.419 21.941 0.54 22.355 0.29 23.118 C 0.039 23.88 0.203 24.582 0.842 25.239 C 1.053 25.466 1.318 25.665 1.653 25.85 C 2.438 26.283 3.105 26.496 3.63 26.641 C 3.721 26.669 3.937 26.736 4.031 26.819 C 4.265 27.022 4.23 27.331 4.543 27.78 C 4.731 28.061 4.949 28.25 5.129 28.374 C 5.783 28.826 6.516 28.854 7.294 28.881 C 7.997 28.908 8.793 28.94 9.702 29.24 C 10.079 29.364 10.47 29.605 10.922 29.883 C 12.011 30.552 13.501 31.467 15.998 31.467 C 18.493 31.467 19.995 30.547 21.091 29.876 C 21.541 29.6 21.93 29.361 22.297 29.242 C 23.206 28.942 24.003 28.912 24.706 28.884 C 25.483 28.854 26.216 28.826 26.87 28.377 C 27.076 28.234 27.331 28.004 27.535 27.651 C 27.76 27.272 27.753 27.003 27.964 26.821 C 28.05 26.746 28.238 26.68 28.338 26.65 C 28.868 26.505 29.545 26.292 30.344 25.852 C 30.697 25.658 30.976 25.443 31.192 25.2 C 31.194 25.197 31.196 25.192 31.199 25.19 C 31.805 24.544 31.955 23.787 31.709 23.12\"\n fill=\"#000000\"\n stroke=\"#00000000\"\n stroke-width=\"1\"\n />\n </g>\n </svg>\n <p>${localizedString(\"legalPromptMessage\")({ privacyPolicyUrl, termsOfServiceUrl, learnMoreUrl })}</p>\n <button id=\"accept\">${localizedString(\"legalPromptAccept\")}</button>\n `;\n /* eslint-enable */\n\n const style = document.createElement(\"style\");\n style.innerHTML = `\n div#content {\n display: flex;\n flex-direction: column;\n\n position: fixed;\n top: 25%;\n left: 50%;\n transform: translate(-50%, -25%);\n\n background-color: #fff;\n border: #efefef 1px solid;\n border-radius: 1.5rem;\n box-shadow: rgba(0, 0, 0, 0.25) 0 1.5rem 2rem;\n\n min-width: 16rem;\n max-width: 20rem;\n padding: 2rem;\n\n text-align: center;\n font-family: sans-serif;\n }\n\n div > svg {\n height: 3rem;\n }\n\n div > p {\n margin: 1rem 0;\n }\n\n div > p > a {\n color: rgb(78, 171, 248);\n }\n\n div > button {\n cursor: pointer;\n }\n\n div > button#reject {\n align-self: flex-end;\n\n position: absolute;\n\n background-color: transparent;\n border: 0;\n\n width: 3rem;\n margin: -1.5rem;\n }\n\n div > button#accept {\n align-self: center;\n\n background-color: rgb(78, 171, 248);\n border: 0;\n border-radius: 1.5rem;\n\n width: 80%;\n padding: 1rem;\n margin-top: 1rem;\n\n color: #fff;\n font-size: 1.5rem;\n font-weight: 700;\n font-family: inherit;\n }\n\n div#overlay {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n background-color: rgba(0, 0, 0, 0.4);\n }\n `;\n\n const overlay = document.createElement(\"div\");\n overlay.id = \"overlay\";\n shadow.appendChild(overlay);\n\n shadow.appendChild(style);\n shadow.appendChild(prompt);\n\n const acceptBtn: HTMLButtonElement = prompt.querySelector(\"#accept\")!;\n const rejectBtn: HTMLButtonElement = prompt.querySelector(\"#reject\")!;\n const result = fromEvent(acceptBtn, \"click\").pipe(\n map(() => true),\n mergeWith(fromEvent(rejectBtn, \"click\").pipe(map(() => false))),\n take(1)\n );\n result.subscribe({ complete: element.remove.bind(element) });\n return { element, result, focus: () => rejectBtn.focus() };\n}\n\nexport type LegalPrompt = (\n privacyPolicy: LegalDocument & { type: LegalDocument_Type.PRIVACY_POLICY },\n termsOfService: LegalDocument & { type: LegalDocument_Type.TERMS_OF_SERVICE },\n learnMore: LegalDocument & { type: LegalDocument_Type.LEARN_MORE },\n container?: HTMLElement\n) => Observable<boolean>;\n\n/**\n * @internal\n */\nexport const legalPromptFactory = Injectable(\n \"legalPrompt\",\n (): LegalPrompt => {\n return function legalPrompt(\n privacyPolicy: LegalDocument & { type: LegalDocument_Type.PRIVACY_POLICY },\n termsOfService: LegalDocument & { type: LegalDocument_Type.TERMS_OF_SERVICE },\n learnMore: LegalDocument & { type: LegalDocument_Type.LEARN_MORE },\n container = document.body\n ): Observable<boolean> {\n const prompt = createCameraKitLegalPrompt(privacyPolicy.webUrl, termsOfService.webUrl, learnMore.webUrl);\n container.appendChild(prompt.element);\n prompt.focus();\n return prompt.result;\n };\n }\n);\n"]}
@@ -0,0 +1,50 @@
1
+ import { StateMachine } from "@snap/state-management";
2
+ import { RemoteConfiguration } from "../remote-configuration/remoteConfiguration";
3
+ import { LegalPrompt } from "./legalPrompt";
4
+ declare const createLegalState: () => 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>>;
5
+ export declare type LegalState = ReturnType<typeof createLegalState>;
6
+ /**
7
+ * We maintain the state of the user's acceptance of Snap's various legal documents. Other components may require that
8
+ * the legal state be "accepted" before proceeding (e.g. to apply a lens).
9
+ *
10
+ * On page load, the legal state starts as "unknown." If a request is made to determine the legal state, the following
11
+ * business logic is implemented:
12
+ *
13
+ * 1. Download remote COF config value containing the legal documents + a `disabled` field to optionally skip the legal
14
+ * requirement.
15
+ * 2. Check for a `lastAcceptedTosContentHash` stored in IndexedDB.
16
+ * 3. Prompt the user to accept/reject the legal documents.
17
+ *
18
+ * ┌────────────────────────────────────────────────────────┐
19
+ * │ COF config value includes "disabled: true" │
20
+ * └────────────────────────────────────────────────────────┘
21
+ * │
22
+ * │
23
+ * ┌────────No────────────┴────────────Yes──────────────────┐
24
+ * │ │
25
+ * ▼ │
26
+ * ┌────────────────────────────────────┐ ▼
27
+ * │"lastAcceptedTosContentHash" exists │ ┌────────────┐
28
+ * └────────────────────────────────────┘ │ Skip ToS │
29
+ * │ └────────────┘
30
+ * │ ▲
31
+ * ┌─────────────No───┴───────Yes────────────┐ │
32
+ * │ │ │
33
+ * │ │ │
34
+ * ▼ ▼ │
35
+ * ┌────────────┐ ┌────────────────────────────────────────┐ │
36
+ * │ Show ToS │ │ Hash of ToS content from COF matches │ │
37
+ * └────────────┘ │ "lastAcceptedTosContentHash" │ │
38
+ * ▲ └────────────────────────────────────────┘ │
39
+ * │ │ │
40
+ * │ │ │
41
+ * └──────────────────No─────────────────────┴───────────────────Yes───────────┘
42
+ *
43
+ * @internal
44
+ */
45
+ export declare const legalStateFactory: {
46
+ (args_0: RemoteConfiguration, args_1: LegalPrompt): 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>>;
47
+ token: "legalState";
48
+ dependencies: readonly ["remoteConfiguration", "legalPrompt"];
49
+ };
50
+ export {};