@shopify/react-native-skia 2.2.21 → 2.3.4
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/android/CMakeLists.txt +0 -3
 - package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +4 -1
 - package/apple/RNSkApplePlatformContext.mm +21 -12
 - package/cpp/api/JsiSkCanvas.h +3 -21
 - package/cpp/api/JsiSkImage.h +8 -2
 - package/cpp/api/JsiSkPath.h +1 -1
 - package/cpp/api/JsiSkPathFactory.h +1 -1
 - package/cpp/api/JsiSkSVG.h +4 -1
 - package/cpp/api/JsiSkSVGFactory.h +127 -8
 - package/cpp/skia/include/android/AHardwareBufferUtils.h +3 -0
 - package/cpp/skia/include/android/GrAHardwareBufferUtils.h +0 -4
 - package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +0 -4
 - package/cpp/skia/include/android/SkImageAndroid.h +1 -0
 - package/cpp/skia/include/codec/SkCodec.h +23 -2
 - package/cpp/skia/include/codec/SkPngRustDecoder.h +30 -0
 - package/cpp/skia/include/core/SkBitmap.h +1 -1
 - package/cpp/skia/include/core/SkCPURecorder.h +5 -0
 - package/cpp/skia/include/core/SkCanvas.h +2 -0
 - package/cpp/skia/include/core/SkColorSpace.h +11 -12
 - package/cpp/skia/include/core/SkContourMeasure.h +6 -2
 - package/cpp/skia/include/core/SkExecutor.h +18 -0
 - package/cpp/skia/include/core/SkFont.h +26 -19
 - package/cpp/skia/include/core/SkImage.h +4 -66
 - package/cpp/skia/include/core/SkImageGenerator.h +0 -5
 - package/cpp/skia/include/core/SkMatrix.h +84 -120
 - package/cpp/skia/include/core/SkMilestone.h +1 -1
 - package/cpp/skia/include/core/SkPath.h +390 -395
 - package/cpp/skia/include/core/SkPathBuilder.h +64 -34
 - package/cpp/skia/include/core/SkPathEffect.h +12 -5
 - package/cpp/skia/include/core/SkPathIter.h +90 -0
 - package/cpp/skia/include/core/SkPathMeasure.h +5 -1
 - package/cpp/skia/include/core/SkPathTypes.h +7 -3
 - package/cpp/skia/include/core/SkPathUtils.h +20 -13
 - package/cpp/skia/include/core/SkRRect.h +7 -11
 - package/cpp/skia/include/core/SkRecorder.h +12 -0
 - package/cpp/skia/include/core/SkRect.h +33 -8
 - package/cpp/skia/include/core/SkRegion.h +14 -3
 - package/cpp/skia/include/core/SkScalar.h +0 -12
 - package/cpp/skia/include/core/SkShader.h +20 -7
 - package/cpp/skia/include/core/SkStrokeRec.h +2 -1
 - package/cpp/skia/include/core/SkTypeface.h +8 -10
 - package/cpp/skia/include/core/SkTypes.h +4 -0
 - package/cpp/skia/include/encode/SkJpegEncoder.h +5 -10
 - package/cpp/skia/include/encode/SkPngEncoder.h +8 -7
 - package/cpp/skia/include/encode/SkPngRustEncoder.h +88 -0
 - package/cpp/skia/include/encode/SkWebpEncoder.h +5 -10
 - package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +5 -2
 - package/cpp/skia/include/gpu/graphite/BackendTexture.h +5 -2
 - package/cpp/skia/include/gpu/graphite/Context.h +15 -2
 - package/cpp/skia/include/gpu/graphite/ContextOptions.h +26 -0
 - package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +75 -0
 - package/cpp/skia/include/gpu/graphite/Recorder.h +15 -6
 - package/cpp/skia/include/gpu/graphite/Recording.h +0 -3
 - package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +2 -0
 - package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +3 -7
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +2 -10
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +1 -6
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +1 -5
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +16 -3
 - package/cpp/skia/include/gpu/vk/VulkanPreferredFeatures.h +3 -0
 - package/cpp/skia/{modules/pathops/include → include/pathops}/SkPathOps.h +49 -20
 - package/cpp/skia/include/ports/SkFontMgr_FontConfigInterface.h +2 -1
 - package/cpp/skia/include/ports/SkFontMgr_android.h +0 -4
 - package/cpp/skia/include/ports/SkFontMgr_android_ndk.h +4 -2
 - package/cpp/skia/include/ports/SkFontMgr_fontconfig.h +0 -3
 - package/cpp/skia/include/private/SkEncodedInfo.h +73 -54
 - package/cpp/skia/include/private/SkHdrMetadata.h +173 -0
 - package/cpp/skia/include/private/SkPathRef.h +117 -146
 - package/cpp/skia/include/private/base/SkTemplates.h +74 -32
 - package/cpp/skia/include/utils/SkParsePath.h +9 -1
 - package/cpp/skia/modules/skcms/src/Transform_inl.h +53 -7
 - package/cpp/skia/modules/skcms/src/skcms_Transform.h +2 -0
 - package/cpp/skia/modules/skcms/src/skcms_internals.h +8 -0
 - package/cpp/skia/modules/skottie/include/TextShaper.h +4 -0
 - package/cpp/skia/modules/skparagraph/include/FontCollection.h +1 -1
 - package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +7 -1
 - package/cpp/skia/modules/skparagraph/include/TextStyle.h +12 -0
 - package/cpp/skia/modules/sksg/include/SkSGGeometryEffect.h +26 -0
 - package/cpp/skia/modules/sksg/include/SkSGPath.h +1 -1
 - package/cpp/skia/modules/skunicode/include/SkUnicode.h +11 -1
 - package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +7 -11
 - package/cpp/skia/modules/svg/include/SkSVGCircle.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGEllipse.h +1 -2
 - package/cpp/skia/modules/svg/include/SkSVGFe.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGLine.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGNode.h +11 -10
 - package/cpp/skia/modules/svg/include/SkSVGPath.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGPattern.h +4 -3
 - package/cpp/skia/modules/svg/include/SkSVGPoly.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGRect.h +1 -2
 - package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +5 -5
 - package/cpp/skia/modules/svg/include/SkSVGSVG.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGShape.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +2 -2
 - package/cpp/skia/src/base/SkTLazy.h +8 -0
 - package/cpp/skia/src/core/SkLRUCache.h +17 -13
 - package/lib/commonjs/skia/types/SVG/SVGFactory.d.ts +3 -2
 - package/lib/commonjs/skia/types/SVG/SVGFactory.js.map +1 -1
 - package/lib/module/skia/types/SVG/SVGFactory.d.ts +3 -2
 - package/lib/module/skia/types/SVG/SVGFactory.js.map +1 -1
 - package/lib/typescript/src/skia/types/SVG/SVGFactory.d.ts +3 -2
 - package/package.json +9 -8
 - package/react-native-skia.podspec +1 -2
 - package/scripts/install-skia.mjs +360 -0
 - package/src/skia/types/SVG/SVGFactory.ts +11 -2
 - package/cpp/skia/include/android/SkHeifDecoder.h +0 -50
 - package/lib/commonjs/__tests__/globalSetup.d.ts +0 -9
 - package/lib/commonjs/__tests__/globalTeardown.d.ts +0 -2
 - package/lib/commonjs/__tests__/setup.d.ts +0 -36
 - package/lib/commonjs/mock/__tests__/mock.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Data.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/FitBox.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Glyphs.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Image.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Paths.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Picture.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Surfaces.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Text.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/Group.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/paint/Overview.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/shapes/Box.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Atlas.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Blending.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Blur.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Box.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Camera.spec.d.ts +0 -21
 - package/lib/commonjs/renderer/__tests__/e2e/ColorFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/CoonPatch.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/DataEncoding.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Drawings.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/FontMgr.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Gradient.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Group.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Image.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ImageFilter.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ImageFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Mask.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Matrix4.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Offscreen.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Opacity.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Paint.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Paragraphs.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/PathEffects.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Paths.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Picture.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Point.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Rect.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/SDF.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/SVG.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Shader.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Skottie.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Snapshot.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Surfaces.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Text.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/TextPath.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Transforms.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Vertices.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Video.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/setup/Paragraph.d.ts +0 -20
 - package/lib/commonjs/renderer/__tests__/e2e/setup/SVG.d.ts +0 -13
 - package/lib/commonjs/renderer/__tests__/e2e/setup/SkiaObject.d.ts +0 -11
 - package/lib/commonjs/renderer/__tests__/e2e/setup/index.d.ts +0 -3
 - package/lib/commonjs/renderer/__tests__/examples/BlendModes.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/setup.d.ts +0 -71
 - package/lib/commonjs/skia/__tests__/ColorFilter.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Data.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Enums.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Geometry.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/ImageFilter.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Mock.spec.d.ts +0 -0
 - package/lib/commonjs/skia/__tests__/Paint.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Path.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/RuntimeEffect.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Shader.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Text.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Vertices.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/setup.d.ts +0 -16
 - package/lib/commonjs/sksg/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/module/__tests__/globalSetup.d.ts +0 -9
 - package/lib/module/__tests__/globalTeardown.d.ts +0 -2
 - package/lib/module/__tests__/setup.d.ts +0 -36
 - package/lib/module/mock/__tests__/mock.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Data.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/FitBox.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Glyphs.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Image.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Paths.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Picture.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Surfaces.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Text.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/Group.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/paint/Overview.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/shapes/Box.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Atlas.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Blending.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Blur.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Box.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Camera.spec.d.ts +0 -21
 - package/lib/module/renderer/__tests__/e2e/ColorFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/CoonPatch.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/DataEncoding.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Drawings.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/FontMgr.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Gradient.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Group.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Image.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ImageFilter.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ImageFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Mask.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Matrix4.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Offscreen.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Opacity.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Paint.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Paragraphs.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/PathEffects.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Paths.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Picture.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Point.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Rect.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/SDF.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/SVG.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Shader.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Skottie.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Snapshot.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Surfaces.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Text.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/TextPath.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Transforms.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Vertices.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Video.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/setup/Paragraph.d.ts +0 -20
 - package/lib/module/renderer/__tests__/e2e/setup/SVG.d.ts +0 -13
 - package/lib/module/renderer/__tests__/e2e/setup/SkiaObject.d.ts +0 -11
 - package/lib/module/renderer/__tests__/e2e/setup/index.d.ts +0 -3
 - package/lib/module/renderer/__tests__/examples/BlendModes.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/setup.d.ts +0 -71
 - package/lib/module/skia/__tests__/ColorFilter.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Data.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Enums.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Geometry.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/ImageFilter.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Mock.spec.d.ts +0 -0
 - package/lib/module/skia/__tests__/Paint.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Path.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/RuntimeEffect.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Shader.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Text.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Vertices.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/setup.d.ts +0 -16
 - package/lib/module/sksg/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/typescript/src/__tests__/globalSetup.d.ts +0 -9
 - package/lib/typescript/src/__tests__/globalTeardown.d.ts +0 -2
 - package/lib/typescript/src/__tests__/setup.d.ts +0 -36
 - package/lib/typescript/src/mock/__tests__/mock.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Data.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/FitBox.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Glyphs.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Image.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Paths.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Picture.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Surfaces.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Text.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/Group.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/paint/Overview.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/shapes/Box.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Atlas.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Blending.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Blur.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Box.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Camera.spec.d.ts +0 -21
 - package/lib/typescript/src/renderer/__tests__/e2e/ColorFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/CoonPatch.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/DataEncoding.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Drawings.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/FontMgr.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Gradient.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Group.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Image.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ImageFilter.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ImageFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Mask.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Matrix4.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Offscreen.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Opacity.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Paint.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Paragraphs.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/PathEffects.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Paths.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Picture.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Point.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Rect.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/SDF.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/SVG.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Shader.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Skottie.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Snapshot.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Surfaces.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Text.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/TextPath.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Transforms.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Vertices.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Video.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/Paragraph.d.ts +0 -20
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/SVG.d.ts +0 -13
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/SkiaObject.d.ts +0 -11
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/index.d.ts +0 -3
 - package/lib/typescript/src/renderer/__tests__/examples/BlendModes.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/setup.d.ts +0 -71
 - package/lib/typescript/src/skia/__tests__/ColorFilter.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Data.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Enums.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Geometry.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/ImageFilter.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Mock.spec.d.ts +0 -0
 - package/lib/typescript/src/skia/__tests__/Paint.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Path.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/RuntimeEffect.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Shader.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Text.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Vertices.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/setup.d.ts +0 -16
 - package/lib/typescript/src/sksg/__tests__/Simple.spec.d.ts +0 -1
 - package/libs/android/arm64-v8a/libjsonreader.a +0 -0
 - package/libs/android/arm64-v8a/libpathops.a +0 -0
 - package/libs/android/arm64-v8a/libskia.a +0 -0
 - package/libs/android/arm64-v8a/libskottie.a +0 -0
 - package/libs/android/arm64-v8a/libskparagraph.a +0 -0
 - package/libs/android/arm64-v8a/libsksg.a +0 -0
 - package/libs/android/arm64-v8a/libskshaper.a +0 -0
 - package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
 - package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
 - package/libs/android/arm64-v8a/libsvg.a +0 -0
 - package/libs/android/armeabi-v7a/libjsonreader.a +0 -0
 - package/libs/android/armeabi-v7a/libpathops.a +0 -0
 - package/libs/android/armeabi-v7a/libskia.a +0 -0
 - package/libs/android/armeabi-v7a/libskottie.a +0 -0
 - package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
 - package/libs/android/armeabi-v7a/libsksg.a +0 -0
 - package/libs/android/armeabi-v7a/libskshaper.a +0 -0
 - package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
 - package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
 - package/libs/android/armeabi-v7a/libsvg.a +0 -0
 - package/libs/android/x86/libjsonreader.a +0 -0
 - package/libs/android/x86/libpathops.a +0 -0
 - package/libs/android/x86/libskia.a +0 -0
 - package/libs/android/x86/libskottie.a +0 -0
 - package/libs/android/x86/libskparagraph.a +0 -0
 - package/libs/android/x86/libsksg.a +0 -0
 - package/libs/android/x86/libskshaper.a +0 -0
 - package/libs/android/x86/libskunicode_core.a +0 -0
 - package/libs/android/x86/libskunicode_icu.a +0 -0
 - package/libs/android/x86/libsvg.a +0 -0
 - package/libs/android/x86_64/libjsonreader.a +0 -0
 - package/libs/android/x86_64/libpathops.a +0 -0
 - package/libs/android/x86_64/libskia.a +0 -0
 - package/libs/android/x86_64/libskottie.a +0 -0
 - package/libs/android/x86_64/libskparagraph.a +0 -0
 - package/libs/android/x86_64/libsksg.a +0 -0
 - package/libs/android/x86_64/libskshaper.a +0 -0
 - package/libs/android/x86_64/libskunicode_core.a +0 -0
 - package/libs/android/x86_64/libskunicode_icu.a +0 -0
 - package/libs/android/x86_64/libsvg.a +0 -0
 - package/libs/apple/libpathops.xcframework/Info.plist +0 -94
 - package/libs/apple/libpathops.xcframework/ios-arm64_arm64e/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/ios-arm64_arm64e_x86_64-simulator/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/macos-arm64_x86_64/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/tvos-arm64_arm64e/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/tvos-arm64_arm64e_x86_64-simulator/libpathops.a +0 -0
 - package/libs/apple/libskia.xcframework/Info.plist +0 -94
 - package/libs/apple/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/tvos-arm64_arm64e/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
 - package/libs/apple/libskottie.xcframework/Info.plist +0 -94
 - package/libs/apple/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/Info.plist +0 -94
 - package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
 - package/libs/apple/libsksg.xcframework/Info.plist +0 -94
 - package/libs/apple/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
 - package/libs/apple/libskshaper.xcframework/Info.plist +0 -94
 - package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/Info.plist +0 -94
 - package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/Info.plist +0 -94
 - package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libsvg.xcframework/Info.plist +0 -94
 - package/libs/apple/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
 - package/src/__tests__/globalSetup.ts +0 -53
 - package/src/__tests__/globalTeardown.ts +0 -11
 - package/src/__tests__/setup.ts +0 -192
 - package/src/__tests__/snapshots/animated-images/bird.png +0 -0
 - package/src/__tests__/snapshots/animations/green.png +0 -0
 - package/src/__tests__/snapshots/animations/lightblue.png +0 -0
 - package/src/__tests__/snapshots/animations/quarter-lightblue.png +0 -0
 - package/src/__tests__/snapshots/animations/red.png +0 -0
 - package/src/__tests__/snapshots/atlas/identity.png +0 -0
 - package/src/__tests__/snapshots/atlas/rsxform.png +0 -0
 - package/src/__tests__/snapshots/atlas/rsxform1.png +0 -0
 - package/src/__tests__/snapshots/atlas/simple.png +0 -0
 - package/src/__tests__/snapshots/atlas/simple2.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow-opacity.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow2.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow3.png +0 -0
 - package/src/__tests__/snapshots/box/box-stroke.png +0 -0
 - package/src/__tests__/snapshots/color-filter/color-filter-composition.png +0 -0
 - package/src/__tests__/snapshots/color-filter/matrix1.png +0 -0
 - package/src/__tests__/snapshots/color-filter/matrix3.png +0 -0
 - package/src/__tests__/snapshots/color-filter/zurich-sepia.png +0 -0
 - package/src/__tests__/snapshots/coons-patch/patch-with-opacity.png +0 -0
 - package/src/__tests__/snapshots/coons-patch/simple.png +0 -0
 - package/src/__tests__/snapshots/cyan-buffer.png +0 -0
 - package/src/__tests__/snapshots/data/oslo.png +0 -0
 - package/src/__tests__/snapshots/data/red.png +0 -0
 - package/src/__tests__/snapshots/data/zurich.png +0 -0
 - package/src/__tests__/snapshots/demos/apple-breathe.png +0 -0
 - package/src/__tests__/snapshots/demos/apple-breathe1.png +0 -0
 - package/src/__tests__/snapshots/demos/breathe.png +0 -0
 - package/src/__tests__/snapshots/demos/breathe2.png +0 -0
 - package/src/__tests__/snapshots/demos/product.png +0 -0
 - package/src/__tests__/snapshots/demos/product2.png +0 -0
 - package/src/__tests__/snapshots/demos/skia-neon.png +0 -0
 - package/src/__tests__/snapshots/demos/skia-neon1.png +0 -0
 - package/src/__tests__/snapshots/drawings/arc.png +0 -0
 - package/src/__tests__/snapshots/drawings/blend-mode-multiply.png +0 -0
 - package/src/__tests__/snapshots/drawings/blend-modes.png +0 -0
 - package/src/__tests__/snapshots/drawings/blur-node.png +0 -0
 - package/src/__tests__/snapshots/drawings/blur.png +0 -0
 - package/src/__tests__/snapshots/drawings/blur2.png +0 -0
 - package/src/__tests__/snapshots/drawings/custom-drawing.png +0 -0
 - package/src/__tests__/snapshots/drawings/cyan-circle.png +0 -0
 - package/src/__tests__/snapshots/drawings/cyan.png +0 -0
 - package/src/__tests__/snapshots/drawings/default-props.png +0 -0
 - package/src/__tests__/snapshots/drawings/hello-world.png +0 -0
 - package/src/__tests__/snapshots/drawings/image-default-props.png +0 -0
 - package/src/__tests__/snapshots/drawings/lightblue-quarter-circle.png +0 -0
 - package/src/__tests__/snapshots/drawings/lightblue-rect.png +0 -0
 - package/src/__tests__/snapshots/drawings/line.png +0 -0
 - package/src/__tests__/snapshots/drawings/multiple-paints.png +0 -0
 - package/src/__tests__/snapshots/drawings/nested-shader.png +0 -0
 - package/src/__tests__/snapshots/drawings/nested-shader2.png +0 -0
 - package/src/__tests__/snapshots/drawings/opacity-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/opacity-multiplication.png +0 -0
 - package/src/__tests__/snapshots/drawings/opacity-multiplication2.png +0 -0
 - package/src/__tests__/snapshots/drawings/points.png +0 -0
 - package/src/__tests__/snapshots/drawings/purple.png +0 -0
 - package/src/__tests__/snapshots/drawings/rotated-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/rotated-scaled-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/rrect-aa.png +0 -0
 - package/src/__tests__/snapshots/drawings/rrect-no-aa.png +0 -0
 - package/src/__tests__/snapshots/drawings/scaled-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/scaled-image2.png +0 -0
 - package/src/__tests__/snapshots/drawings/semi-transparent-layer.png +0 -0
 - package/src/__tests__/snapshots/drawings/shader-opacity-reference.png +0 -0
 - package/src/__tests__/snapshots/drawings/skew-transform.png +0 -0
 - package/src/__tests__/snapshots/drawings/skew-transform2.png +0 -0
 - package/src/__tests__/snapshots/drawings/small-lightblue-rect.png +0 -0
 - package/src/__tests__/snapshots/drawings/stroke.png +0 -0
 - package/src/__tests__/snapshots/drawings/transform-origin.png +0 -0
 - package/src/__tests__/snapshots/drawings/transparent-layer.png +0 -0
 - package/src/__tests__/snapshots/drawings/transparent.png +0 -0
 - package/src/__tests__/snapshots/drawings/violet.png +0 -0
 - package/src/__tests__/snapshots/font/green.png +0 -0
 - package/src/__tests__/snapshots/font/red.png +0 -0
 - package/src/__tests__/snapshots/glyphs/simple.png +0 -0
 - package/src/__tests__/snapshots/gradient/linear-with-opacity.png +0 -0
 - package/src/__tests__/snapshots/gradient/linear.png +0 -0
 - package/src/__tests__/snapshots/green.png +0 -0
 - package/src/__tests__/snapshots/image-filter/blur.png +0 -0
 - package/src/__tests__/snapshots/image-filter/test-shadow.png +0 -0
 - package/src/__tests__/snapshots/images/bundle-android.png +0 -0
 - package/src/__tests__/snapshots/images/bundle-ios.png +0 -0
 - package/src/__tests__/snapshots/images/bundle-node.png +0 -0
 - package/src/__tests__/snapshots/images/bundle.png +0 -0
 - package/src/__tests__/snapshots/images/filter.png +0 -0
 - package/src/__tests__/snapshots/leak.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-corner.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-offset.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-top-left-center.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-zoom-out.png +0 -0
 - package/src/__tests__/snapshots/matrix4/full-rect.png +0 -0
 - package/src/__tests__/snapshots/matrix4/perspective.png +0 -0
 - package/src/__tests__/snapshots/matrix4/rect.png +0 -0
 - package/src/__tests__/snapshots/matrix4/scaled-rect.png +0 -0
 - package/src/__tests__/snapshots/matrix4/test-perspective.png +0 -0
 - package/src/__tests__/snapshots/matrix4/test-perspective2.png +0 -0
 - package/src/__tests__/snapshots/paint/blend-mode.png +0 -0
 - package/src/__tests__/snapshots/paint/circle.png +0 -0
 - package/src/__tests__/snapshots/paint/colors.png +0 -0
 - package/src/__tests__/snapshots/paint/dither.png +0 -0
 - package/src/__tests__/snapshots/paint/path-paint.png +0 -0
 - package/src/__tests__/snapshots/paint/without-dither.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-auto-linebreaks-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-auto-linebreaks-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-node.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-ellipse-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-ellipse-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-linebreaks-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-linebreaks-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-center-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-center-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-justify-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-justify-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-left-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-left-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-right-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-right-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-rtl-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-rtl-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-colors-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-colors-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-decoration-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-decoration-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-shadow-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-shadow-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-android-box.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-ios-box.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-in-paragraph-style-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-in-paragraph-style-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-node.png +0 -0
 - package/src/__tests__/snapshots/path/interpolate.png +0 -0
 - package/src/__tests__/snapshots/path/logo.png +0 -0
 - package/src/__tests__/snapshots/path-effects/discrete.png +0 -0
 - package/src/__tests__/snapshots/path-effects/sum.png +0 -0
 - package/src/__tests__/snapshots/path-effects/sum2.png +0 -0
 - package/src/__tests__/snapshots/paths/arc.png +0 -0
 - package/src/__tests__/snapshots/paths/emptyPath.png +0 -0
 - package/src/__tests__/snapshots/paths/interpolation1.png +0 -0
 - package/src/__tests__/snapshots/paths/oval.png +0 -0
 - package/src/__tests__/snapshots/paths/pattern.png +0 -0
 - package/src/__tests__/snapshots/paths/poly.png +0 -0
 - package/src/__tests__/snapshots/paths/rrect.png +0 -0
 - package/src/__tests__/snapshots/paths/skia-trimmed.png +0 -0
 - package/src/__tests__/snapshots/paths/skia.png +0 -0
 - package/src/__tests__/snapshots/pictures/create-picture.png +0 -0
 - package/src/__tests__/snapshots/pictures/green.png +0 -0
 - package/src/__tests__/snapshots/pictures/hello-world.png +0 -0
 - package/src/__tests__/snapshots/pictures/red.png +0 -0
 - package/src/__tests__/snapshots/pictures/simple-picture.png +0 -0
 - package/src/__tests__/snapshots/platform-buffer-bgra.png +0 -0
 - package/src/__tests__/snapshots/platform-buffer.png +0 -0
 - package/src/__tests__/snapshots/points/points.png +0 -0
 - package/src/__tests__/snapshots/points/points2.png +0 -0
 - package/src/__tests__/snapshots/render-nodes/simple.png +0 -0
 - package/src/__tests__/snapshots/render-nodes/simple2.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-burn.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-burn2.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-burn3.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-dodge.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-multiply.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/int-uniform.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/linear-gradient.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/linear-gradient2.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/small-spiral.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/spiral.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/scaled-circle.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/scaled-circle2.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/simple.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/spiral.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/unscaled-image.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot1-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot1-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot1-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot2-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot2-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot2-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot3-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot3-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot3-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot4-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot4-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot4-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot5-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot5-ios.png +0 -0
 - package/src/__tests__/snapshots/sdf/circle.png +0 -0
 - package/src/__tests__/snapshots/sdf/heart.png +0 -0
 - package/src/__tests__/snapshots/sdf/line.png +0 -0
 - package/src/__tests__/snapshots/sdf/rectangle.png +0 -0
 - package/src/__tests__/snapshots/shader/bilinear-interpolation.png +0 -0
 - package/src/__tests__/snapshots/shader/hue.png +0 -0
 - package/src/__tests__/snapshots/shader/hue2.png +0 -0
 - package/src/__tests__/snapshots/shader/shader1.png +0 -0
 - package/src/__tests__/snapshots/shader/shader2.png +0 -0
 - package/src/__tests__/snapshots/shader/sweep-gradient.png +0 -0
 - package/src/__tests__/snapshots/sksg/breathe-0.png +0 -0
 - package/src/__tests__/snapshots/sksg/breathe.png +0 -0
 - package/src/__tests__/snapshots/sksg/simple.png +0 -0
 - package/src/__tests__/snapshots/sksg/simple2.png +0 -0
 - package/src/__tests__/snapshots/text/text-bounds-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-bounds-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-default-font-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-default-font-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path-bug-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-path-bug-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path-bug-node.png +0 -0
 - package/src/__tests__/snapshots/text/text-path1-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-path1-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path1-node.png +0 -0
 - package/src/__tests__/snapshots/text/text-path2-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-path2-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path2-node.png +0 -0
 - package/src/__tests__/snapshots/transform/rectangles.png +0 -0
 - package/src/__tests__/snapshots/transform/rotate-radiants.png +0 -0
 - package/src/__tests__/snapshots/transform/rotate.png +0 -0
 - package/src/__tests__/snapshots/transform/scale-origin.png +0 -0
 - package/src/__tests__/snapshots/transform/scale.png +0 -0
 - package/src/__tests__/snapshots/transform/skew.png +0 -0
 - package/src/__tests__/snapshots/transparent.png +0 -0
 - package/src/__tests__/snapshots/vertices/billinear-gradient.png +0 -0
 - package/src/__tests__/snapshots/vertices/strip.png +0 -0
 - package/src/__tests__/snapshots/vertices/vertices.png +0 -0
 - package/src/mock/__tests__/mock.spec.ts +0 -47
 - package/src/renderer/__tests__/Data.spec.tsx +0 -66
 - package/src/renderer/__tests__/Drawings.spec.tsx +0 -96
 - package/src/renderer/__tests__/FitBox.spec.tsx +0 -677
 - package/src/renderer/__tests__/Glyphs.spec.tsx +0 -46
 - package/src/renderer/__tests__/Image.spec.tsx +0 -45
 - package/src/renderer/__tests__/Paths.spec.tsx +0 -75
 - package/src/renderer/__tests__/Picture.spec.tsx +0 -83
 - package/src/renderer/__tests__/Simple.spec.tsx +0 -81
 - package/src/renderer/__tests__/Surfaces.spec.tsx +0 -68
 - package/src/renderer/__tests__/Text.spec.tsx +0 -134
 - package/src/renderer/__tests__/Transform.spec.tsx +0 -72
 - package/src/renderer/__tests__/documentation/Group.spec.tsx +0 -170
 - package/src/renderer/__tests__/documentation/getting-started/HelloWorld.spec.tsx +0 -51
 - package/src/renderer/__tests__/documentation/paint/Overview.spec.tsx +0 -84
 - package/src/renderer/__tests__/documentation/shapes/Box.spec.tsx +0 -46
 - package/src/renderer/__tests__/e2e/AdvancedImageFilters.spec.tsx +0 -492
 - package/src/renderer/__tests__/e2e/AnimatedImages.spec.tsx +0 -87
 - package/src/renderer/__tests__/e2e/Atlas.spec.tsx +0 -358
 - package/src/renderer/__tests__/e2e/BackdropFilters.spec.tsx +0 -164
 - package/src/renderer/__tests__/e2e/Blending.spec.tsx +0 -115
 - package/src/renderer/__tests__/e2e/Blur.spec.tsx +0 -56
 - package/src/renderer/__tests__/e2e/Box.spec.tsx +0 -105
 - package/src/renderer/__tests__/e2e/Camera.spec.tsx +0 -475
 - package/src/renderer/__tests__/e2e/ColorFilters.spec.tsx +0 -227
 - package/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.tsx +0 -102
 - package/src/renderer/__tests__/e2e/CoonPatch.spec.tsx +0 -74
 - package/src/renderer/__tests__/e2e/DataEncoding.spec.tsx +0 -79
 - package/src/renderer/__tests__/e2e/Drawings.spec.tsx +0 -254
 - package/src/renderer/__tests__/e2e/FontMgr.spec.tsx +0 -150
 - package/src/renderer/__tests__/e2e/Gradient.spec.tsx +0 -40
 - package/src/renderer/__tests__/e2e/Group.spec.tsx +0 -128
 - package/src/renderer/__tests__/e2e/Image.spec.tsx +0 -77
 - package/src/renderer/__tests__/e2e/ImageEncoding.spec.tsx +0 -255
 - package/src/renderer/__tests__/e2e/ImageFilter.spec.tsx +0 -99
 - package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +0 -320
 - package/src/renderer/__tests__/e2e/LightingImageFilters.spec.tsx +0 -1478
 - package/src/renderer/__tests__/e2e/Mask.spec.tsx +0 -85
 - package/src/renderer/__tests__/e2e/Matrix4.spec.tsx +0 -367
 - package/src/renderer/__tests__/e2e/NativeBuffer.spec.tsx +0 -158
 - package/src/renderer/__tests__/e2e/Offscreen.spec.tsx +0 -109
 - package/src/renderer/__tests__/e2e/Opacity.spec.tsx +0 -301
 - package/src/renderer/__tests__/e2e/Paint.spec.tsx +0 -230
 - package/src/renderer/__tests__/e2e/ParagraphMethods.spec.tsx +0 -388
 - package/src/renderer/__tests__/e2e/ParagraphPaint.spec.tsx +0 -262
 - package/src/renderer/__tests__/e2e/Paragraphs.spec.tsx +0 -615
 - package/src/renderer/__tests__/e2e/PathEffects.spec.tsx +0 -73
 - package/src/renderer/__tests__/e2e/Paths.spec.tsx +0 -394
 - package/src/renderer/__tests__/e2e/Picture.spec.tsx +0 -134
 - package/src/renderer/__tests__/e2e/Point.spec.tsx +0 -35
 - package/src/renderer/__tests__/e2e/Rect.spec.tsx +0 -139
 - package/src/renderer/__tests__/e2e/RuntimeShader.spec.tsx +0 -323
 - package/src/renderer/__tests__/e2e/SDF.spec.tsx +0 -148
 - package/src/renderer/__tests__/e2e/SVG.spec.tsx +0 -192
 - package/src/renderer/__tests__/e2e/Shader.spec.tsx +0 -353
 - package/src/renderer/__tests__/e2e/Skottie.spec.tsx +0 -463
 - package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +0 -29
 - package/src/renderer/__tests__/e2e/Surfaces.spec.tsx +0 -17
 - package/src/renderer/__tests__/e2e/Text.spec.tsx +0 -109
 - package/src/renderer/__tests__/e2e/TextPath.spec.tsx +0 -43
 - package/src/renderer/__tests__/e2e/Transforms.spec.tsx +0 -63
 - package/src/renderer/__tests__/e2e/Vertices.spec.tsx +0 -30
 - package/src/renderer/__tests__/e2e/Video.ts +0 -68
 - package/src/renderer/__tests__/e2e/setup/Paragraph.ts +0 -60
 - package/src/renderer/__tests__/e2e/setup/SVG.ts +0 -31
 - package/src/renderer/__tests__/e2e/setup/SkiaObject.ts +0 -31
 - package/src/renderer/__tests__/e2e/setup/index.ts +0 -3
 - package/src/renderer/__tests__/e2e/setup/skottie/basic_slots.json +0 -1118
 - package/src/renderer/__tests__/e2e/setup/skottie/color-props.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/confetti.json +0 -5899
 - package/src/renderer/__tests__/e2e/setup/skottie/drinks.json +0 -43857
 - package/src/renderer/__tests__/e2e/setup/skottie/fingerprint.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/lego_loader.json +0 -29540
 - package/src/renderer/__tests__/e2e/setup/skottie/new-drop.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/onboarding.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/text-layer.json +0 -1
 - package/src/renderer/__tests__/examples/BlendModes.spec.tsx +0 -123
 - package/src/renderer/__tests__/setup.tsx +0 -525
 - package/src/skia/__tests__/ColorFilter.spec.ts +0 -67
 - package/src/skia/__tests__/Data.spec.ts +0 -29
 - package/src/skia/__tests__/Drawings.spec.ts +0 -119
 - package/src/skia/__tests__/Enums.spec.ts +0 -136
 - package/src/skia/__tests__/Geometry.spec.ts +0 -39
 - package/src/skia/__tests__/ImageFilter.spec.ts +0 -19
 - package/src/skia/__tests__/Mock.spec.ts +0 -7
 - package/src/skia/__tests__/Paint.spec.ts +0 -25
 - package/src/skia/__tests__/Path.spec.ts +0 -384
 - package/src/skia/__tests__/RuntimeEffect.spec.ts +0 -66
 - package/src/skia/__tests__/Shader.spec.ts +0 -96
 - package/src/skia/__tests__/Text.spec.ts +0 -32
 - package/src/skia/__tests__/Transform.spec.ts +0 -89
 - package/src/skia/__tests__/Vertices.spec.ts +0 -40
 - package/src/skia/__tests__/assets/Avenir-Heavy.ttf +0 -0
 - package/src/skia/__tests__/assets/DIN-Medium.ttf +0 -0
 - package/src/skia/__tests__/assets/NotoColorEmoji.ttf +0 -0
 - package/src/skia/__tests__/assets/NotoSansSC-Regular.otf +0 -0
 - package/src/skia/__tests__/assets/Pacifico-Regular.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-BlackItalic.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Bold.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Italic.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Medium.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Regular.ttf +0 -0
 - package/src/skia/__tests__/assets/UberMove-Medium_mono.ttf +0 -0
 - package/src/skia/__tests__/assets/bird.gif +0 -0
 - package/src/skia/__tests__/assets/box.png +0 -0
 - package/src/skia/__tests__/assets/box2.png +0 -0
 - package/src/skia/__tests__/assets/card.png +0 -0
 - package/src/skia/__tests__/assets/mask.png +0 -0
 - package/src/skia/__tests__/assets/oslo-mini.jpg +0 -0
 - package/src/skia/__tests__/assets/oslo.jpg +0 -0
 - package/src/skia/__tests__/assets/product.png +0 -0
 - package/src/skia/__tests__/assets/skia_logo.png +0 -0
 - package/src/skia/__tests__/assets/skia_logo_jpeg.jpg +0 -0
 - package/src/skia/__tests__/assets/tiger.svg +0 -724
 - package/src/skia/__tests__/assets/zurich.jpg +0 -0
 - package/src/skia/__tests__/setup.ts +0 -27
 - package/src/sksg/__tests__/Simple.spec.tsx +0 -148
 
| 
         @@ -13,6 +13,14 @@ 
     | 
|
| 
       13 
13 
     | 
    
         
             
            #include <optional>
         
     | 
| 
       14 
14 
     | 
    
         
             
            #include <utility>
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
            template <typename T> T* SkOptAddressOrNull(std::optional<T>& object) {
         
     | 
| 
      
 17 
     | 
    
         
            +
                return object.has_value() ? &object.value() :  nullptr;
         
     | 
| 
      
 18 
     | 
    
         
            +
            }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            template <typename T> const T* SkOptAddressOrNull(const std::optional<T>& object) {
         
     | 
| 
      
 21 
     | 
    
         
            +
                return object.has_value() ? &object.value() :  nullptr;
         
     | 
| 
      
 22 
     | 
    
         
            +
            }
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       16 
24 
     | 
    
         
             
            /**
         
     | 
| 
       17 
25 
     | 
    
         
             
             *  Efficient way to defer allocating/initializing a class until it is needed
         
     | 
| 
       18 
26 
     | 
    
         
             
             *  (if ever).
         
     | 
| 
         @@ -24,11 +24,12 @@ template <typename K, typename V, typename HashK = SkGoodHash, typename PurgeCB 
     | 
|
| 
       24 
24 
     | 
    
         
             
            class SkLRUCache {
         
     | 
| 
       25 
25 
     | 
    
         
             
            private:
         
     | 
| 
       26 
26 
     | 
    
         
             
                struct Entry {
         
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                         
     | 
| 
      
 27 
     | 
    
         
            +
                    template<typename K1, typename V1>
         
     | 
| 
      
 28 
     | 
    
         
            +
                    Entry(K1&& key, V1&& value)
         
     | 
| 
      
 29 
     | 
    
         
            +
                        : fKey(std::forward<K1>(key))
         
     | 
| 
      
 30 
     | 
    
         
            +
                        , fValue(std::forward<V1>(value)) {}
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                    K fKey;
         
     | 
| 
      
 32 
     | 
    
         
            +
                    const K fKey;
         
     | 
| 
       32 
33 
     | 
    
         
             
                    V fValue;
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
35 
     | 
    
         
             
                    SK_DECLARE_INTERNAL_LLIST_INTERFACE(Entry);
         
     | 
| 
         @@ -66,10 +67,7 @@ public: 
     | 
|
| 
       66 
67 
     | 
    
         
             
                    return &entry->fValue;
         
     | 
| 
       67 
68 
     | 
    
         
             
                }
         
     | 
| 
       68 
69 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                V* insert( 
     | 
| 
       70 
     | 
    
         
            -
                    SkASSERT(!this->find(key));
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                    Entry* entry = new Entry(key, std::move(value));
         
     | 
| 
      
 70 
     | 
    
         
            +
                V* insert(Entry* entry) {
         
     | 
| 
       73 
71 
     | 
    
         
             
                    fMap.set(entry);
         
     | 
| 
       74 
72 
     | 
    
         
             
                    fLRU.addToHead(entry);
         
     | 
| 
       75 
73 
     | 
    
         
             
                    while (fMap.count() > fMaxCount) {
         
     | 
| 
         @@ -78,20 +76,26 @@ public: 
     | 
|
| 
       78 
76 
     | 
    
         
             
                    return &entry->fValue;
         
     | 
| 
       79 
77 
     | 
    
         
             
                }
         
     | 
| 
       80 
78 
     | 
    
         | 
| 
       81 
     | 
    
         
            -
                 
     | 
| 
      
 79 
     | 
    
         
            +
                template<typename K1, typename V1>
         
     | 
| 
      
 80 
     | 
    
         
            +
                V* insert(K1&& key, V1&& value) {
         
     | 
| 
      
 81 
     | 
    
         
            +
                    SkASSERT(!this->find(key));
         
     | 
| 
      
 82 
     | 
    
         
            +
                    return this->insert(new Entry(std::forward<K1>(key), std::forward<V1>(value)));
         
     | 
| 
      
 83 
     | 
    
         
            +
                }
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                template<typename K1, typename V1>
         
     | 
| 
      
 86 
     | 
    
         
            +
                V* insert_or_update(K1&& key, V1&& value) {
         
     | 
| 
       82 
87 
     | 
    
         
             
                    if (V* found = this->find(key)) {
         
     | 
| 
       83 
     | 
    
         
            -
                        *found = std:: 
     | 
| 
      
 88 
     | 
    
         
            +
                        *found = std::forward<V1>(value);
         
     | 
| 
       84 
89 
     | 
    
         
             
                        return found;
         
     | 
| 
       85 
     | 
    
         
            -
                    } else {
         
     | 
| 
       86 
     | 
    
         
            -
                        return this->insert(key, std::move(value));
         
     | 
| 
       87 
90 
     | 
    
         
             
                    }
         
     | 
| 
      
 91 
     | 
    
         
            +
                    return this->insert(new Entry(std::forward<K1>(key), std::forward<V1>(value)));
         
     | 
| 
       88 
92 
     | 
    
         
             
                }
         
     | 
| 
       89 
93 
     | 
    
         | 
| 
       90 
94 
     | 
    
         
             
                int count() const {
         
     | 
| 
       91 
95 
     | 
    
         
             
                    return fMap.count();
         
     | 
| 
       92 
96 
     | 
    
         
             
                }
         
     | 
| 
       93 
97 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
                template <typename Fn>  // f(K*, V*)
         
     | 
| 
      
 98 
     | 
    
         
            +
                template <typename Fn>  // f(const K*, V*)
         
     | 
| 
       95 
99 
     | 
    
         
             
                void foreach(Fn&& fn) {
         
     | 
| 
       96 
100 
     | 
    
         
             
                    typename SkTInternalLList<Entry>::Iter iter;
         
     | 
| 
       97 
101 
     | 
    
         
             
                    for (Entry* e = iter.init(fLRU, SkTInternalLList<Entry>::Iter::kHead_IterStart); e;
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import type { SkData } from "../Data";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import type { SkFontMgr } from "../Font/FontMgr";
         
     | 
| 
       2 
3 
     | 
    
         
             
            import type { SkSVG } from "./SVG";
         
     | 
| 
       3 
4 
     | 
    
         
             
            export interface SVGFactory {
         
     | 
| 
       4 
     | 
    
         
            -
                MakeFromData(data: SkData): SkSVG | null;
         
     | 
| 
       5 
     | 
    
         
            -
                MakeFromString(str: string): SkSVG | null;
         
     | 
| 
      
 5 
     | 
    
         
            +
                MakeFromData(data: SkData, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
         
     | 
| 
      
 6 
     | 
    
         
            +
                MakeFromString(str: string, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
         
     | 
| 
       6 
7 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n  MakeFromData(data: SkData): SkSVG | null;\n  MakeFromString(str: string): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\nimport type { SkFontMgr } from \"../Font/FontMgr\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n  MakeFromData(\n    data: SkData,\n    fontMgr?: SkFontMgr | null,\n    assets?: Record<string, SkData | null>\n  ): SkSVG | null;\n  MakeFromString(\n    str: string,\n    fontMgr?: SkFontMgr | null,\n    assets?: Record<string, SkData | null>\n  ): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import type { SkData } from "../Data";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import type { SkFontMgr } from "../Font/FontMgr";
         
     | 
| 
       2 
3 
     | 
    
         
             
            import type { SkSVG } from "./SVG";
         
     | 
| 
       3 
4 
     | 
    
         
             
            export interface SVGFactory {
         
     | 
| 
       4 
     | 
    
         
            -
                MakeFromData(data: SkData): SkSVG | null;
         
     | 
| 
       5 
     | 
    
         
            -
                MakeFromString(str: string): SkSVG | null;
         
     | 
| 
      
 5 
     | 
    
         
            +
                MakeFromData(data: SkData, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
         
     | 
| 
      
 6 
     | 
    
         
            +
                MakeFromString(str: string, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
         
     | 
| 
       6 
7 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n  MakeFromData(data: SkData): SkSVG | null;\n  MakeFromString(str: string): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\nimport type { SkFontMgr } from \"../Font/FontMgr\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n  MakeFromData(\n    data: SkData,\n    fontMgr?: SkFontMgr | null,\n    assets?: Record<string, SkData | null>\n  ): SkSVG | null;\n  MakeFromString(\n    str: string,\n    fontMgr?: SkFontMgr | null,\n    assets?: Record<string, SkData | null>\n  ): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import type { SkData } from "../Data";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import type { SkFontMgr } from "../Font/FontMgr";
         
     | 
| 
       2 
3 
     | 
    
         
             
            import type { SkSVG } from "./SVG";
         
     | 
| 
       3 
4 
     | 
    
         
             
            export interface SVGFactory {
         
     | 
| 
       4 
     | 
    
         
            -
                MakeFromData(data: SkData): SkSVG | null;
         
     | 
| 
       5 
     | 
    
         
            -
                MakeFromString(str: string): SkSVG | null;
         
     | 
| 
      
 5 
     | 
    
         
            +
                MakeFromData(data: SkData, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
         
     | 
| 
      
 6 
     | 
    
         
            +
                MakeFromString(str: string, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
         
     | 
| 
       6 
7 
     | 
    
         
             
            }
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -8,31 +8,32 @@ 
     | 
|
| 
       8 
8 
     | 
    
         
             
                "setup-skia-web": "scripts/setup-canvaskit.js"
         
     | 
| 
       9 
9 
     | 
    
         
             
              },
         
     | 
| 
       10 
10 
     | 
    
         
             
              "title": "React Native Skia",
         
     | 
| 
       11 
     | 
    
         
            -
              "version": "2. 
     | 
| 
      
 11 
     | 
    
         
            +
              "version": "2.3.4",
         
     | 
| 
      
 12 
     | 
    
         
            +
              "skiaVersion": "m142",
         
     | 
| 
       12 
13 
     | 
    
         
             
              "description": "High-performance React Native Graphics using Skia",
         
     | 
| 
       13 
14 
     | 
    
         
             
              "main": "lib/module/index.js",
         
     | 
| 
       14 
15 
     | 
    
         
             
              "react-native": "src/index.ts",
         
     | 
| 
       15 
16 
     | 
    
         
             
              "module": "lib/module/index.js",
         
     | 
| 
       16 
17 
     | 
    
         
             
              "types": "lib/typescript/index.d.ts",
         
     | 
| 
       17 
18 
     | 
    
         
             
              "files": [
         
     | 
| 
      
 19 
     | 
    
         
            +
                "scripts/install-skia.mjs",
         
     | 
| 
      
 20 
     | 
    
         
            +
                "scripts/setup-canvaskit.js",
         
     | 
| 
       18 
21 
     | 
    
         
             
                "src/**",
         
     | 
| 
       19 
22 
     | 
    
         
             
                "lib/**",
         
     | 
| 
      
 23 
     | 
    
         
            +
                "!**/__tests__/**",
         
     | 
| 
       20 
24 
     | 
    
         
             
                "README.md",
         
     | 
| 
       21 
25 
     | 
    
         
             
                "LICENSE.md",
         
     | 
| 
       22 
26 
     | 
    
         
             
                "android/build.gradle",
         
     | 
| 
       23 
27 
     | 
    
         
             
                "android/CMakeLists.txt",
         
     | 
| 
       24 
28 
     | 
    
         
             
                "android/cpp/**",
         
     | 
| 
       25 
29 
     | 
    
         
             
                "android/src/**",
         
     | 
| 
       26 
     | 
    
         
            -
                "libs/android/**",
         
     | 
| 
       27 
30 
     | 
    
         
             
                "index.js",
         
     | 
| 
       28 
31 
     | 
    
         
             
                "jestSetup.js",
         
     | 
| 
       29 
32 
     | 
    
         
             
                "jestSetup.mjs",
         
     | 
| 
       30 
33 
     | 
    
         
             
                "jestEnv.js",
         
     | 
| 
       31 
34 
     | 
    
         
             
                "cpp/**/*.{h,cpp}",
         
     | 
| 
       32 
35 
     | 
    
         
             
                "apple/**",
         
     | 
| 
       33 
     | 
    
         
            -
                "libs/apple/*.xcframework/**",
         
     | 
| 
       34 
36 
     | 
    
         
             
                "react-native-skia.podspec",
         
     | 
| 
       35 
     | 
    
         
            -
                "scripts/setup-canvaskit.js",
         
     | 
| 
       36 
37 
     | 
    
         
             
                "dist/**"
         
     | 
| 
       37 
38 
     | 
    
         
             
              ],
         
     | 
| 
       38 
39 
     | 
    
         
             
              "scripts": {
         
     | 
| 
         @@ -45,13 +46,14 @@ 
     | 
|
| 
       45 
46 
     | 
    
         
             
                "clean-skia": "yarn rimraf ./libs && yarn rimraf ../../externals/skia/out",
         
     | 
| 
       46 
47 
     | 
    
         
             
                "build-skia": "tsx ./scripts/build-skia.ts",
         
     | 
| 
       47 
48 
     | 
    
         
             
                "copy-skia-headers": "tsx ./scripts/copy-skia-headers.ts",
         
     | 
| 
       48 
     | 
    
         
            -
                "install-skia": " 
     | 
| 
      
 49 
     | 
    
         
            +
                "install-skia": "node ./scripts/install-skia.mjs && yarn copy-skia-headers",
         
     | 
| 
       49 
50 
     | 
    
         
             
                "clang-format": "yarn clang-format-ios && yarn clang-format-android && yarn clang-format-common",
         
     | 
| 
       50 
51 
     | 
    
         
             
                "clang-format-ios": "find apple/ -iname '*.h' -o -iname '*.mm' -o -iname '*.cpp' | xargs clang-format -i",
         
     | 
| 
       51 
52 
     | 
    
         
             
                "clang-format-android": "find android/cpp/ -iname '*.h' -o -iname '*.m' -o -iname '*.cpp' | xargs clang-format -i",
         
     | 
| 
       52 
53 
     | 
    
         
             
                "clang-format-common": "find cpp/ \\( -path 'cpp//skia' -prune \\) -o \\( -iname '*.h' -o -iname '*.m' -o -iname '*.cpp' \\) -print | xargs clang-format -i",
         
     | 
| 
       53 
54 
     | 
    
         
             
                "workflow-copy-libs": "tsx ./scripts/workflow-copy-libs.ts",
         
     | 
| 
       54 
     | 
    
         
            -
                "cpplint": "cpplint --linelength=230 --filter=-legal/copyright,-whitespace/indent,-whitespace/comments,-whitespace/ending_newline,-build/include_order,-runtime/references,-readability/todo,-whitespace/blank_line,-whitespace/todo,-runtime/int,-build/c++11,-whitespace/parens --exclude=package/cpp/skia --exclude=package/ios --exclude=package/android/build --exclude=package/node_modules --recursive package"
         
     | 
| 
      
 55 
     | 
    
         
            +
                "cpplint": "cpplint --linelength=230 --filter=-legal/copyright,-whitespace/indent,-whitespace/comments,-whitespace/ending_newline,-build/include_order,-runtime/references,-readability/todo,-whitespace/blank_line,-whitespace/todo,-runtime/int,-build/c++11,-whitespace/parens --exclude=package/cpp/skia --exclude=package/ios --exclude=package/android/build --exclude=package/node_modules --recursive package",
         
     | 
| 
      
 56 
     | 
    
         
            +
                "postinstall": "node ./scripts/install-skia.mjs"
         
     | 
| 
       55 
57 
     | 
    
         
             
              },
         
     | 
| 
       56 
58 
     | 
    
         
             
              "repository": {
         
     | 
| 
       57 
59 
     | 
    
         
             
                "type": "git",
         
     | 
| 
         @@ -91,12 +93,12 @@ 
     | 
|
| 
       91 
93 
     | 
    
         
             
              "devDependencies": {
         
     | 
| 
       92 
94 
     | 
    
         
             
                "@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
         
     | 
| 
       93 
95 
     | 
    
         
             
                "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
         
     | 
| 
      
 96 
     | 
    
         
            +
                "@blazediff/core": "^1.4.0",
         
     | 
| 
       94 
97 
     | 
    
         
             
                "@semantic-release/commit-analyzer": "^13.0.0",
         
     | 
| 
       95 
98 
     | 
    
         
             
                "@semantic-release/exec": "^7.0.3",
         
     | 
| 
       96 
99 
     | 
    
         
             
                "@semantic-release/github": "^10.3.3",
         
     | 
| 
       97 
100 
     | 
    
         
             
                "@semantic-release/release-notes-generator": "^14.0.1",
         
     | 
| 
       98 
101 
     | 
    
         
             
                "@types/jest": "30.0.0",
         
     | 
| 
       99 
     | 
    
         
            -
                "@types/pixelmatch": "5.2.4",
         
     | 
| 
       100 
102 
     | 
    
         
             
                "@types/pngjs": "6.0.1",
         
     | 
| 
       101 
103 
     | 
    
         
             
                "@types/react": "^19.0.0",
         
     | 
| 
       102 
104 
     | 
    
         
             
                "@types/react-reconciler": "0.28.9",
         
     | 
| 
         @@ -108,7 +110,6 @@ 
     | 
|
| 
       108 
110 
     | 
    
         
             
                "jest": "30.0.0",
         
     | 
| 
       109 
111 
     | 
    
         
             
                "jest-diff": "29.7.0",
         
     | 
| 
       110 
112 
     | 
    
         
             
                "merge-dirs": "0.2.1",
         
     | 
| 
       111 
     | 
    
         
            -
                "pixelmatch": "5.3.0",
         
     | 
| 
       112 
113 
     | 
    
         
             
                "pngjs": "6.0.0",
         
     | 
| 
       113 
114 
     | 
    
         
             
                "prettier": "2.8.7",
         
     | 
| 
       114 
115 
     | 
    
         
             
                "react": "19.0.0",
         
     | 
| 
         @@ -60,8 +60,7 @@ base_frameworks = ['libs/apple/libskia.xcframework', 
     | 
|
| 
       60 
60 
     | 
    
         
             
            'libs/apple/libskunicode_core.xcframework',
         
     | 
| 
       61 
61 
     | 
    
         
             
            'libs/apple/libskunicode_libgrapheme.xcframework',
         
     | 
| 
       62 
62 
     | 
    
         
             
            'libs/apple/libskottie.xcframework',
         
     | 
| 
       63 
     | 
    
         
            -
            'libs/apple/libsksg.xcframework',
         
     | 
| 
       64 
     | 
    
         
            -
            'libs/apple/libpathops.xcframework',]
         
     | 
| 
      
 63 
     | 
    
         
            +
            'libs/apple/libsksg.xcframework',]
         
     | 
| 
       65 
64 
     | 
    
         | 
| 
       66 
65 
     | 
    
         
             
            Pod::Spec.new do |s|
         
     | 
| 
       67 
66 
     | 
    
         
             
              s.name         = "react-native-skia"
         
     | 
| 
         @@ -0,0 +1,360 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import fs from "fs";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import https from "https";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import path from "path";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import os from "os";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { spawn } from "child_process";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { fileURLToPath } from "url";
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            const __dirname = path.dirname(fileURLToPath(import.meta.url));
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            const repo = "shopify/react-native-skia";
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            const getSkiaVersion = () => {
         
     | 
| 
      
 13 
     | 
    
         
            +
              const packageJsonPath = path.join(__dirname, "..", "package.json");
         
     | 
| 
      
 14 
     | 
    
         
            +
              const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
         
     | 
| 
      
 15 
     | 
    
         
            +
              return packageJson.skiaVersion;
         
     | 
| 
      
 16 
     | 
    
         
            +
            };
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            const GRAPHITE = !!process.env.SK_GRAPHITE;
         
     | 
| 
      
 19 
     | 
    
         
            +
            const prefix = GRAPHITE ? "skia-graphite" : "skia";
         
     | 
| 
      
 20 
     | 
    
         
            +
            const names = [
         
     | 
| 
      
 21 
     | 
    
         
            +
              `${prefix}-android-arm`,
         
     | 
| 
      
 22 
     | 
    
         
            +
              `${prefix}-android-arm-64`,
         
     | 
| 
      
 23 
     | 
    
         
            +
              `${prefix}-android-arm-x64`,
         
     | 
| 
      
 24 
     | 
    
         
            +
              `${prefix}-android-arm-x86`,
         
     | 
| 
      
 25 
     | 
    
         
            +
              `${prefix}-apple-xcframeworks`,
         
     | 
| 
      
 26 
     | 
    
         
            +
            ];
         
     | 
| 
      
 27 
     | 
    
         
            +
            if (GRAPHITE) {
         
     | 
| 
      
 28 
     | 
    
         
            +
              names.push("skia-graphite-headers");
         
     | 
| 
      
 29 
     | 
    
         
            +
            }
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            const skiaVersion = getSkiaVersion();
         
     | 
| 
      
 32 
     | 
    
         
            +
            const releaseTag = `skia-${skiaVersion}`;
         
     | 
| 
      
 33 
     | 
    
         
            +
            console.log(
         
     | 
| 
      
 34 
     | 
    
         
            +
              `📦 Downloading Skia prebuilt binaries for version: ${skiaVersion}`
         
     | 
| 
      
 35 
     | 
    
         
            +
            );
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            const runCommand = (command, args) => {
         
     | 
| 
      
 38 
     | 
    
         
            +
              return new Promise((resolve, reject) => {
         
     | 
| 
      
 39 
     | 
    
         
            +
                const child = spawn(command, args, {
         
     | 
| 
      
 40 
     | 
    
         
            +
                  stdio: ["ignore", "inherit", "inherit"],
         
     | 
| 
      
 41 
     | 
    
         
            +
                });
         
     | 
| 
      
 42 
     | 
    
         
            +
                child.on("error", (error) => {
         
     | 
| 
      
 43 
     | 
    
         
            +
                  reject(error);
         
     | 
| 
      
 44 
     | 
    
         
            +
                });
         
     | 
| 
      
 45 
     | 
    
         
            +
                child.on("close", (code) => {
         
     | 
| 
      
 46 
     | 
    
         
            +
                  if (code === 0) {
         
     | 
| 
      
 47 
     | 
    
         
            +
                    resolve();
         
     | 
| 
      
 48 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 49 
     | 
    
         
            +
                    reject(new Error(`Command ${command} exited with code ${code}`));
         
     | 
| 
      
 50 
     | 
    
         
            +
                  }
         
     | 
| 
      
 51 
     | 
    
         
            +
                });
         
     | 
| 
      
 52 
     | 
    
         
            +
              });
         
     | 
| 
      
 53 
     | 
    
         
            +
            };
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            const downloadToFile = (url, destPath) => {
         
     | 
| 
      
 56 
     | 
    
         
            +
              fs.mkdirSync(path.dirname(destPath), { recursive: true });
         
     | 
| 
      
 57 
     | 
    
         
            +
              return new Promise((resolve, reject) => {
         
     | 
| 
      
 58 
     | 
    
         
            +
                const request = (currentUrl) => {
         
     | 
| 
      
 59 
     | 
    
         
            +
                  https
         
     | 
| 
      
 60 
     | 
    
         
            +
                    .get(currentUrl, { headers: { "User-Agent": "node" } }, (res) => {
         
     | 
| 
      
 61 
     | 
    
         
            +
                      if (
         
     | 
| 
      
 62 
     | 
    
         
            +
                        res.statusCode &&
         
     | 
| 
      
 63 
     | 
    
         
            +
                        [301, 302, 303, 307, 308].includes(res.statusCode)
         
     | 
| 
      
 64 
     | 
    
         
            +
                      ) {
         
     | 
| 
      
 65 
     | 
    
         
            +
                        const { location } = res.headers;
         
     | 
| 
      
 66 
     | 
    
         
            +
                        if (location) {
         
     | 
| 
      
 67 
     | 
    
         
            +
                          res.resume();
         
     | 
| 
      
 68 
     | 
    
         
            +
                          request(location);
         
     | 
| 
      
 69 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 70 
     | 
    
         
            +
                          reject(new Error(`Redirect without location for ${currentUrl}`));
         
     | 
| 
      
 71 
     | 
    
         
            +
                        }
         
     | 
| 
      
 72 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 73 
     | 
    
         
            +
                      }
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                      if (res.statusCode !== 200) {
         
     | 
| 
      
 76 
     | 
    
         
            +
                        reject(
         
     | 
| 
      
 77 
     | 
    
         
            +
                          new Error(
         
     | 
| 
      
 78 
     | 
    
         
            +
                            `Failed to download: ${res.statusCode} ${res.statusMessage}`
         
     | 
| 
      
 79 
     | 
    
         
            +
                          )
         
     | 
| 
      
 80 
     | 
    
         
            +
                        );
         
     | 
| 
      
 81 
     | 
    
         
            +
                        res.resume();
         
     | 
| 
      
 82 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 83 
     | 
    
         
            +
                      }
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                      const fileStream = fs.createWriteStream(destPath);
         
     | 
| 
      
 86 
     | 
    
         
            +
                      res.pipe(fileStream);
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                      fileStream.on("finish", () => {
         
     | 
| 
      
 89 
     | 
    
         
            +
                        fileStream.close((err) => {
         
     | 
| 
      
 90 
     | 
    
         
            +
                          if (err) {
         
     | 
| 
      
 91 
     | 
    
         
            +
                            // If closing the stream errors, perform the same cleanup and reject.
         
     | 
| 
      
 92 
     | 
    
         
            +
                            fileStream.destroy();
         
     | 
| 
      
 93 
     | 
    
         
            +
                            fs.unlink(destPath, () => reject(err));
         
     | 
| 
      
 94 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 95 
     | 
    
         
            +
                            resolve();
         
     | 
| 
      
 96 
     | 
    
         
            +
                          }
         
     | 
| 
      
 97 
     | 
    
         
            +
                        });
         
     | 
| 
      
 98 
     | 
    
         
            +
                      });
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                      const cleanup = (error) => {
         
     | 
| 
      
 101 
     | 
    
         
            +
                        fileStream.destroy();
         
     | 
| 
      
 102 
     | 
    
         
            +
                        fs.unlink(destPath, () => reject(error));
         
     | 
| 
      
 103 
     | 
    
         
            +
                      };
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                      res.on("error", cleanup);
         
     | 
| 
      
 106 
     | 
    
         
            +
                      fileStream.on("error", cleanup);
         
     | 
| 
      
 107 
     | 
    
         
            +
                    })
         
     | 
| 
      
 108 
     | 
    
         
            +
                    .on("error", reject);
         
     | 
| 
      
 109 
     | 
    
         
            +
                };
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                request(url);
         
     | 
| 
      
 112 
     | 
    
         
            +
              });
         
     | 
| 
      
 113 
     | 
    
         
            +
            };
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            // On Windows, convert paths to avoid tar misinterpreting paths like C:\path
         
     | 
| 
      
 116 
     | 
    
         
            +
            // as remote host connection specs (C: as hostname)
         
     | 
| 
      
 117 
     | 
    
         
            +
            const normalizePathForTar = (filePath) => {
         
     | 
| 
      
 118 
     | 
    
         
            +
              if (process.platform !== "win32") {
         
     | 
| 
      
 119 
     | 
    
         
            +
                return filePath;
         
     | 
| 
      
 120 
     | 
    
         
            +
              }
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
              // Convert backslashes to forward slashes
         
     | 
| 
      
 123 
     | 
    
         
            +
              let normalized = filePath.replace(/\\/g, "/");
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
              // Convert C:/path to /c/path for Git Bash tar compatibility
         
     | 
| 
      
 126 
     | 
    
         
            +
              normalized = normalized.replace(
         
     | 
| 
      
 127 
     | 
    
         
            +
                /^([A-Za-z]):\//,
         
     | 
| 
      
 128 
     | 
    
         
            +
                (_, drive) => `/${drive.toLowerCase()}/`
         
     | 
| 
      
 129 
     | 
    
         
            +
              );
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
              return normalized;
         
     | 
| 
      
 132 
     | 
    
         
            +
            };
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            const extractTarGz = async (archivePath, destDir) => {
         
     | 
| 
      
 135 
     | 
    
         
            +
              fs.mkdirSync(destDir, { recursive: true });
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
              const args = [
         
     | 
| 
      
 138 
     | 
    
         
            +
                "-xzf",
         
     | 
| 
      
 139 
     | 
    
         
            +
                normalizePathForTar(archivePath),
         
     | 
| 
      
 140 
     | 
    
         
            +
                "-C",
         
     | 
| 
      
 141 
     | 
    
         
            +
                normalizePathForTar(destDir),
         
     | 
| 
      
 142 
     | 
    
         
            +
              ];
         
     | 
| 
      
 143 
     | 
    
         
            +
              const candidates =
         
     | 
| 
      
 144 
     | 
    
         
            +
                process.platform === "win32"
         
     | 
| 
      
 145 
     | 
    
         
            +
                  ? [
         
     | 
| 
      
 146 
     | 
    
         
            +
                      "tar.exe",
         
     | 
| 
      
 147 
     | 
    
         
            +
                      path.join(
         
     | 
| 
      
 148 
     | 
    
         
            +
                        process.env.SystemRoot ?? "C:\\Windows",
         
     | 
| 
      
 149 
     | 
    
         
            +
                        "System32",
         
     | 
| 
      
 150 
     | 
    
         
            +
                        "tar.exe"
         
     | 
| 
      
 151 
     | 
    
         
            +
                      ),
         
     | 
| 
      
 152 
     | 
    
         
            +
                      "bsdtar.exe",
         
     | 
| 
      
 153 
     | 
    
         
            +
                      "bsdtar",
         
     | 
| 
      
 154 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 155 
     | 
    
         
            +
                  : ["tar"];
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
              let lastError;
         
     | 
| 
      
 158 
     | 
    
         
            +
              for (const candidate of candidates) {
         
     | 
| 
      
 159 
     | 
    
         
            +
                try {
         
     | 
| 
      
 160 
     | 
    
         
            +
                  await runCommand(candidate, args);
         
     | 
| 
      
 161 
     | 
    
         
            +
                  return;
         
     | 
| 
      
 162 
     | 
    
         
            +
                } catch (err) {
         
     | 
| 
      
 163 
     | 
    
         
            +
                  if (err.code === "ENOENT") {
         
     | 
| 
      
 164 
     | 
    
         
            +
                    lastError = new Error(`Command ${candidate} not found`);
         
     | 
| 
      
 165 
     | 
    
         
            +
                    continue;
         
     | 
| 
      
 166 
     | 
    
         
            +
                  }
         
     | 
| 
      
 167 
     | 
    
         
            +
                  lastError = err;
         
     | 
| 
      
 168 
     | 
    
         
            +
                }
         
     | 
| 
      
 169 
     | 
    
         
            +
              }
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
              throw new Error(
         
     | 
| 
      
 172 
     | 
    
         
            +
                `Failed to extract ${path.basename(
         
     | 
| 
      
 173 
     | 
    
         
            +
                  archivePath
         
     | 
| 
      
 174 
     | 
    
         
            +
                )}. Please install a compatible tar binary. Last error: ${
         
     | 
| 
      
 175 
     | 
    
         
            +
                  lastError?.message ?? "unknown error"
         
     | 
| 
      
 176 
     | 
    
         
            +
                }`
         
     | 
| 
      
 177 
     | 
    
         
            +
              );
         
     | 
| 
      
 178 
     | 
    
         
            +
            };
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            // Helper function to download and extract a tar.gz file
         
     | 
| 
      
 181 
     | 
    
         
            +
            const downloadAndExtract = async (url, destDir, tempDir) => {
         
     | 
| 
      
 182 
     | 
    
         
            +
              const archivePath = path.join(tempDir, path.basename(url));
         
     | 
| 
      
 183 
     | 
    
         
            +
              await downloadToFile(url, archivePath);
         
     | 
| 
      
 184 
     | 
    
         
            +
              try {
         
     | 
| 
      
 185 
     | 
    
         
            +
                await extractTarGz(archivePath, destDir);
         
     | 
| 
      
 186 
     | 
    
         
            +
              } finally {
         
     | 
| 
      
 187 
     | 
    
         
            +
                if (fs.existsSync(archivePath)) {
         
     | 
| 
      
 188 
     | 
    
         
            +
                  fs.unlinkSync(archivePath);
         
     | 
| 
      
 189 
     | 
    
         
            +
                }
         
     | 
| 
      
 190 
     | 
    
         
            +
              }
         
     | 
| 
      
 191 
     | 
    
         
            +
            };
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
            const artifactsDir = path.resolve(
         
     | 
| 
      
 194 
     | 
    
         
            +
              __dirname,
         
     | 
| 
      
 195 
     | 
    
         
            +
              "../../../packages/skia/artifacts"
         
     | 
| 
      
 196 
     | 
    
         
            +
            );
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
            const libsDir = path.resolve(__dirname, "../libs");
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
            // Function to check if prebuilt binaries are already installed
         
     | 
| 
      
 201 
     | 
    
         
            +
            const areBinariesInstalled = () => {
         
     | 
| 
      
 202 
     | 
    
         
            +
              if (!fs.existsSync(libsDir)) {
         
     | 
| 
      
 203 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 204 
     | 
    
         
            +
              }
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
              // Check for Android libraries
         
     | 
| 
      
 207 
     | 
    
         
            +
              const androidDir = path.join(libsDir, "android");
         
     | 
| 
      
 208 
     | 
    
         
            +
              const androidArchs = ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"];
         
     | 
| 
      
 209 
     | 
    
         
            +
              for (const arch of androidArchs) {
         
     | 
| 
      
 210 
     | 
    
         
            +
                const archDir = path.join(androidDir, arch);
         
     | 
| 
      
 211 
     | 
    
         
            +
                if (!fs.existsSync(archDir) || fs.readdirSync(archDir).length === 0) {
         
     | 
| 
      
 212 
     | 
    
         
            +
                  return false;
         
     | 
| 
      
 213 
     | 
    
         
            +
                }
         
     | 
| 
      
 214 
     | 
    
         
            +
              }
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
      
 216 
     | 
    
         
            +
              // Check for Apple frameworks
         
     | 
| 
      
 217 
     | 
    
         
            +
              const appleDir = path.join(libsDir, "apple");
         
     | 
| 
      
 218 
     | 
    
         
            +
              if (!fs.existsSync(appleDir) || fs.readdirSync(appleDir).length === 0) {
         
     | 
| 
      
 219 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 220 
     | 
    
         
            +
              }
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
              return true;
         
     | 
| 
      
 223 
     | 
    
         
            +
            };
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
            // Function to clear directory contents
         
     | 
| 
      
 226 
     | 
    
         
            +
            const clearDirectory = (directory) => {
         
     | 
| 
      
 227 
     | 
    
         
            +
              if (fs.existsSync(directory)) {
         
     | 
| 
      
 228 
     | 
    
         
            +
                fs.readdirSync(directory).forEach((file) => {
         
     | 
| 
      
 229 
     | 
    
         
            +
                  const curPath = path.join(directory, file);
         
     | 
| 
      
 230 
     | 
    
         
            +
                  if (fs.lstatSync(curPath).isDirectory()) {
         
     | 
| 
      
 231 
     | 
    
         
            +
                    clearDirectory(curPath);
         
     | 
| 
      
 232 
     | 
    
         
            +
                    fs.rmdirSync(curPath);
         
     | 
| 
      
 233 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 234 
     | 
    
         
            +
                    fs.unlinkSync(curPath);
         
     | 
| 
      
 235 
     | 
    
         
            +
                  }
         
     | 
| 
      
 236 
     | 
    
         
            +
                });
         
     | 
| 
      
 237 
     | 
    
         
            +
                //console.log(`❌ ${directory}`);
         
     | 
| 
      
 238 
     | 
    
         
            +
              } else {
         
     | 
| 
      
 239 
     | 
    
         
            +
                console.log(`Directory ${directory} does not exist, creating it...`);
         
     | 
| 
      
 240 
     | 
    
         
            +
                fs.mkdirSync(directory, { recursive: true });
         
     | 
| 
      
 241 
     | 
    
         
            +
              }
         
     | 
| 
      
 242 
     | 
    
         
            +
            };
         
     | 
| 
      
 243 
     | 
    
         
            +
             
     | 
| 
      
 244 
     | 
    
         
            +
            const main = async () => {
         
     | 
| 
      
 245 
     | 
    
         
            +
              const forceReinstall = process.argv.includes("--force");
         
     | 
| 
      
 246 
     | 
    
         
            +
             
     | 
| 
      
 247 
     | 
    
         
            +
              // Check if binaries are already installed
         
     | 
| 
      
 248 
     | 
    
         
            +
              if (!forceReinstall && areBinariesInstalled()) {
         
     | 
| 
      
 249 
     | 
    
         
            +
                console.log("✅ Prebuilt binaries already installed, skipping download");
         
     | 
| 
      
 250 
     | 
    
         
            +
                console.log("   Use --force to reinstall");
         
     | 
| 
      
 251 
     | 
    
         
            +
                return;
         
     | 
| 
      
 252 
     | 
    
         
            +
              }
         
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
              if (forceReinstall) {
         
     | 
| 
      
 255 
     | 
    
         
            +
                console.log("🔄 Force reinstall requested");
         
     | 
| 
      
 256 
     | 
    
         
            +
              }
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
              console.log("🧹 Clearing existing artifacts...");
         
     | 
| 
      
 259 
     | 
    
         
            +
              clearDirectory(artifactsDir);
         
     | 
| 
      
 260 
     | 
    
         
            +
             
     | 
| 
      
 261 
     | 
    
         
            +
              console.log(`⬇️  Downloading release assets to ${artifactsDir}`);
         
     | 
| 
      
 262 
     | 
    
         
            +
              const tempDownloadDir = fs.mkdtempSync(
         
     | 
| 
      
 263 
     | 
    
         
            +
                path.join(os.tmpdir(), "skia-download-")
         
     | 
| 
      
 264 
     | 
    
         
            +
              );
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
              for (const artifactName of names) {
         
     | 
| 
      
 267 
     | 
    
         
            +
                const assetName = `${artifactName}-${releaseTag}.tar.gz`;
         
     | 
| 
      
 268 
     | 
    
         
            +
                const extractDir = path.join(artifactsDir, artifactName);
         
     | 
| 
      
 269 
     | 
    
         
            +
                const downloadUrl = `https://github.com/${repo}/releases/download/${releaseTag}/${assetName}`;
         
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
                console.log(`   Downloading ${assetName}...`);
         
     | 
| 
      
 272 
     | 
    
         
            +
                try {
         
     | 
| 
      
 273 
     | 
    
         
            +
                  await downloadAndExtract(downloadUrl, extractDir, tempDownloadDir);
         
     | 
| 
      
 274 
     | 
    
         
            +
                  console.log(`   ✓ ${assetName} extracted`);
         
     | 
| 
      
 275 
     | 
    
         
            +
                } catch (error) {
         
     | 
| 
      
 276 
     | 
    
         
            +
                  console.error(`   ✗ Failed to download ${assetName}:`, error);
         
     | 
| 
      
 277 
     | 
    
         
            +
                  fs.rmSync(tempDownloadDir, { recursive: true, force: true });
         
     | 
| 
      
 278 
     | 
    
         
            +
                  throw error;
         
     | 
| 
      
 279 
     | 
    
         
            +
                }
         
     | 
| 
      
 280 
     | 
    
         
            +
              }
         
     | 
| 
      
 281 
     | 
    
         
            +
              fs.rmSync(tempDownloadDir, { recursive: true, force: true });
         
     | 
| 
      
 282 
     | 
    
         
            +
             
     | 
| 
      
 283 
     | 
    
         
            +
              // Copy artifacts to libs folder in the required structure
         
     | 
| 
      
 284 
     | 
    
         
            +
              console.log("📦 Copying artifacts to libs folder...");
         
     | 
| 
      
 285 
     | 
    
         
            +
              clearDirectory(libsDir);
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
              // Create android directory structure
         
     | 
| 
      
 288 
     | 
    
         
            +
              const androidDir = path.join(libsDir, "android");
         
     | 
| 
      
 289 
     | 
    
         
            +
              fs.mkdirSync(androidDir, { recursive: true });
         
     | 
| 
      
 290 
     | 
    
         
            +
             
     | 
| 
      
 291 
     | 
    
         
            +
              // Copy android artifacts
         
     | 
| 
      
 292 
     | 
    
         
            +
              const androidArchs = [
         
     | 
| 
      
 293 
     | 
    
         
            +
                { src: "skia-android-arm", dest: "armeabi-v7a" },
         
     | 
| 
      
 294 
     | 
    
         
            +
                { src: "skia-android-arm-64", dest: "arm64-v8a" },
         
     | 
| 
      
 295 
     | 
    
         
            +
                { src: "skia-android-arm-x86", dest: "x86" },
         
     | 
| 
      
 296 
     | 
    
         
            +
                { src: "skia-android-arm-x64", dest: "x86_64" },
         
     | 
| 
      
 297 
     | 
    
         
            +
              ];
         
     | 
| 
      
 298 
     | 
    
         
            +
             
     | 
| 
      
 299 
     | 
    
         
            +
              androidArchs.forEach(({ src, dest }) => {
         
     | 
| 
      
 300 
     | 
    
         
            +
                // The tar file extracts to artifactName/dest (e.g., skia-android-arm/armeabi-v7a)
         
     | 
| 
      
 301 
     | 
    
         
            +
                const srcDir = path.join(artifactsDir, src, dest);
         
     | 
| 
      
 302 
     | 
    
         
            +
                const destDir = path.join(androidDir, dest);
         
     | 
| 
      
 303 
     | 
    
         
            +
                if (fs.existsSync(srcDir)) {
         
     | 
| 
      
 304 
     | 
    
         
            +
                  fs.mkdirSync(destDir, { recursive: true });
         
     | 
| 
      
 305 
     | 
    
         
            +
                  fs.readdirSync(srcDir).forEach((file) => {
         
     | 
| 
      
 306 
     | 
    
         
            +
                    fs.copyFileSync(path.join(srcDir, file), path.join(destDir, file));
         
     | 
| 
      
 307 
     | 
    
         
            +
                  });
         
     | 
| 
      
 308 
     | 
    
         
            +
                }
         
     | 
| 
      
 309 
     | 
    
         
            +
              });
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
              // Create apple directory structure
         
     | 
| 
      
 312 
     | 
    
         
            +
              const appleDir = path.join(libsDir, "apple");
         
     | 
| 
      
 313 
     | 
    
         
            +
              // The tar file extracts to skia-apple-xcframeworks/apple
         
     | 
| 
      
 314 
     | 
    
         
            +
              const appleSrcDir = path.join(
         
     | 
| 
      
 315 
     | 
    
         
            +
                artifactsDir,
         
     | 
| 
      
 316 
     | 
    
         
            +
                "skia-apple-xcframeworks",
         
     | 
| 
      
 317 
     | 
    
         
            +
                "apple"
         
     | 
| 
      
 318 
     | 
    
         
            +
              );
         
     | 
| 
      
 319 
     | 
    
         
            +
              if (fs.existsSync(appleSrcDir)) {
         
     | 
| 
      
 320 
     | 
    
         
            +
                fs.mkdirSync(appleDir, { recursive: true });
         
     | 
| 
      
 321 
     | 
    
         
            +
             
     | 
| 
      
 322 
     | 
    
         
            +
                // Copy all xcframeworks
         
     | 
| 
      
 323 
     | 
    
         
            +
                fs.readdirSync(appleSrcDir).forEach((item) => {
         
     | 
| 
      
 324 
     | 
    
         
            +
                  const srcPath = path.join(appleSrcDir, item);
         
     | 
| 
      
 325 
     | 
    
         
            +
                  const destPath = path.join(appleDir, item);
         
     | 
| 
      
 326 
     | 
    
         
            +
             
     | 
| 
      
 327 
     | 
    
         
            +
                  if (fs.lstatSync(srcPath).isDirectory()) {
         
     | 
| 
      
 328 
     | 
    
         
            +
                    // Copy directory recursively
         
     | 
| 
      
 329 
     | 
    
         
            +
                    const copyDir = (src, dest) => {
         
     | 
| 
      
 330 
     | 
    
         
            +
                      fs.mkdirSync(dest, { recursive: true });
         
     | 
| 
      
 331 
     | 
    
         
            +
                      fs.readdirSync(src).forEach((file) => {
         
     | 
| 
      
 332 
     | 
    
         
            +
                        const srcFile = path.join(src, file);
         
     | 
| 
      
 333 
     | 
    
         
            +
                        const destFile = path.join(dest, file);
         
     | 
| 
      
 334 
     | 
    
         
            +
                        if (fs.lstatSync(srcFile).isDirectory()) {
         
     | 
| 
      
 335 
     | 
    
         
            +
                          copyDir(srcFile, destFile);
         
     | 
| 
      
 336 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 337 
     | 
    
         
            +
                          fs.copyFileSync(srcFile, destFile);
         
     | 
| 
      
 338 
     | 
    
         
            +
                        }
         
     | 
| 
      
 339 
     | 
    
         
            +
                      });
         
     | 
| 
      
 340 
     | 
    
         
            +
                    };
         
     | 
| 
      
 341 
     | 
    
         
            +
                    copyDir(srcPath, destPath);
         
     | 
| 
      
 342 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 343 
     | 
    
         
            +
                    fs.copyFileSync(srcPath, destPath);
         
     | 
| 
      
 344 
     | 
    
         
            +
                  }
         
     | 
| 
      
 345 
     | 
    
         
            +
                });
         
     | 
| 
      
 346 
     | 
    
         
            +
              }
         
     | 
| 
      
 347 
     | 
    
         
            +
             
     | 
| 
      
 348 
     | 
    
         
            +
              console.log("✅ Done");
         
     | 
| 
      
 349 
     | 
    
         
            +
             
     | 
| 
      
 350 
     | 
    
         
            +
              // Clean up artifacts directory
         
     | 
| 
      
 351 
     | 
    
         
            +
              console.log("🗑️  Cleaning up artifacts directory...");
         
     | 
| 
      
 352 
     | 
    
         
            +
              clearDirectory(artifactsDir);
         
     | 
| 
      
 353 
     | 
    
         
            +
              fs.rmdirSync(artifactsDir);
         
     | 
| 
      
 354 
     | 
    
         
            +
            };
         
     | 
| 
      
 355 
     | 
    
         
            +
             
     | 
| 
      
 356 
     | 
    
         
            +
            // Run the main function
         
     | 
| 
      
 357 
     | 
    
         
            +
            main().catch((error) => {
         
     | 
| 
      
 358 
     | 
    
         
            +
              console.error("❌ Error:", error);
         
     | 
| 
      
 359 
     | 
    
         
            +
              process.exit(1);
         
     | 
| 
      
 360 
     | 
    
         
            +
            });
         
     | 
| 
         @@ -1,8 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import type { SkData } from "../Data";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import type { SkFontMgr } from "../Font/FontMgr";
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            import type { SkSVG } from "./SVG";
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            export interface SVGFactory {
         
     | 
| 
       6 
     | 
    
         
            -
              MakeFromData( 
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
              MakeFromData(
         
     | 
| 
      
 8 
     | 
    
         
            +
                data: SkData,
         
     | 
| 
      
 9 
     | 
    
         
            +
                fontMgr?: SkFontMgr | null,
         
     | 
| 
      
 10 
     | 
    
         
            +
                assets?: Record<string, SkData | null>
         
     | 
| 
      
 11 
     | 
    
         
            +
              ): SkSVG | null;
         
     | 
| 
      
 12 
     | 
    
         
            +
              MakeFromString(
         
     | 
| 
      
 13 
     | 
    
         
            +
                str: string,
         
     | 
| 
      
 14 
     | 
    
         
            +
                fontMgr?: SkFontMgr | null,
         
     | 
| 
      
 15 
     | 
    
         
            +
                assets?: Record<string, SkData | null>
         
     | 
| 
      
 16 
     | 
    
         
            +
              ): SkSVG | null;
         
     | 
| 
       8 
17 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,50 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*
         
     | 
| 
       2 
     | 
    
         
            -
             * Copyright 2023 Google LLC
         
     | 
| 
       3 
     | 
    
         
            -
             *
         
     | 
| 
       4 
     | 
    
         
            -
             * Use of this source code is governed by a BSD-style license that can be
         
     | 
| 
       5 
     | 
    
         
            -
             * found in the LICENSE file.
         
     | 
| 
       6 
     | 
    
         
            -
             */
         
     | 
| 
       7 
     | 
    
         
            -
            #ifndef SkHeifDecoder_DEFINED
         
     | 
| 
       8 
     | 
    
         
            -
            #define SkHeifDecoder_DEFINED
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            #include "include/codec/SkCodec.h"
         
     | 
| 
       11 
     | 
    
         
            -
            #include "include/core/SkRefCnt.h"
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            class SkData;
         
     | 
| 
       14 
     | 
    
         
            -
            class SkStream;
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            #include <memory>
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            // This codec depends on heif libraries that are only part of the Android framework.
         
     | 
| 
       19 
     | 
    
         
            -
            // It will not work on other platforms currently.
         
     | 
| 
       20 
     | 
    
         
            -
            //
         
     | 
| 
       21 
     | 
    
         
            -
            // For historical reasons, this codec also decodes AVIF images.
         
     | 
| 
       22 
     | 
    
         
            -
            // There is a newer, dedicated SkAvifDecoder which could be used instead.
         
     | 
| 
       23 
     | 
    
         
            -
            namespace SkHeifDecoder {
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
            /** Returns true if this data claims to be a HEIF (or AVIF) image. */
         
     | 
| 
       26 
     | 
    
         
            -
            SK_API bool IsHeif(const void*, size_t);
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            /**
         
     | 
| 
       29 
     | 
    
         
            -
             *  Attempts to decode the given bytes as a HEIF (or AVIF).
         
     | 
| 
       30 
     | 
    
         
            -
             *
         
     | 
| 
       31 
     | 
    
         
            -
             *  If the bytes are not a HEIF (or AVIF), returns nullptr.
         
     | 
| 
       32 
     | 
    
         
            -
             *
         
     | 
| 
       33 
     | 
    
         
            -
             *  DecodeContext is treated as a SkCodec::SelectionPolicy*
         
     | 
| 
       34 
     | 
    
         
            -
             */
         
     | 
| 
       35 
     | 
    
         
            -
            SK_API std::unique_ptr<SkCodec> Decode(std::unique_ptr<SkStream>,
         
     | 
| 
       36 
     | 
    
         
            -
                                                   SkCodec::Result*,
         
     | 
| 
       37 
     | 
    
         
            -
                                                   SkCodecs::DecodeContext = nullptr);
         
     | 
| 
       38 
     | 
    
         
            -
            SK_API std::unique_ptr<SkCodec> Decode(sk_sp<SkData>,
         
     | 
| 
       39 
     | 
    
         
            -
                                                   SkCodec::Result*,
         
     | 
| 
       40 
     | 
    
         
            -
                                                   SkCodecs::DecodeContext = nullptr);
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            // Do not register this codec using "avif" as the key (even though it can handle that type).
         
     | 
| 
       43 
     | 
    
         
            -
            // Doing so would cause internal codec sniffing to choose the wrong sampler.
         
     | 
| 
       44 
     | 
    
         
            -
            inline SkCodecs::Decoder Decoder() {
         
     | 
| 
       45 
     | 
    
         
            -
                return { "heif", IsHeif, Decode };
         
     | 
| 
       46 
     | 
    
         
            -
            }
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
            }  // namespace SkHeifDecoder
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            #endif  // SkHeifDecoder_DEFINED
         
     | 
| 
         @@ -1,9 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import type { Server, WebSocket } from "ws";
         
     | 
| 
       2 
     | 
    
         
            -
            declare global {
         
     | 
| 
       3 
     | 
    
         
            -
                var testServer: Server;
         
     | 
| 
       4 
     | 
    
         
            -
                var testClient: WebSocket;
         
     | 
| 
       5 
     | 
    
         
            -
                var testOS: "ios" | "android" | "web" | "node" | "macos";
         
     | 
| 
       6 
     | 
    
         
            -
                var testArch: "paper" | "fabric";
         
     | 
| 
       7 
     | 
    
         
            -
            }
         
     | 
| 
       8 
     | 
    
         
            -
            declare const globalSetup: () => Promise<void>;
         
     | 
| 
       9 
     | 
    
         
            -
            export default globalSetup;
         
     |