mirror of
https://github.com/zoriya/react-native-svg.git
synced 2025-12-05 22:56:11 +00:00
feat: e2e snapshot tests (#2338)
<!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please follow the template so that the reviewers can easily understand what the code changes affect --> # Summary This PR adds E2E tests based on view screenshots done via `react-native-view-shot`. It only works with devices that have their [pixel ratio](https://reactnative.dev/docs/pixelratio) equal `3`. If you want to use device with different pixel ratio, you need to adjust it in `e2e/generateReferences.ts` viewport and regenerate reference images (see below). Steps to run tests: - Run Metro server for example app via `yarn start` in example app's directory - Run `example` app on platform of your choice (currently only Android & iOS are supported) via `yarn android` or `yarn ios` in example app's directory - Run `yarn e2e` in project's root directory to start Jest server - Select `E2E` tab in example app - Wait for tests to finish - You can see test results, as well as diffs (actual rendered svg vs reference image) in `e2e/diffs` directory Steps to add new test cases: - Put SVG of your choice to `e2e/cases` directory - Run `yarn generateE2eRefrences`, this will open headless chrome browser via `puppeteer` and snapshot all rendered SVGs to .png files and later use them as reference in tests - You should see new .png files in `e2e/references` - When you run E2E tests again, it will use new test case(s) you've added ## Test Plan https://github.com/software-mansion/react-native-svg/assets/41289688/24ee5447-ce9a-43b6-9dde-76229d25a30a https://github.com/software-mansion/react-native-svg/assets/41289688/71d1873f-8155-4494-80bd-e4c1fa72a065 ### What's required for testing (prerequisites)? See Summary ### What are the steps to reproduce (after prerequisites)? See Summary ## Compatibility | OS | Implemented | | ------- | :---------: | | iOS | ✅ | | Android | ✅ | | Web | ❌ | ## Checklist <!-- Check completed item, when applicable, via: [X] --> - [X] I have tested this on a device and a simulator - [x] I added documentation in `README.md` - [X] I updated the typed files (typescript) - [X] I added a test for the API in the `__tests__` folder --------- Co-authored-by: bohdanprog <bohdan.artiukhov@swmansion.com> Co-authored-by: Jakub Grzywacz <jakub.grzywacz@swmansion.com>
This commit is contained in:
committed by
GitHub
parent
53ba6f2413
commit
a089cc2efc
120
.github/workflows/android-e2e.yml
vendored
Normal file
120
.github/workflows/android-e2e.yml
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
name: Test Android e2e
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/android-e2e-test.yml'
|
||||
- 'apps/examples/**'
|
||||
- 'example/**'
|
||||
- 'android/**'
|
||||
- 'src/**'
|
||||
- 'e2e/**'
|
||||
- 'package.json'
|
||||
# push:
|
||||
# branches:
|
||||
# - main
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
test:
|
||||
runs-on: macos-12
|
||||
timeout-minutes: 60
|
||||
env:
|
||||
WORKING_DIRECTORY: example
|
||||
API_LEVEL: 34
|
||||
SYSTEM_IMAGES: system-images;android-34;google_apis;x86_64
|
||||
AVD_NAME: rn-svg-avd
|
||||
concurrency:
|
||||
group: android-e2e-example-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'yarn'
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'zulu'
|
||||
cache: 'gradle'
|
||||
- name: Install NDK
|
||||
uses: nttld/setup-ndk@v1
|
||||
id: setup-ndk
|
||||
with:
|
||||
ndk-version: r26d
|
||||
local-cache: true
|
||||
- name: Set ANDROID_NDK
|
||||
run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV
|
||||
- name: Cache SDK image
|
||||
id: cache-sdk-img
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: $ANDROID_HOME/system-images/
|
||||
key: ${{ runner.os }}-build-system-images-${{ env.SYSTEM_IMAGES }}
|
||||
- name: SKDs - download required images
|
||||
if: ${{ steps.cache-sdd-img.outputs.cache-hit != 'true' }}
|
||||
run: $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "system-images;android-34;google_apis;x86_64"
|
||||
- name: Cache AVD
|
||||
id: cache-avd
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.android/avd/${{ env.AVD_NAME }}.avd
|
||||
key: ${{ runner.os }}-avd-images-${{ env.SYSTEM_IMAGES }}-${{ env.AVD_NAME }}
|
||||
- name: Emulator - Create
|
||||
if: ${{ steps.cache-avd.outputs.cache-hit != 'true' }}
|
||||
run: $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd -n ${{ env.AVD_NAME }} --device 28 --package "${{ env.SYSTEM_IMAGES }}" --sdcard 512M
|
||||
- name: Emulator - Set screen settings
|
||||
if: ${{ steps.cache-avd.outputs.cache-hit != 'true' }}
|
||||
run: |
|
||||
echo "AVD config path: $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini"
|
||||
sed -i '' 's/.*hw\.lcd\.density.*/hw\.lcd\.density = 480/g' $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini
|
||||
sed -i '' 's/.*hw\.lcd\.width.*/hw\.lcd\.width = 1344/g' $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini
|
||||
sed -i '' 's/.*hw\.lcd\.height.*/hw\.lcd\.height = 2992/g' $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini
|
||||
- name: Emulator - Boot
|
||||
run: $ANDROID_HOME/emulator/emulator -memory 4096 -avd ${{ env.AVD_NAME }} -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim &
|
||||
|
||||
- name: ADB Wait For Device
|
||||
run: adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;'
|
||||
timeout-minutes: 10
|
||||
|
||||
- name: Reverse TCP
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}
|
||||
run: adb devices | grep '\t' | awk '{print $1}' | sed 's/\\s//g' | xargs -I {} adb -s {} reverse tcp:8081 tcp:8081
|
||||
|
||||
- name: Install root node dependencies
|
||||
run: yarn
|
||||
|
||||
- name: Install example app node dependencies
|
||||
run: yarn
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}
|
||||
|
||||
- name: Build Android app
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}/android
|
||||
run: ./gradlew assembleDebug
|
||||
|
||||
- name: Start Metro server
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}
|
||||
run: E2E=true yarn start &> output.log &
|
||||
|
||||
- name: Install APK
|
||||
run: adb install -r ${{ env.WORKING_DIRECTORY }}/android/app/build/outputs/apk/debug/app-debug.apk
|
||||
|
||||
- name: Launch APK
|
||||
run: 'while ! (adb shell monkey -p com.example 1 | grep -q "Events injected: 1"); do sleep 1; echo "Retrying due to errors in previous run..."; done'
|
||||
|
||||
- name: Run e2e Tests
|
||||
run: E2E=true yarn e2e
|
||||
|
||||
- name: Upload test report
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: report
|
||||
path: |
|
||||
report.html
|
||||
jest-html-reporters-attach/
|
||||
|
||||
- name: Kill emulator (so it can be cached safely)
|
||||
run: adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done
|
||||
93
.github/workflows/ios-e2e.yml
vendored
Normal file
93
.github/workflows/ios-e2e.yml
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
name: Test iOS e2e
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/android-e2e-test.yml'
|
||||
- 'apps/examples/**'
|
||||
- 'example/**'
|
||||
- 'apple/**'
|
||||
- 'src/**'
|
||||
- 'e2e/**'
|
||||
- 'package.json'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
test:
|
||||
runs-on: macos-14
|
||||
timeout-minutes: 60
|
||||
env:
|
||||
WORKING_DIRECTORY: example
|
||||
DEVICE: iPhone 14 Pro
|
||||
XCODE_VERSION: latest-stable
|
||||
concurrency:
|
||||
group: ios-e2e-example-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Use latest stable Xcode
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: ${{ env.XCODE_VERSION }}
|
||||
|
||||
- name: Restore react-native-svg node_modules from cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: node_modules
|
||||
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
|
||||
restore-keys: ${{ runner.os }}-node-modules-svg-
|
||||
|
||||
- name: Install react-native-svg node_modules
|
||||
run: yarn install --frozen-lockfile
|
||||
|
||||
- name: Restore app node_modules from cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ env.WORKING_DIRECTORY }}/node_modules
|
||||
key: ${{ runner.os }}-node-modules-${{ env.WORKING_DIRECTORY }}-${{ hashFiles(format('{0}/yarn.lock', env.WORKING_DIRECTORY)) }}
|
||||
restore-keys: ${{ runner.os }}-node-modules-${{ env.WORKING_DIRECTORY }}-
|
||||
|
||||
- name: Install app node_modules
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}
|
||||
run: yarn install --frozen-lockfile
|
||||
|
||||
- name: Restore Pods from cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
${{ env.WORKING_DIRECTORY }}/ios/Pods
|
||||
~/Library/Caches/CocoaPods
|
||||
~/.cocoapods
|
||||
key: ${{ runner.os }}-pods-${{ env.WORKING_DIRECTORY }}-${{ hashFiles(format('{0}/ios/Podfile.lock', env.WORKING_DIRECTORY)) }}
|
||||
|
||||
- name: Install Pods
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}/ios
|
||||
run: pod install
|
||||
|
||||
- name: Restore build artifacts from cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/Library/Developer/Xcode/DerivedData
|
||||
key: ${{ runner.os }}-ios-derived-data-${{ env.WORKING_DIRECTORY }}-${{ hashFiles(format('{0}/ios/Podfile.lock', env.WORKING_DIRECTORY)) }}
|
||||
- name: Start Metro server
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}
|
||||
run: E2E=true yarn start &> output.log &
|
||||
|
||||
- name: Build app
|
||||
working-directory: ${{ env.WORKING_DIRECTORY }}
|
||||
run: E2E=true npx react-native@latest run-ios --simulator="${{ env.DEVICE }}" --mode Debug --verbose
|
||||
|
||||
- name: Run e2e Tests
|
||||
run: E2E=true yarn e2e
|
||||
|
||||
- name: Upload test report
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: report
|
||||
path: |
|
||||
report.html
|
||||
jest-html-reporters-attach/
|
||||
2
.github/workflows/windows-build-test.yml
vendored
2
.github/workflows/windows-build-test.yml
vendored
@@ -57,4 +57,4 @@ jobs:
|
||||
|
||||
- name: Build app
|
||||
working-directory: ${{ matrix.working-directory }}/windows
|
||||
run: npx react-native run-windows --logging --no-packager --no-deploy
|
||||
run: npx react-native run-windows --logging --no-packager --no-deploy --no-autolink
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -50,3 +50,6 @@ experimental/
|
||||
|
||||
# VS Code
|
||||
.vscode/
|
||||
|
||||
jest-html-reporters-attach/
|
||||
report.html
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# Contributing to React Native Svg
|
||||
|
||||
Thank you for helping out with react-native-svg!
|
||||
We'd like to make contributions as pleasant as possible, so here's a small guide of how we see it. Happy to hear your feedback about anything, so please let us know.
|
||||
We'd like to make contributions as pleasant as possible, so here's a small guide of how we see it. Happy to hear your
|
||||
feedback about anything, so please let us know.
|
||||
|
||||
### Modifying react-native-svg
|
||||
|
||||
@@ -13,24 +14,51 @@ We'd like to make contributions as pleasant as possible, so here's a small guide
|
||||
|
||||
### Testing your changes
|
||||
|
||||
Add test example in [tests-example](https://github.com/react-native-svg/react-native-svg/tree/main/tests-example) concerning your change following the convention of `TestX.tsx` where `X` is your PR number.
|
||||
Add test example in [tests-example](https://github.com/react-native-svg/react-native-svg/tree/main/tests-example)
|
||||
concerning your change following the convention of `TestX.tsx` where `X` is your PR number.
|
||||
|
||||
## Tests
|
||||
|
||||
We use `typescript` for type checks, `eslint` with `prettier` for linting/formatting. All tests are run by github actions for all opened pull requests.
|
||||
We use `typescript` for type checks, `eslint` with `prettier` for linting/formatting. All tests are run by github
|
||||
actions for all opened pull requests.
|
||||
|
||||
- `yarn test`: Run all tests, except for e2e (see note below).
|
||||
- `yarn lint`: Run `eslint` check.
|
||||
- `yarn tsc`: Run `typescript` check.
|
||||
- `yarn jest`: Run `jest` type check.
|
||||
- `yarn e2e`: Run E2E tests (see section below)
|
||||
|
||||
Currently e2e tests exist here: https://github.com/msand/react-native-svg-e2e/
|
||||
### Running E2E tests:
|
||||
|
||||
> [!WARNING]
|
||||
> Reference images in this repository are generated with [pixel ratio](https://reactnative.dev/docs/pixelratio) = `3`.
|
||||
> Make sure to run tests on a device that also has pixel ratio equal 3. Otherwise tests will fail.
|
||||
> In order to use device with different pixel ratio, adjust it in `e2e/generateRefereces.ts` viewport and regenerate
|
||||
> references.
|
||||
|
||||
1. Navigate to the example application's directory and initiate the Metro server using the yarn start command.
|
||||
2. To run the example application on your preferred platform (note: currently only Android and iOS are supported),
|
||||
execute the command `yarn android` or `yarn ios` within the example app's directory.
|
||||
3. Start the Jest server by running `yarn e2e` in the project's root directory.
|
||||
4. In the example application, select the E2E tab.
|
||||
5. Allow the tests to complete.
|
||||
6. The test results, along with any differences (i.e. the actual rendered svg versus the reference image), can be viewed
|
||||
in the `e2e/diffs` directory.
|
||||
|
||||
### To add new E2E test cases, proceed as follows:
|
||||
|
||||
1. Put an SVG file of your selection into the `e2e/cases` directory.
|
||||
2. Execute `yarn generateE2eRefrences`. This action launches a headless Chrome browser via Puppeteer, capturing
|
||||
snapshots of all rendered SVGs as .png files. These files will serve as a reference during testing.
|
||||
3. Check the `e2e/references` directory to observe newly created .png files.
|
||||
4. When you rerun the E2E tests, the new test case(s) you've added will be incorporated.
|
||||
|
||||
## Sending a pull request
|
||||
|
||||
When you're sending a pull request:
|
||||
|
||||
- Communication is a key. If you want fix/add something, please consider either opening a new issue or finding an existing one so we can further discuss it.
|
||||
- Communication is a key. If you want fix/add something, please consider either opening a new issue or finding an
|
||||
existing one so we can further discuss it.
|
||||
- We prefer small pull requests focused on one change, as those are easier to test/check.
|
||||
- Please make sure that all tests are passing on your local machine.
|
||||
- Follow the template when opening a PR.
|
||||
@@ -43,7 +71,8 @@ Most notably prefixes you'll see:
|
||||
|
||||
- **fix**: Bug fixes
|
||||
- **feat**: New feature implemented
|
||||
- **chore**: Changes that are not affecting end user (CI config changes, scripts, ["grunt work"](https://stackoverflow.com/a/26944812/3510245))
|
||||
- **chore**: Changes that are not affecting end user (CI config changes,
|
||||
scripts, ["grunt work"](https://stackoverflow.com/a/26944812/3510245))
|
||||
- **docs**: Documentation changes.
|
||||
- **perf**: A code change that improves performance.
|
||||
- **refactor**: A code change that neither fixes a bug nor adds a feature.
|
||||
@@ -55,7 +84,8 @@ We use [release-it](https://github.com/release-it/release-it) to release new ver
|
||||
|
||||
## Reporting issues
|
||||
|
||||
You can report issues on our [bug tracker](https://github.com/react-native-community/react-native-svg/issues). Please search for existing issues and follow the issue template when opening one.
|
||||
You can report issues on our [bug tracker](https://github.com/react-native-community/react-native-svg/issues). Please
|
||||
search for existing issues and follow the issue template when opening one.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
94
__tests__/e2e/GeneralSvgRenderingTest.spec.tsx
Normal file
94
__tests__/e2e/GeneralSvgRenderingTest.spec.tsx
Normal file
@@ -0,0 +1,94 @@
|
||||
import { SvgFromXml } from 'react-native-svg';
|
||||
import * as fs from 'node:fs';
|
||||
import { compareImages, sendToDeviceAndReceive } from '../../e2e/helpers';
|
||||
import { HandshakeMessageData, RenderResponse } from '../../e2e/types';
|
||||
import path from 'path';
|
||||
import {
|
||||
addAttach as attachImageToReport,
|
||||
addMsg as addMessageToReport,
|
||||
} from 'jest-html-reporters/helper';
|
||||
import { PNG } from 'pngjs';
|
||||
import failedCases from '../../e2e/failedCases.json';
|
||||
import { verifyComparisons } from '../../e2e/matchTestCases';
|
||||
import { height, targetPixelRatio, width } from '../../e2e/env';
|
||||
|
||||
const testCases = fs.readdirSync(path.resolve('e2e', 'cases'));
|
||||
testCases.forEach((testCase) => {
|
||||
jest.setTimeout(90_000);
|
||||
test(`Web browser rendered SVG should have less than 0.05% differences between device rendered SVG (${testCase})`, async () => {
|
||||
await addMessageToReport({
|
||||
message: JSON.stringify({
|
||||
os: global.os,
|
||||
arch: global.arch,
|
||||
}),
|
||||
});
|
||||
const testCaseSvg = path.resolve('e2e', 'cases', testCase);
|
||||
|
||||
const svgXml = fs.readFileSync(testCaseSvg).toString('utf-8');
|
||||
const response = await sendToDeviceAndReceive<RenderResponse>({
|
||||
type: 'renderRequest',
|
||||
data: <SvgFromXml xml={svgXml} />,
|
||||
height,
|
||||
width,
|
||||
});
|
||||
|
||||
const referenceFilePath = path.resolve(
|
||||
'e2e',
|
||||
'references',
|
||||
testCase.replace('.svg', '.png')
|
||||
);
|
||||
const renderedFilePath = path.resolve(
|
||||
'e2e',
|
||||
'rendered',
|
||||
`${testCase.replace('.svg', '')}-${global.os}-${global.arch}-rendered.png`
|
||||
);
|
||||
const diffFilePath = path.resolve(
|
||||
'e2e',
|
||||
'diffs',
|
||||
`${testCase.replace('.svg', '')}-${global.os}-${global.arch}-diff.png`
|
||||
);
|
||||
const referenceFileBuffer = fs.readFileSync(referenceFilePath);
|
||||
const renderedDataBuffer = Buffer.from(response.data, 'base64');
|
||||
|
||||
// We use await everywhere instead Promise.all as we need to maintain order for ease of inspecting tests
|
||||
// Adding reference & rendered before comparison in case compareImages fails, so we can see why it failed
|
||||
await attachImageToReport({
|
||||
attach: fs.readFileSync(referenceFilePath),
|
||||
description: 'Reference image',
|
||||
bufferFormat: 'png',
|
||||
});
|
||||
await attachImageToReport({
|
||||
attach: PNG.sync.write(PNG.sync.read(renderedDataBuffer)),
|
||||
description: 'Actual rendered image',
|
||||
bufferFormat: 'png',
|
||||
});
|
||||
|
||||
// Compare reference file (from /e2e/references) with SVG rendered on actual device.
|
||||
// Reference files can be generated off of /e2e/cases with `yarn generateE2eReferences`.
|
||||
const amountOfDifferentPixels = compareImages(
|
||||
referenceFileBuffer,
|
||||
renderedDataBuffer,
|
||||
{
|
||||
width,
|
||||
height,
|
||||
pixelRatio: targetPixelRatio,
|
||||
diffFilePath,
|
||||
renderedFilePath,
|
||||
}
|
||||
);
|
||||
|
||||
await attachImageToReport({
|
||||
attach: fs.readFileSync(diffFilePath),
|
||||
description: 'Differences',
|
||||
bufferFormat: 'png',
|
||||
});
|
||||
|
||||
// Check if there is more than 0.5% different pixels in whole snapshot
|
||||
verifyComparisons(
|
||||
amountOfDifferentPixels,
|
||||
failedCases,
|
||||
global as unknown as HandshakeMessageData,
|
||||
testCase
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -7,45 +7,22 @@
|
||||
import React, {Component} from 'react';
|
||||
import {
|
||||
Dimensions,
|
||||
Modal,
|
||||
Platform,
|
||||
SafeAreaView,
|
||||
ScrollView,
|
||||
StyleSheet,
|
||||
Text,
|
||||
View,
|
||||
ScrollView,
|
||||
TouchableHighlight,
|
||||
TouchableOpacity,
|
||||
SafeAreaView,
|
||||
View,
|
||||
} from 'react-native';
|
||||
import {Modal, Platform} from 'react-native';
|
||||
import {Svg, Circle, Line} from 'react-native-svg';
|
||||
import {Circle, Line, Svg} from 'react-native-svg';
|
||||
|
||||
import * as examples from './src/examples';
|
||||
import {commonStyles} from './src/commonStyles';
|
||||
|
||||
const names: (keyof typeof examples)[] = [
|
||||
'Svg',
|
||||
'Stroking',
|
||||
'Path',
|
||||
'Line',
|
||||
'Rect',
|
||||
'Polygon',
|
||||
'Polyline',
|
||||
'Circle',
|
||||
'Ellipse',
|
||||
'G',
|
||||
'Text',
|
||||
'Gradients',
|
||||
'Clipping',
|
||||
'Image',
|
||||
'TouchEvents',
|
||||
'PanResponder',
|
||||
'Reusable',
|
||||
'Reanimated',
|
||||
'Transforms',
|
||||
'Markers',
|
||||
'Mask',
|
||||
'Filters',
|
||||
'FilterImage',
|
||||
];
|
||||
import E2eTestingView from './src/e2e';
|
||||
import * as examples from './src/examples';
|
||||
import {names} from './utils/names';
|
||||
|
||||
const initialState = {
|
||||
modal: false,
|
||||
@@ -88,25 +65,30 @@ export default class SvgExample extends Component {
|
||||
};
|
||||
|
||||
getExamples = () => {
|
||||
return names.map(name => {
|
||||
var icon;
|
||||
let example = examples[name];
|
||||
if (example) {
|
||||
icon = example.icon;
|
||||
}
|
||||
return (
|
||||
<TouchableHighlight
|
||||
style={styles.link}
|
||||
underlayColor="#ccc"
|
||||
key={`example-${name}`}
|
||||
onPress={() => this.show(name)}>
|
||||
<View style={commonStyles.cell}>
|
||||
{icon}
|
||||
<Text style={commonStyles.title}>{name}</Text>
|
||||
</View>
|
||||
</TouchableHighlight>
|
||||
);
|
||||
});
|
||||
return names
|
||||
.filter(el => {
|
||||
if (el !== 'E2E') return true;
|
||||
return Platform.OS === 'android' || Platform.OS === 'ios';
|
||||
})
|
||||
.map(name => {
|
||||
var icon;
|
||||
let example = examples[name as keyof typeof examples];
|
||||
if (example) {
|
||||
icon = example.icon;
|
||||
}
|
||||
return (
|
||||
<TouchableHighlight
|
||||
style={styles.link}
|
||||
underlayColor="#ccc"
|
||||
key={`example-${name}`}
|
||||
onPress={() => this.show(name as keyof typeof examples)}>
|
||||
<View style={commonStyles.cell}>
|
||||
{icon}
|
||||
<Text style={commonStyles.title}>{name}</Text>
|
||||
</View>
|
||||
</TouchableHighlight>
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
modalContent = () => (
|
||||
@@ -132,6 +114,12 @@ export default class SvgExample extends Component {
|
||||
);
|
||||
|
||||
render() {
|
||||
if (process.env.E2E) {
|
||||
console.log(
|
||||
'Opening E2E example, as E2E env is set to ' + process.env.E2E,
|
||||
);
|
||||
return <E2eTestingView />;
|
||||
}
|
||||
return (
|
||||
<SafeAreaView style={styles.container}>
|
||||
<Text style={commonStyles.welcome}>SVG library for React Apps</Text>
|
||||
|
||||
158
apps/examples/src/e2e/TestingView.tsx
Normal file
158
apps/examples/src/e2e/TestingView.tsx
Normal file
@@ -0,0 +1,158 @@
|
||||
import React, {
|
||||
Component,
|
||||
useCallback,
|
||||
useEffect,
|
||||
useRef,
|
||||
useState,
|
||||
} from 'react';
|
||||
import {Platform, Text, View} from 'react-native';
|
||||
import * as RNSVG from 'react-native-svg';
|
||||
import ViewShot from 'react-native-view-shot';
|
||||
|
||||
const address = ['ios', 'web'].includes(Platform.OS) ? 'localhost' : '10.0.2.2';
|
||||
const wsUri = `ws://${address}:7123`;
|
||||
|
||||
const TestingView = () => {
|
||||
const wrapperRef = useRef<ViewShot>(null);
|
||||
const [wsClient, setWsClient] = useState<WebSocket | null>(null);
|
||||
const [renderedContent, setRenderedContent] =
|
||||
useState<React.ReactElement | null>();
|
||||
const [readyToSnapshot, setReadyToSnapshot] = useState(false);
|
||||
const [resolution, setResolution] = useState([0, 0]); // placeholder value, later updated by incoming render requests
|
||||
const [message, setMessage] = useState('⏳ Connecting to Jest server...');
|
||||
|
||||
const connect = useCallback(() => {
|
||||
const client = new WebSocket(wsUri);
|
||||
setWsClient(client);
|
||||
setMessage('⏳ Connecting to Jest server...');
|
||||
client.onopen = () => {
|
||||
client.send(
|
||||
JSON.stringify({
|
||||
os: Platform.OS,
|
||||
version: Platform.Version,
|
||||
arch: isFabric() ? 'fabric' : 'paper',
|
||||
connectionTime: new Date(),
|
||||
}),
|
||||
);
|
||||
setMessage('✅ Connected to Jest server. Waiting for render requests.');
|
||||
};
|
||||
client.onerror = (err: any) => {
|
||||
if (!err.message) {
|
||||
return;
|
||||
}
|
||||
console.error(
|
||||
`Error while connecting to E2E WebSocket server at ${wsUri}: ${err.message}. Will retry in 3 seconds.`,
|
||||
);
|
||||
setMessage(
|
||||
`🚨 Failed to connect to Jest server at ${wsUri}: ${err.message}! Will retry in 3 seconds.`,
|
||||
);
|
||||
setTimeout(() => {
|
||||
connect();
|
||||
}, 3000);
|
||||
};
|
||||
client.onmessage = ({data: rawMessage}) => {
|
||||
const message = JSON.parse(rawMessage);
|
||||
if (message.type == 'renderRequest') {
|
||||
setMessage(`✅ Rendering tests, please don't close this tab.`);
|
||||
setResolution([message.width, message.height]);
|
||||
setRenderedContent(
|
||||
createElementFromObject(
|
||||
message.data.type || 'SvgFromXml',
|
||||
message.data.props,
|
||||
),
|
||||
);
|
||||
setReadyToSnapshot(true);
|
||||
}
|
||||
};
|
||||
client.onclose = event => {
|
||||
if (event.code == 1006 && event.reason) {
|
||||
// this is an error, let error handler take care of it
|
||||
return;
|
||||
}
|
||||
setMessage(
|
||||
`✅ Connection to Jest server has been closed. You can close this tab safely. (${event.code})`,
|
||||
);
|
||||
};
|
||||
}, [wsClient]);
|
||||
|
||||
// Create initial connection when rendering the view
|
||||
useEffect(connect, []);
|
||||
|
||||
// Whenever new content is rendered, send renderResponse with snapshot view
|
||||
useEffect(() => {
|
||||
if (!readyToSnapshot || !wrapperRef.current) {
|
||||
return;
|
||||
}
|
||||
wrapperRef.current.capture?.().then((value: string) => {
|
||||
wsClient?.send(
|
||||
JSON.stringify({
|
||||
type: 'renderResponse',
|
||||
data: value,
|
||||
}),
|
||||
);
|
||||
setReadyToSnapshot(false);
|
||||
});
|
||||
}, [wrapperRef, readyToSnapshot]);
|
||||
|
||||
return (
|
||||
<View>
|
||||
<Text style={{marginLeft: 'auto', marginRight: 'auto'}}>{message}</Text>
|
||||
<ViewShot
|
||||
ref={wrapperRef}
|
||||
style={{width: resolution[0], height: resolution[1]}}
|
||||
options={{result: 'base64'}}>
|
||||
{renderedContent}
|
||||
</ViewShot>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
class TestingViewWrapper extends Component {
|
||||
static title = 'E2E Testing';
|
||||
|
||||
render() {
|
||||
return <TestingView />;
|
||||
}
|
||||
}
|
||||
|
||||
const samples = [TestingViewWrapper];
|
||||
const icon = (
|
||||
<RNSVG.Svg height="30" width="30" viewBox="0 0 20 20">
|
||||
<RNSVG.Circle
|
||||
cx="10"
|
||||
cy="10"
|
||||
r="8"
|
||||
stroke="purple"
|
||||
strokeWidth="1"
|
||||
fill="pink"
|
||||
/>
|
||||
</RNSVG.Svg>
|
||||
);
|
||||
|
||||
function isFabric(): boolean {
|
||||
// @ts-expect-error nativeFabricUIManager is not yet included in the RN types
|
||||
return !!global?.nativeFabricUIManager;
|
||||
}
|
||||
|
||||
export {samples, icon};
|
||||
|
||||
const createElementFromObject = (
|
||||
element: keyof typeof RNSVG,
|
||||
props: any,
|
||||
): React.ReactElement => {
|
||||
const children: any[] = [];
|
||||
if (props.children) {
|
||||
if (Array.isArray(props.children)) {
|
||||
props?.children.forEach((child: {type: any; props: any}) =>
|
||||
children.push(createElementFromObject(child.type, child?.props)),
|
||||
);
|
||||
} else if (typeof props.children === 'object') {
|
||||
children.push(
|
||||
createElementFromObject(props.children.type, props.children?.props),
|
||||
);
|
||||
} else {
|
||||
children.push(props.children);
|
||||
}
|
||||
}
|
||||
return React.createElement(RNSVG[element] as any, {...props, children});
|
||||
};
|
||||
3
apps/examples/src/e2e/index.macos.tsx
Normal file
3
apps/examples/src/e2e/index.macos.tsx
Normal file
@@ -0,0 +1,3 @@
|
||||
export default function () {
|
||||
return null;
|
||||
}
|
||||
8
apps/examples/src/e2e/index.tsx
Normal file
8
apps/examples/src/e2e/index.tsx
Normal file
@@ -0,0 +1,8 @@
|
||||
import React from 'react';
|
||||
import {SafeAreaView} from 'react-native';
|
||||
import {samples} from './TestingView';
|
||||
|
||||
export default function () {
|
||||
const e2eTab = React.createElement(samples[0]);
|
||||
return <SafeAreaView>{e2eTab}</SafeAreaView>;
|
||||
}
|
||||
3
apps/examples/src/e2e/index.web.tsx
Normal file
3
apps/examples/src/e2e/index.web.tsx
Normal file
@@ -0,0 +1,3 @@
|
||||
export default function () {
|
||||
return null;
|
||||
}
|
||||
49
apps/examples/src/examples.macos.tsx
Normal file
49
apps/examples/src/examples.macos.tsx
Normal file
@@ -0,0 +1,49 @@
|
||||
import * as Svg from './examples/Svg';
|
||||
import * as Rect from './examples/Rect';
|
||||
import * as Circle from './examples/Circle';
|
||||
import * as Ellipse from './examples/Ellipse';
|
||||
import * as Line from './examples/Line';
|
||||
import * as Polygon from './examples/Polygon';
|
||||
import * as Polyline from './examples/Polyline';
|
||||
import * as Path from './examples/Path';
|
||||
import * as Text from './examples/Text';
|
||||
import * as G from './examples/G';
|
||||
import * as Stroking from './examples/Stroking';
|
||||
import * as Gradients from './examples/Gradients';
|
||||
import * as Clipping from './examples/Clipping';
|
||||
import * as Image from './examples/Image';
|
||||
import * as Reusable from './examples/Reusable';
|
||||
import * as TouchEvents from './examples/TouchEvents';
|
||||
import * as PanResponder from './examples/PanResponder';
|
||||
import * as Reanimated from './examples/Reanimated';
|
||||
import * as Transforms from './examples/Transforms';
|
||||
import * as Markers from './examples/Markers';
|
||||
import * as Mask from './examples/Mask';
|
||||
import * as Filters from './examples/Filters';
|
||||
import * as FilterImage from './examples/FilterImage';
|
||||
|
||||
export {
|
||||
Svg,
|
||||
Rect,
|
||||
Circle,
|
||||
Ellipse,
|
||||
Line,
|
||||
Polygon,
|
||||
Polyline,
|
||||
Path,
|
||||
Text,
|
||||
Stroking,
|
||||
G,
|
||||
Gradients,
|
||||
Clipping,
|
||||
Image,
|
||||
TouchEvents,
|
||||
Reusable,
|
||||
PanResponder,
|
||||
Reanimated,
|
||||
Transforms,
|
||||
Markers,
|
||||
Mask,
|
||||
Filters,
|
||||
FilterImage,
|
||||
};
|
||||
@@ -19,6 +19,7 @@ import * as Reanimated from './examples/Reanimated';
|
||||
import * as Transforms from './examples/Transforms';
|
||||
import * as Markers from './examples/Markers';
|
||||
import * as Mask from './examples/Mask';
|
||||
import * as E2E from './e2e/TestingView';
|
||||
import * as Filters from './examples/Filters';
|
||||
import * as FilterImage from './examples/FilterImage';
|
||||
|
||||
@@ -44,6 +45,7 @@ export {
|
||||
Transforms,
|
||||
Markers,
|
||||
Mask,
|
||||
E2E,
|
||||
Filters,
|
||||
FilterImage,
|
||||
};
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"moduleSuffixes": [".macos", ""]
|
||||
},
|
||||
"extends": "../../tsconfig.json",
|
||||
"include": ["**/*.ts", "**/*.tsx", "**/*.js"]
|
||||
}
|
||||
|
||||
28
apps/examples/utils/names.ts
Normal file
28
apps/examples/utils/names.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import {ExamplesKey} from './type';
|
||||
|
||||
export const names: ExamplesKey[] = [
|
||||
'Svg',
|
||||
'Stroking',
|
||||
'Path',
|
||||
'Line',
|
||||
'Rect',
|
||||
'Polygon',
|
||||
'Polyline',
|
||||
'Circle',
|
||||
'Ellipse',
|
||||
'G',
|
||||
'Text',
|
||||
'Gradients',
|
||||
'Clipping',
|
||||
'Image',
|
||||
'TouchEvents',
|
||||
'PanResponder',
|
||||
'Reusable',
|
||||
'Reanimated',
|
||||
'Transforms',
|
||||
'Markers',
|
||||
'Mask',
|
||||
'E2E',
|
||||
'Filters',
|
||||
'FilterImage',
|
||||
];
|
||||
3
apps/examples/utils/type.ts
Normal file
3
apps/examples/utils/type.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as examples from '../src/examples';
|
||||
|
||||
export type ExamplesKey = keyof typeof examples | 'E2E';
|
||||
1
e2e/cases/1.svg
Normal file
1
e2e/cases/1.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 32 KiB |
10
e2e/cases/2.svg
Normal file
10
e2e/cases/2.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="grad1">
|
||||
<stop offset="0%" stop-color="yellow" />
|
||||
<stop offset="100%" stop-color="red" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" />
|
||||
<text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">SVG</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 393 B |
28
e2e/cases/3.svg
Normal file
28
e2e/cases/3.svg
Normal file
@@ -0,0 +1,28 @@
|
||||
<svg viewBox="0 0 135 72" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_4916_16071)">
|
||||
<path d="M21.8791 70.772H133.563V21.879L112.633 0.94873H0.948853V49.8418L21.8791 70.772Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.111572 0.111572H112.979L134.4 21.5322V71.6093H21.5322L0.111572 50.1886V0.111572ZM1.78599 2.96998V49.495L21.0418 68.7508V22.2258L1.78599 2.96998ZM2.96998 1.78599L22.2258 21.0418H131.542L112.286 1.78599H2.96998ZM132.726 69.9348H22.7162V22.7162H132.726V69.9348Z" fill="#001A72"/>
|
||||
<path d="M42.4744 41.414C42.4744 43.0884 41.3582 44.5396 38.6791 44.5396C37.507 44.5396 36.5582 44.2605 35.7209 43.9256V41.5815C36.614 42.028 37.6744 42.307 38.6233 42.307C39.5163 42.307 39.9628 42.028 39.9628 41.5256C39.9628 39.9629 35.7209 40.4652 35.7209 37.2838C35.7209 35.3303 37.2837 34.1582 39.4605 34.1582C40.3535 34.1582 41.1907 34.3815 42.0837 34.8838V37.2838C40.9116 36.5582 40.0744 36.3349 39.4047 36.3349C38.6233 36.3349 38.1768 36.614 38.1768 37.1163C38.1209 38.5675 42.4744 38.0094 42.4744 41.414Z" fill="#001A72"/>
|
||||
<path d="M44.5953 39.3489C44.5953 36.5024 46.9395 34.1582 49.786 34.1582C52.6325 34.1582 54.9767 36.5024 54.9767 39.3489C54.9767 42.1954 52.6325 44.5396 49.786 44.5396C46.9395 44.4838 44.5953 42.1954 44.5953 39.3489ZM52.4093 39.3489C52.4093 37.7861 51.2372 36.614 49.786 36.614C48.3349 36.614 47.1628 37.7861 47.1628 39.3489C47.1628 40.9117 48.3349 42.0838 49.786 42.0838C51.2372 42.0838 52.4093 40.9117 52.4093 39.3489Z" fill="#001A72"/>
|
||||
<path d="M60.7814 33.5441V34.3813H64.0744L62.9582 36.7255H60.8372V44.3162H58.4372V36.6697H56.7628V34.3255H58.4372V33.3766C58.4372 30.3627 60 28.8557 62.4558 28.8557C63.0698 28.8557 63.6279 28.9673 64.1303 29.079V31.4232C63.6838 31.2557 63.1814 31.1999 62.6791 31.1999C61.3396 31.1999 60.7814 32.0929 60.7814 33.5441Z" fill="#001A72"/>
|
||||
<path d="M69.0976 36.6697V40.6325C69.0976 41.693 69.7116 42.1395 70.6604 42.1395C71.2744 42.1395 71.8883 41.972 72.3906 41.6372V44.093C71.7209 44.372 71.1069 44.5395 70.2139 44.5395C68.0372 44.5395 66.6976 43.3674 66.6976 40.9674V36.7255H65.2465V34.3813H66.6976V31.8139L69.0976 31.2V34.3813H72.3906V36.7255H69.0976V36.6697Z" fill="#001A72"/>
|
||||
<path d="M89.7487 34.3813L86.5673 44.3162H84.1673L81.9906 37.5069L79.758 44.3162H77.358L74.1766 34.3813H76.9115L78.6976 41.0232L80.8185 34.3813H83.2185L85.3394 41.0232L87.1255 34.3813C87.1255 34.3813 89.7487 34.3813 89.7487 34.3813Z" fill="#001A72"/>
|
||||
<path d="M90.9768 39.3489C90.9768 36.5024 93.0419 34.1582 95.8884 34.1582C97.0047 34.1582 97.8977 34.4931 98.5675 35.0512V34.3815H100.968V44.3163H98.6233V43.5349C97.9535 44.1489 97.0047 44.5396 95.8326 44.5396C93.0977 44.4838 90.9768 42.1954 90.9768 39.3489ZM98.7908 39.3489C98.7908 37.7861 97.6187 36.614 96.1675 36.614C94.7163 36.614 93.5443 37.7861 93.5443 39.3489C93.5443 40.9117 94.7163 42.0838 96.1675 42.0838C97.6187 42.0838 98.7908 40.9117 98.7908 39.3489Z" fill="#001A72"/>
|
||||
<path d="M104.372 34.3815H106.716V35.721C107.442 34.3815 108.781 34.1582 109.953 34.1582V37.0047C108.279 36.5582 106.772 37.507 106.772 39.628V44.2605H104.372V34.3815Z" fill="#001A72"/>
|
||||
<path d="M117.544 42.1954C118.493 42.1954 119.609 42.028 120.726 41.5815L119.498 44.0931C118.94 44.3163 118.102 44.5396 117.098 44.5396C113.581 44.5396 111.46 42.3629 111.46 39.3489C111.46 36.5024 113.581 34.1582 116.651 34.1582C118.716 34.1582 120.391 35.2187 121.06 36.5582V40.1861H114.028C114.363 41.3582 115.535 42.1954 117.544 42.1954ZM113.972 38.2884H119.163C118.828 37.1163 117.823 36.3908 116.54 36.3908C115.312 36.3908 114.363 37.1722 113.972 38.2884Z" fill="#001A72"/>
|
||||
<path d="M49.6186 52.6883V59.2185H47.2186V53.079C47.2186 52.0185 46.4372 51.4046 45.6559 51.4046C44.8186 51.4046 44.0931 52.0185 44.0931 53.079V59.2185H41.6931V53.079C41.6931 52.0185 40.9117 51.4046 40.1303 51.4046C39.2931 51.4046 38.5675 52.0185 38.5675 53.079V59.2185H36.1675V49.2837H38.5117V50.0092C39.0698 49.3395 39.7954 49.1162 40.7442 49.1162C41.8047 49.1162 42.6977 49.5627 43.3117 50.3999C44.0931 49.5069 45.0977 49.1162 46.3256 49.1162C48.1675 49.1162 49.6186 50.5674 49.6186 52.6883Z" fill="#001A72"/>
|
||||
<path d="M52.1301 54.251C52.1301 51.4045 54.1952 49.0603 57.0418 49.0603C58.158 49.0603 59.0511 49.3952 59.7208 49.9533V49.2836H62.1208V59.2184H59.7766V58.437C59.1069 59.051 58.158 59.4417 56.9859 59.4417C54.2511 59.4417 52.1301 57.0975 52.1301 54.251ZM59.9441 54.251C59.9441 52.6882 58.772 51.5161 57.3208 51.5161C55.8697 51.5161 54.6976 52.6882 54.6976 54.251C54.6976 55.8138 55.8697 56.9859 57.3208 56.9859C58.772 56.9859 59.9441 55.8138 59.9441 54.251Z" fill="#001A72"/>
|
||||
<path d="M65.4139 49.2836H67.7581V50.0091C68.4837 49.2836 69.4325 49.0603 70.3814 49.0603C72.4465 49.0603 74.1209 50.6231 74.1209 52.744V59.1626H71.7209V53.3022C71.7209 52.2417 70.8837 51.4045 69.8232 51.4045C68.7628 51.4045 67.9256 52.2417 67.9256 53.3022V59.2184H65.5256V49.2836H65.4139Z" fill="#001A72"/>
|
||||
<path d="M83.7768 56.3161C83.7768 57.9905 82.6605 59.4417 79.9815 59.4417C78.8094 59.4417 77.8605 59.1626 77.0233 58.8277V56.4836C77.9163 56.9301 78.9768 57.2091 79.9256 57.2091C80.8187 57.2091 81.2652 56.9301 81.2652 56.4277C81.2652 54.865 77.0233 55.3673 77.0233 52.1859C77.0233 50.2324 78.5861 49.0603 80.7628 49.0603C81.6559 49.0603 82.4931 49.2836 83.3861 49.7859V52.1859C82.214 51.4603 81.3768 51.237 80.707 51.237C79.9256 51.237 79.4791 51.5161 79.4791 52.0184C79.4233 53.5254 83.7768 52.9673 83.7768 56.3161Z" fill="#001A72"/>
|
||||
<path d="M88.9675 49.2837V59.2186H86.5675V49.2837H88.9675Z" fill="#001A72"/>
|
||||
<path d="M91.479 54.251C91.479 51.4045 93.8232 49.0603 96.6697 49.0603C99.5162 49.0603 101.86 51.4045 101.86 54.251C101.86 57.0975 99.5162 59.4417 96.6697 59.4417C93.8232 59.4417 91.479 57.0975 91.479 54.251ZM99.293 54.251C99.293 52.6882 98.1209 51.5161 96.6697 51.5161C95.2185 51.5161 94.0464 52.6882 94.0464 54.251C94.0464 55.8138 95.2185 56.9859 96.6697 56.9859C98.1209 56.9859 99.293 55.8138 99.293 54.251Z" fill="#001A72"/>
|
||||
<path d="M104.316 49.2836H106.66V50.0091C107.386 49.2836 108.335 49.0603 109.284 49.0603C111.349 49.0603 113.023 50.6231 113.023 52.744V59.1626H110.623V53.3022C110.623 52.2417 109.786 51.4045 108.726 51.4045C107.665 51.4045 106.828 52.2417 106.828 53.3022V59.2184H104.428V49.2836H104.316Z" fill="#001A72"/>
|
||||
<path d="M117.767 56.4836V56.8743H116.93V59.2185H116.484V56.8743H115.646V56.4836H117.767Z" fill="#001A72"/>
|
||||
<path d="M118.716 56.4836L119.609 58.6604L120.447 56.4836H121.005V59.2185H120.558V57.2092L119.721 59.2185H119.33L118.493 57.2092V59.2185H118.047V56.4836H118.716Z" fill="#001A72"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4916_16071">
|
||||
<rect width="134.512" height="72" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.5 KiB |
2
e2e/diffs/.gitignore
vendored
Normal file
2
e2e/diffs/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# This directory will contain difference images for each test after the tests are ran. Do not commit those.
|
||||
**
|
||||
4
e2e/env.ts
Normal file
4
e2e/env.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export const width = 200;
|
||||
export const height = 200;
|
||||
export const maxPixelDiff = width * height * 0.005;
|
||||
export const targetPixelRatio = 3.0;
|
||||
10
e2e/failedCases.json
Normal file
10
e2e/failedCases.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"ios": {
|
||||
"paper": [],
|
||||
"fabric": []
|
||||
},
|
||||
"android": {
|
||||
"paper": ["2"],
|
||||
"fabric": ["2"]
|
||||
}
|
||||
}
|
||||
35
e2e/generateReferences.ts
Normal file
35
e2e/generateReferences.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
const path = require('path');
|
||||
const puppeteer = require('puppeteer');
|
||||
const fs = require('fs');
|
||||
|
||||
const main = async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
await page.setViewport({
|
||||
height: 200,
|
||||
width: 200,
|
||||
// This is hardcoded value which makes it possible to use only devices with pixel ratio = 3. You can change it
|
||||
// and regenerate reference images if you want to use device with different pixel ratio
|
||||
// see: https://reactnative.dev/docs/pixelratio
|
||||
deviceScaleFactor: 3,
|
||||
});
|
||||
const casesPath = path.resolve('e2e', 'cases');
|
||||
const referencesPath = path.resolve('e2e', 'references');
|
||||
const cases = fs.readdirSync(casesPath);
|
||||
for (const testCase of cases) {
|
||||
const svgPath = path.resolve(casesPath, testCase);
|
||||
await page.goto(`file://${svgPath}`);
|
||||
await page.$eval('svg', (ev: Element) => {
|
||||
ev.setAttribute('width', '200');
|
||||
ev.setAttribute('height', '200');
|
||||
});
|
||||
const svg = await page.waitForSelector('svg');
|
||||
await svg.screenshot({
|
||||
path: path.resolve(referencesPath, testCase.replace('.svg', '.png')),
|
||||
});
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
};
|
||||
|
||||
main();
|
||||
12
e2e/globals.d.ts
vendored
Normal file
12
e2e/globals.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/* eslint-disable no-var */
|
||||
import { WebSocket as WsWebSocket, WebSocketServer } from 'ws';
|
||||
|
||||
declare global {
|
||||
namespace globalThis {
|
||||
// Leave it as var, changing to let will cause it not to work
|
||||
var server: WebSocketServer;
|
||||
var client: WsWebSocket;
|
||||
var os: string;
|
||||
var arch: string;
|
||||
}
|
||||
}
|
||||
57
e2e/helpers.ts
Normal file
57
e2e/helpers.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { E2EMessage } from './types';
|
||||
import { PNG } from 'pngjs';
|
||||
import fs from 'node:fs';
|
||||
import pixelmatch from 'pixelmatch';
|
||||
|
||||
const replacer = (key: string, value: any) => {
|
||||
if (key === 'type' && typeof value !== 'string') return value.displayName;
|
||||
return value;
|
||||
};
|
||||
|
||||
export const sendToDeviceAndReceive = <R>(message: E2EMessage) =>
|
||||
new Promise<R>((resolve) => {
|
||||
global.client.once('message', (message) => {
|
||||
const parsedMessage: E2EMessage = JSON.parse(message.toString('utf-8'));
|
||||
resolve(parsedMessage as R);
|
||||
});
|
||||
global.client.send(JSON.stringify(message, replacer));
|
||||
});
|
||||
|
||||
export const compareImages = (
|
||||
image1: Buffer,
|
||||
image2: Buffer,
|
||||
opts: {
|
||||
width: number;
|
||||
height: number;
|
||||
pixelRatio: number;
|
||||
diffFilePath?: string;
|
||||
renderedFilePath?: string;
|
||||
}
|
||||
) => {
|
||||
const referencePng = PNG.sync.read(image1);
|
||||
const responsePng = PNG.sync.read(image2);
|
||||
|
||||
const diffPng = new PNG({
|
||||
height: referencePng.height,
|
||||
width: referencePng.width,
|
||||
});
|
||||
|
||||
const pixelDiff = pixelmatch(
|
||||
referencePng.data,
|
||||
responsePng.data,
|
||||
diffPng.data,
|
||||
opts.width * opts.pixelRatio,
|
||||
opts.height * opts.pixelRatio,
|
||||
{
|
||||
// That #5f00a0 is the color of the diff pixels
|
||||
diffColor: [95, 0, 160],
|
||||
}
|
||||
);
|
||||
if (opts.renderedFilePath) {
|
||||
fs.writeFileSync(opts.renderedFilePath, PNG.sync.write(responsePng));
|
||||
}
|
||||
if (opts.diffFilePath) {
|
||||
fs.writeFileSync(opts.diffFilePath, PNG.sync.write(diffPng));
|
||||
}
|
||||
return pixelDiff;
|
||||
};
|
||||
30
e2e/matchTestCases.ts
Normal file
30
e2e/matchTestCases.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { maxPixelDiff, targetPixelRatio } from './env';
|
||||
// import { storeFailedResult } from './readFailedCases';
|
||||
import { FailedResults, HandshakeMessageData } from './types';
|
||||
|
||||
const extractSvgNumber = (testCase: string) => {
|
||||
const match = testCase.match(/(\d+)\.svg$/)!;
|
||||
return parseInt(match[1], 10).toString();
|
||||
};
|
||||
|
||||
export function verifyComparisons(
|
||||
amountOfDifferentPixels: number,
|
||||
failedCases: FailedResults,
|
||||
global: HandshakeMessageData,
|
||||
testCase: string
|
||||
) {
|
||||
// if (amountOfDifferentPixels > maxPixelDiff * targetPixelRatio) {
|
||||
// storeFailedResult(global.os, global.arch, matchTestCase(testCase));
|
||||
// }
|
||||
if (
|
||||
failedCases[global.os][global.arch].includes(extractSvgNumber(testCase))
|
||||
) {
|
||||
expect(amountOfDifferentPixels).toBeGreaterThan(
|
||||
maxPixelDiff * targetPixelRatio
|
||||
);
|
||||
} else {
|
||||
expect(amountOfDifferentPixels).toBeLessThan(
|
||||
maxPixelDiff * targetPixelRatio
|
||||
);
|
||||
}
|
||||
}
|
||||
56
e2e/readFailedCases.ts
Normal file
56
e2e/readFailedCases.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { Arch, OS } from './types';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
|
||||
const filePath = path.join(__dirname, 'failedCases.json');
|
||||
|
||||
function readFileOrCreateIfNotExists(filePath: string): object {
|
||||
try {
|
||||
if (fs.existsSync(filePath)) {
|
||||
const data = fs.readFileSync(filePath, 'utf8');
|
||||
return JSON.parse(data);
|
||||
} else {
|
||||
const emptyObject = {};
|
||||
fs.writeFileSync(filePath, JSON.stringify(emptyObject, null, 2), 'utf8');
|
||||
return emptyObject;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error occurred:', error);
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
interface UpdateFailedResults {
|
||||
ios?: {
|
||||
paper?: string[];
|
||||
fabric?: string[];
|
||||
};
|
||||
android?: { paper?: string[]; fabric?: string[] };
|
||||
}
|
||||
|
||||
export function storeFailedResult(
|
||||
platform: OS,
|
||||
architecture: Arch,
|
||||
value: string
|
||||
): void {
|
||||
try {
|
||||
const data = readFileOrCreateIfNotExists(filePath) as UpdateFailedResults;
|
||||
|
||||
if (!data[platform]) {
|
||||
data[platform] = {};
|
||||
}
|
||||
|
||||
if (!data[platform]?.[architecture]) {
|
||||
data[platform]![architecture] = [];
|
||||
}
|
||||
|
||||
if (!data[platform]?.[architecture]?.includes(value)) {
|
||||
data[platform]?.[architecture]?.push(value);
|
||||
}
|
||||
|
||||
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf8');
|
||||
console.log('Data updated successfully:', data);
|
||||
} catch (error) {
|
||||
console.error('Error occurred while updating the file:', error);
|
||||
}
|
||||
}
|
||||
BIN
e2e/references/1.png
Normal file
BIN
e2e/references/1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
e2e/references/2.png
Normal file
BIN
e2e/references/2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
e2e/references/3.png
Normal file
BIN
e2e/references/3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
3
e2e/rendered/.gitignore
vendored
Normal file
3
e2e/rendered/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# This directory will contain rendered images for each test after the tests are ran. Do not commit those.
|
||||
!.gitignore
|
||||
**
|
||||
35
e2e/setupJest.ts
Normal file
35
e2e/setupJest.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { WebSocketServer } from 'ws';
|
||||
|
||||
// This is little hack, we don't use syntax sugar with `async` here as we need to manually resolve promise
|
||||
// whenever a client connects using resolve callback. In result the Jest will wait until some device connects,
|
||||
// so it can be used to render test cases.
|
||||
const setupJest = () =>
|
||||
new Promise<void>((resolve) => {
|
||||
const wsServer = new WebSocketServer({ port: 7123 });
|
||||
wsServer.on('connection', (client) => {
|
||||
global.client = client;
|
||||
|
||||
// Add handler for one-time handshake message that confirms the client has connected properly
|
||||
client.once('message', (message) => {
|
||||
const parsedMessage = JSON.parse(message.toString('utf-8'));
|
||||
console.log(
|
||||
`[react-native-svg] Received handshake from a test client: ${JSON.stringify(
|
||||
parsedMessage
|
||||
)}`
|
||||
);
|
||||
|
||||
global.os = parsedMessage.os;
|
||||
global.arch = parsedMessage.arch;
|
||||
|
||||
console.log(`[react-native-svg] Running E2E test suites...\n`);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
console.log(
|
||||
'\n\n[react-native-svg] E2E WebSocket server is running, waiting for client connection. Run example app and select E2E from examples list.\n'
|
||||
);
|
||||
global.server = wsServer;
|
||||
});
|
||||
|
||||
export default setupJest;
|
||||
4
e2e/teardownJest.ts
Normal file
4
e2e/teardownJest.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export default () => {
|
||||
global.server.clients.forEach((client) => client.close(1000))
|
||||
global.server.close()
|
||||
};
|
||||
38
e2e/types.ts
Normal file
38
e2e/types.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
export type E2EMessage = HandshakeMessage | RenderRequest | RenderResponse;
|
||||
|
||||
export interface HandshakeMessage {
|
||||
type: 'handshake';
|
||||
data: {
|
||||
os: string;
|
||||
arch: 'paper' | 'fabric';
|
||||
platformVersion: string;
|
||||
};
|
||||
}
|
||||
|
||||
export type OS = 'ios' | 'android';
|
||||
export type Arch = 'paper' | 'fabric';
|
||||
export interface HandshakeMessageData {
|
||||
os: OS;
|
||||
arch: Arch;
|
||||
platformVersion: string;
|
||||
}
|
||||
|
||||
export interface RenderRequest {
|
||||
type: 'renderRequest';
|
||||
data: any;
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
export interface RenderResponse {
|
||||
type: 'renderResponse';
|
||||
data: string; // as base64
|
||||
}
|
||||
|
||||
export interface FailedResults {
|
||||
ios: {
|
||||
paper: string[];
|
||||
fabric: string[];
|
||||
};
|
||||
android: { paper: string[]; fabric: string[] };
|
||||
}
|
||||
@@ -2,6 +2,7 @@ module.exports = {
|
||||
presets: ['module:@react-native/babel-preset'],
|
||||
plugins: [
|
||||
'@babel/plugin-proposal-export-namespace-from',
|
||||
'module:react-native-dotenv',
|
||||
'react-native-reanimated/plugin',
|
||||
],
|
||||
};
|
||||
|
||||
@@ -935,6 +935,8 @@ PODS:
|
||||
- React-Mapbuffer (0.74.2):
|
||||
- glog
|
||||
- React-debug
|
||||
- react-native-view-shot (4.0.0-alpha.2):
|
||||
- React-Core
|
||||
- React-nativeconfig (0.74.2)
|
||||
- React-NativeModulesApple (0.74.2):
|
||||
- glog
|
||||
@@ -1185,7 +1187,7 @@ PODS:
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- RNSVG (15.5.0):
|
||||
- RNSVG (15.6.0):
|
||||
- React-Core
|
||||
- SocketRocket (0.7.0)
|
||||
- Yoga (0.0.0)
|
||||
@@ -1223,6 +1225,7 @@ DEPENDENCIES:
|
||||
- React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
|
||||
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
|
||||
- React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
|
||||
- react-native-view-shot (from `../node_modules/react-native-view-shot`)
|
||||
- React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
|
||||
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
|
||||
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
|
||||
@@ -1316,6 +1319,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/logger"
|
||||
React-Mapbuffer:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
react-native-view-shot:
|
||||
:path: "../node_modules/react-native-view-shot"
|
||||
React-nativeconfig:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
React-NativeModulesApple:
|
||||
@@ -1374,9 +1379,9 @@ SPEC CHECKSUMS:
|
||||
DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
|
||||
FBLazyVector: 4bc164e5b5e6cfc288d2b5ff28643ea15fa1a589
|
||||
fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
|
||||
glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
|
||||
glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f
|
||||
hermes-engine: 01d3e052018c2a13937aca1860fbedbccd4a41b7
|
||||
RCT-Folly: 045d6ecaa59d826c5736dfba0b2f4083ff8d79df
|
||||
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
|
||||
RCTDeprecation: b03c35057846b685b3ccadc9bfe43e349989cdb2
|
||||
RCTRequired: 194626909cfa8d39ca6663138c417bc6c431648c
|
||||
RCTTypeSafety: 552aff5b8e8341660594db00e53ac889682bc120
|
||||
@@ -1400,6 +1405,7 @@ SPEC CHECKSUMS:
|
||||
React-jsitracing: 0fa7f78d8fdda794667cb2e6f19c874c1cf31d7e
|
||||
React-logger: 29fa3e048f5f67fe396bc08af7606426d9bd7b5d
|
||||
React-Mapbuffer: bf56147c9775491e53122a94c423ac201417e326
|
||||
react-native-view-shot: 8ffbe24e3b5207d66816afb5b3c2ca82731ab636
|
||||
React-nativeconfig: 9f223cd321823afdecf59ed00861ab2d69ee0fc1
|
||||
React-NativeModulesApple: ff7efaff7098639db5631236cfd91d60abff04c0
|
||||
React-perflogger: 32ed45d9cee02cf6639acae34251590dccd30994
|
||||
@@ -1424,7 +1430,7 @@ SPEC CHECKSUMS:
|
||||
React-utils: 4476b7fcbbd95cfd002f3e778616155241d86e31
|
||||
ReactCommon: ecad995f26e0d1e24061f60f4e5d74782f003f12
|
||||
RNReanimated: 9c213184c27dc4a2ed7e9ff41a4b0b9258bb54f0
|
||||
RNSVG: b986585e367f4a49d8aa43065066cc9c290b3d9b
|
||||
RNSVG: 5da7a24f31968ec74f0b091e3440080f347e279b
|
||||
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
|
||||
Yoga: 2f71ecf38d934aecb366e686278102a51679c308
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"react-native": "0.74.2",
|
||||
"react-native-reanimated": "3.13.0",
|
||||
"react-native-svg": "link:../",
|
||||
"react-native-view-shot": "4.0.0-alpha.2",
|
||||
"react-native-windows": "0.74.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -40,6 +41,7 @@
|
||||
"patch-package": "^8.0.0",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"prettier": "2.8.8",
|
||||
"react-native-dotenv": "^3.4.11",
|
||||
"react-test-renderer": "18.2.0",
|
||||
"typescript": "5.0.4"
|
||||
},
|
||||
|
||||
51
example/patches/react-native-view-shot+4.0.0-alpha.2.patch
Normal file
51
example/patches/react-native-view-shot+4.0.0-alpha.2.patch
Normal file
@@ -0,0 +1,51 @@
|
||||
diff --git a/node_modules/react-native-view-shot/ios/RNViewShot.m b/node_modules/react-native-view-shot/ios/RNViewShot.m
|
||||
index bd55b92..6a20e9d 100644
|
||||
--- a/node_modules/react-native-view-shot/ios/RNViewShot.m
|
||||
+++ b/node_modules/react-native-view-shot/ios/RNViewShot.m
|
||||
@@ -106,7 +106,7 @@ - (dispatch_queue_t)methodQueue
|
||||
scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
|
||||
}
|
||||
|
||||
- UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size];
|
||||
+ UIGraphicsBeginImageContextWithOptions(size, NO, 0);
|
||||
|
||||
if (renderInContext) {
|
||||
// this comes with some trade-offs such as inability to capture gradients or scrollview's content in full but it works for large views
|
||||
@@ -117,8 +117,8 @@ - (dispatch_queue_t)methodQueue
|
||||
// this doesn't work for large views and reports incorrect success even though the image is blank
|
||||
success = [rendered drawViewHierarchyInRect:(CGRect){CGPointZero, size} afterScreenUpdates:YES];
|
||||
}
|
||||
-
|
||||
- UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {}];
|
||||
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
||||
+ UIGraphicsEndImageContext();
|
||||
|
||||
if (snapshotContentContainer) {
|
||||
// Restore scroll & frame
|
||||
@@ -152,11 +152,11 @@ - (dispatch_queue_t)methodQueue
|
||||
NSString *res = nil;
|
||||
if ([result isEqualToString:@"base64"]) {
|
||||
// Return as a base64 raw string
|
||||
- res = [data base64EncodedStringWithOptions: 0];
|
||||
+ res = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
|
||||
}
|
||||
else if ([result isEqualToString:@"data-uri"]) {
|
||||
// Return as a base64 data uri string
|
||||
- NSString *base64 = [data base64EncodedStringWithOptions: 0];
|
||||
+ NSString *base64 = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
|
||||
NSString *imageFormat = ([format isEqualToString:@"jpg"]) ? @"jpeg" : format;
|
||||
res = [NSString stringWithFormat:@"data:image/%@;base64,%@", imageFormat, base64];
|
||||
}
|
||||
diff --git a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
|
||||
index a6f4c00..1e9e6ce 100644
|
||||
--- a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
|
||||
+++ b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
|
||||
@@ -2,7 +2,7 @@ import type { TurboModule } from 'react-native';
|
||||
import { TurboModuleRegistry } from 'react-native';
|
||||
|
||||
export interface Spec extends TurboModule {
|
||||
- releaseCapture: () => string;
|
||||
+ releaseCapture: (uri: string) => void;
|
||||
captureRef: (tag: number, options: Object) => Promise<string>
|
||||
captureScreen: (options: Object) => Promise<string>;
|
||||
}
|
||||
@@ -3217,6 +3217,11 @@ balanced-match@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
base64-arraybuffer@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
|
||||
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
|
||||
|
||||
base64-js@^1.3.1, base64-js@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
@@ -3641,6 +3646,13 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
|
||||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
css-line-break@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
|
||||
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
|
||||
dependencies:
|
||||
utrie "^1.0.2"
|
||||
|
||||
css-select@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
|
||||
@@ -3841,6 +3853,11 @@ domutils@^3.0.1:
|
||||
domelementtype "^2.3.0"
|
||||
domhandler "^5.0.3"
|
||||
|
||||
dotenv@^16.4.5:
|
||||
version "16.4.5"
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
|
||||
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
|
||||
|
||||
ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
@@ -4757,6 +4774,14 @@ html-escaper@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
|
||||
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
|
||||
|
||||
html2canvas@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
|
||||
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
|
||||
dependencies:
|
||||
css-line-break "^2.1.0"
|
||||
text-segmentation "^1.0.3"
|
||||
|
||||
http-errors@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
||||
@@ -7060,6 +7085,13 @@ react-is@^17.0.1:
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
|
||||
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
|
||||
|
||||
react-native-dotenv@^3.4.11:
|
||||
version "3.4.11"
|
||||
resolved "https://registry.yarnpkg.com/react-native-dotenv/-/react-native-dotenv-3.4.11.tgz#2e6c4eabd55d5f1bf109b3dd9141dadf9c55cdd4"
|
||||
integrity sha512-6vnIE+WHABSeHCaYP6l3O1BOEhWxKH6nHAdV7n/wKn/sciZ64zPPp2NUdEUf1m7g4uuzlLbjgr+6uDt89q2DOg==
|
||||
dependencies:
|
||||
dotenv "^16.4.5"
|
||||
|
||||
react-native-reanimated@3.13.0:
|
||||
version "3.13.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.13.0.tgz#723687cd6ff4ce674800299c6917e4a3b088d89e"
|
||||
@@ -7078,6 +7110,13 @@ react-native-reanimated@3.13.0:
|
||||
version "0.0.0"
|
||||
uid ""
|
||||
|
||||
react-native-view-shot@4.0.0-alpha.2:
|
||||
version "4.0.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-4.0.0-alpha.2.tgz#389f5323722c3acad1c002bf4f0f0539fd2508c9"
|
||||
integrity sha512-BNQ+FoOUrB2Y6zxwhSZtZMMXVLewN2Ic8y5gS+5Y7hdgphqWmlHZIGbcLn/NmJS+soz0Pe3WO1sM5vX6u7h6VQ==
|
||||
dependencies:
|
||||
html2canvas "^1.4.1"
|
||||
|
||||
react-native-windows@0.74.9:
|
||||
version "0.74.9"
|
||||
resolved "https://registry.yarnpkg.com/react-native-windows/-/react-native-windows-0.74.9.tgz#2abcc8eb99a4ce0ce80dfe2dea8ce249b8e21469"
|
||||
@@ -7937,6 +7976,13 @@ test-exclude@^6.0.0:
|
||||
glob "^7.1.4"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
text-segmentation@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
|
||||
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
|
||||
dependencies:
|
||||
utrie "^1.0.2"
|
||||
|
||||
text-table@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
@@ -8173,6 +8219,13 @@ utils-merge@1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
||||
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
|
||||
|
||||
utrie@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
|
||||
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
|
||||
dependencies:
|
||||
base64-arraybuffer "^1.0.2"
|
||||
|
||||
uuid@^3.3.2:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
|
||||
@@ -1237,6 +1237,8 @@ PODS:
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- react-native-view-shot (4.0.0-alpha.2):
|
||||
- React-Core
|
||||
- React-nativeconfig (0.75.1)
|
||||
- React-NativeModulesApple (0.75.1):
|
||||
- glog
|
||||
@@ -1562,7 +1564,7 @@ PODS:
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- RNSVG (15.5.0):
|
||||
- RNSVG (15.6.0):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- hermes-engine
|
||||
@@ -1582,9 +1584,9 @@ PODS:
|
||||
- ReactCodegen
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNSVG/common (= 15.5.0)
|
||||
- RNSVG/common (= 15.6.0)
|
||||
- Yoga
|
||||
- RNSVG/common (15.5.0):
|
||||
- RNSVG/common (15.6.0):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- hermes-engine
|
||||
@@ -1646,6 +1648,7 @@ DEPENDENCIES:
|
||||
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
|
||||
- React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
|
||||
- React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
|
||||
- react-native-view-shot (from `../node_modules/react-native-view-shot`)
|
||||
- React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
|
||||
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
|
||||
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
|
||||
@@ -1752,6 +1755,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
React-microtasksnativemodule:
|
||||
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
|
||||
react-native-view-shot:
|
||||
:path: "../node_modules/react-native-view-shot"
|
||||
React-nativeconfig:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
React-NativeModulesApple:
|
||||
@@ -1847,6 +1852,7 @@ SPEC CHECKSUMS:
|
||||
React-logger: 0a81d1a40650bbdafb255fe4616edb83feed0ee9
|
||||
React-Mapbuffer: b758bec0d9994c10a2841dfd5ec70673665fd3e2
|
||||
React-microtasksnativemodule: 988e6ed065c061554ec09fdbc47c1f7c7f6478fe
|
||||
react-native-view-shot: 8ffbe24e3b5207d66816afb5b3c2ca82731ab636
|
||||
React-nativeconfig: 7af2ccce165f86b233a9f9d63295f6207e62640e
|
||||
React-NativeModulesApple: db1c1ee9dda26c9e58d824b4100fed83add82ae9
|
||||
React-perflogger: 7c4e97b47d8bc58c03fad1a6b97d96181b59aa41
|
||||
@@ -1874,10 +1880,10 @@ SPEC CHECKSUMS:
|
||||
ReactCodegen: e9156d86a166f3e10dc8fb6160764048df3528bc
|
||||
ReactCommon: 3ae48fa4cfa7052a270c2150ececfc94e541fb8a
|
||||
RNReanimated: 070deccceef093bec96ac3f87ef8c7f361caf754
|
||||
RNSVG: 811ae7bc0e07e20acd704638214b0c5fad40f802
|
||||
RNSVG: 1079f96b39a35753d481a20e30603fd6fc4f6fa9
|
||||
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
|
||||
Yoga: 06fc4b2c3664ae0e278964b8fbcb0ee9d21f0a5a
|
||||
Yoga: d36331de5ab7fb61bc9d91fbbd76307464418323
|
||||
|
||||
PODFILE CHECKSUM: 313328930c1300de5979bee64deca30459b8453a
|
||||
|
||||
COCOAPODS: 1.14.3
|
||||
COCOAPODS: 1.15.2
|
||||
|
||||
@@ -7,13 +7,15 @@
|
||||
"ios": "react-native run-ios",
|
||||
"lint": "eslint .",
|
||||
"start": "react-native start",
|
||||
"test": "jest"
|
||||
"test": "jest",
|
||||
"postinstall": "patch-package"
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "18.3.1",
|
||||
"react-native": "0.75.1",
|
||||
"react-native-reanimated": "3.15.0",
|
||||
"react-native-svg": "link:../"
|
||||
"react-native-svg": "link:../",
|
||||
"react-native-view-shot": "4.0.0-alpha.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
@@ -29,6 +31,7 @@
|
||||
"eslint": "^8.19.0",
|
||||
"jest": "^29.6.3",
|
||||
"prettier": "2.8.8",
|
||||
"patch-package": "^8.0.0",
|
||||
"react-test-renderer": "18.3.1",
|
||||
"typescript": "5.0.4"
|
||||
},
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
diff --git a/node_modules/react-native-view-shot/ios/RNViewShot.m b/node_modules/react-native-view-shot/ios/RNViewShot.m
|
||||
index bd55b92..6a20e9d 100644
|
||||
--- a/node_modules/react-native-view-shot/ios/RNViewShot.m
|
||||
+++ b/node_modules/react-native-view-shot/ios/RNViewShot.m
|
||||
@@ -106,7 +106,7 @@ - (dispatch_queue_t)methodQueue
|
||||
scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
|
||||
}
|
||||
|
||||
- UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size];
|
||||
+ UIGraphicsBeginImageContextWithOptions(size, NO, 0);
|
||||
|
||||
if (renderInContext) {
|
||||
// this comes with some trade-offs such as inability to capture gradients or scrollview's content in full but it works for large views
|
||||
@@ -117,8 +117,8 @@ - (dispatch_queue_t)methodQueue
|
||||
// this doesn't work for large views and reports incorrect success even though the image is blank
|
||||
success = [rendered drawViewHierarchyInRect:(CGRect){CGPointZero, size} afterScreenUpdates:YES];
|
||||
}
|
||||
-
|
||||
- UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {}];
|
||||
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
||||
+ UIGraphicsEndImageContext();
|
||||
|
||||
if (snapshotContentContainer) {
|
||||
// Restore scroll & frame
|
||||
@@ -152,11 +152,11 @@ - (dispatch_queue_t)methodQueue
|
||||
NSString *res = nil;
|
||||
if ([result isEqualToString:@"base64"]) {
|
||||
// Return as a base64 raw string
|
||||
- res = [data base64EncodedStringWithOptions: 0];
|
||||
+ res = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
|
||||
}
|
||||
else if ([result isEqualToString:@"data-uri"]) {
|
||||
// Return as a base64 data uri string
|
||||
- NSString *base64 = [data base64EncodedStringWithOptions: 0];
|
||||
+ NSString *base64 = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
|
||||
NSString *imageFormat = ([format isEqualToString:@"jpg"]) ? @"jpeg" : format;
|
||||
res = [NSString stringWithFormat:@"data:image/%@;base64,%@", imageFormat, base64];
|
||||
}
|
||||
diff --git a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
|
||||
index a6f4c00..1e9e6ce 100644
|
||||
--- a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
|
||||
+++ b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
|
||||
@@ -2,7 +2,7 @@ import type { TurboModule } from 'react-native';
|
||||
import { TurboModuleRegistry } from 'react-native';
|
||||
|
||||
export interface Spec extends TurboModule {
|
||||
- releaseCapture: () => string;
|
||||
+ releaseCapture: (uri: string) => void;
|
||||
captureRef: (tag: number, options: Object) => Promise<string>
|
||||
captureScreen: (options: Object) => Promise<string>;
|
||||
}
|
||||
@@ -2624,6 +2624,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
||||
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
|
||||
|
||||
"@yarnpkg/lockfile@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
|
||||
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
|
||||
|
||||
abort-controller@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
|
||||
@@ -2848,6 +2853,11 @@ async-limiter@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
||||
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
||||
|
||||
at-least-node@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||
|
||||
available-typed-arrays@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
|
||||
@@ -2956,6 +2966,11 @@ balanced-match@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
base64-arraybuffer@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
|
||||
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
|
||||
|
||||
base64-js@^1.3.1, base64-js@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
@@ -2997,6 +3012,13 @@ braces@^3.0.2:
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
braces@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
|
||||
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
|
||||
dependencies:
|
||||
fill-range "^7.1.1"
|
||||
|
||||
browserslist@^4.22.2, browserslist@^4.23.0:
|
||||
version "4.23.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
|
||||
@@ -3146,7 +3168,7 @@ ci-info@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
|
||||
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
|
||||
|
||||
ci-info@^3.2.0:
|
||||
ci-info@^3.2.0, ci-info@^3.7.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
|
||||
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
|
||||
@@ -3353,6 +3375,13 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
|
||||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
css-line-break@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
|
||||
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
|
||||
dependencies:
|
||||
utrie "^1.0.2"
|
||||
|
||||
css-select@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
|
||||
@@ -4041,6 +4070,13 @@ fill-range@^7.0.1:
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
fill-range@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
||||
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
finalhandler@1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
|
||||
@@ -4086,6 +4122,13 @@ find-up@^5.0.0:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
find-yarn-workspace-root@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
|
||||
integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
|
||||
dependencies:
|
||||
micromatch "^4.0.2"
|
||||
|
||||
flat-cache@^3.0.4:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
|
||||
@@ -4131,6 +4174,16 @@ fs-extra@^8.1.0:
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^9.0.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
|
||||
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
|
||||
dependencies:
|
||||
at-least-node "^1.0.0"
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
@@ -4350,6 +4403,14 @@ html-escaper@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
|
||||
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
|
||||
|
||||
html2canvas@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
|
||||
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
|
||||
dependencies:
|
||||
css-line-break "^2.1.0"
|
||||
text-segmentation "^1.0.3"
|
||||
|
||||
http-errors@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
||||
@@ -5218,6 +5279,16 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
||||
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
||||
|
||||
json-stable-stringify@^1.0.2:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454"
|
||||
integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
isarray "^2.0.5"
|
||||
jsonify "^0.0.1"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
json5@^2.2.3:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
|
||||
@@ -5230,6 +5301,20 @@ jsonfile@^4.0.0:
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonfile@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
|
||||
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
|
||||
dependencies:
|
||||
universalify "^2.0.0"
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonify@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
|
||||
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
|
||||
|
||||
"jsx-ast-utils@^2.4.1 || ^3.0.0":
|
||||
version "3.3.5"
|
||||
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a"
|
||||
@@ -5252,6 +5337,13 @@ kind-of@^6.0.2:
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||
|
||||
klaw-sync@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
|
||||
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.11"
|
||||
|
||||
kleur@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
@@ -5594,6 +5686,14 @@ metro@0.80.8, metro@^0.80.3:
|
||||
ws "^7.5.1"
|
||||
yargs "^17.6.2"
|
||||
|
||||
micromatch@^4.0.2:
|
||||
version "4.0.7"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
|
||||
integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
|
||||
dependencies:
|
||||
braces "^3.0.3"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
micromatch@^4.0.4:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
|
||||
@@ -5870,7 +5970,7 @@ open@^6.2.0:
|
||||
dependencies:
|
||||
is-wsl "^1.1.0"
|
||||
|
||||
open@^7.0.3:
|
||||
open@^7.0.3, open@^7.4.2:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
|
||||
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
|
||||
@@ -5905,6 +6005,11 @@ ora@^5.4.1:
|
||||
strip-ansi "^6.0.0"
|
||||
wcwidth "^1.0.1"
|
||||
|
||||
os-tmpdir@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
|
||||
|
||||
p-limit@^2.0.0, p-limit@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
|
||||
@@ -5975,6 +6080,27 @@ parseurl@~1.3.3:
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
patch-package@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
|
||||
integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
|
||||
dependencies:
|
||||
"@yarnpkg/lockfile" "^1.1.0"
|
||||
chalk "^4.1.2"
|
||||
ci-info "^3.7.0"
|
||||
cross-spawn "^7.0.3"
|
||||
find-yarn-workspace-root "^2.0.0"
|
||||
fs-extra "^9.0.0"
|
||||
json-stable-stringify "^1.0.2"
|
||||
klaw-sync "^6.0.0"
|
||||
minimist "^1.2.6"
|
||||
open "^7.4.2"
|
||||
rimraf "^2.6.3"
|
||||
semver "^7.5.3"
|
||||
slash "^2.0.0"
|
||||
tmp "^0.0.33"
|
||||
yaml "^2.2.2"
|
||||
|
||||
path-exists@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
||||
@@ -6183,6 +6309,13 @@ react-native-reanimated@3.15.0:
|
||||
version "0.0.0"
|
||||
uid ""
|
||||
|
||||
react-native-view-shot@4.0.0-alpha.2:
|
||||
version "4.0.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-4.0.0-alpha.2.tgz#389f5323722c3acad1c002bf4f0f0539fd2508c9"
|
||||
integrity sha512-BNQ+FoOUrB2Y6zxwhSZtZMMXVLewN2Ic8y5gS+5Y7hdgphqWmlHZIGbcLn/NmJS+soz0Pe3WO1sM5vX6u7h6VQ==
|
||||
dependencies:
|
||||
html2canvas "^1.4.1"
|
||||
|
||||
react-native@0.75.1:
|
||||
version "0.75.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.75.1.tgz#0b7738bbfa44afe5895b1c02ec737c9d1bc19dcb"
|
||||
@@ -6432,6 +6565,13 @@ reusify@^1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||
|
||||
rimraf@^2.6.3:
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
|
||||
@@ -6636,6 +6776,11 @@ sisteransi@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
||||
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
|
||||
|
||||
slash@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
|
||||
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
|
||||
|
||||
slash@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
|
||||
@@ -6883,6 +7028,13 @@ test-exclude@^6.0.0:
|
||||
glob "^7.1.4"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
text-segmentation@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
|
||||
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
|
||||
dependencies:
|
||||
utrie "^1.0.2"
|
||||
|
||||
text-table@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
@@ -6901,6 +7053,13 @@ through2@^2.0.1:
|
||||
readable-stream "~2.3.6"
|
||||
xtend "~4.0.1"
|
||||
|
||||
tmp@^0.0.33:
|
||||
version "0.0.33"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
||||
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
|
||||
dependencies:
|
||||
os-tmpdir "~1.0.2"
|
||||
|
||||
tmpl@1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
|
||||
@@ -7069,6 +7228,11 @@ universalify@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
||||
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
||||
|
||||
universalify@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
|
||||
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
|
||||
|
||||
unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||
@@ -7107,6 +7271,13 @@ utils-merge@1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
||||
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
|
||||
|
||||
utrie@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
|
||||
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
|
||||
dependencies:
|
||||
base64-arraybuffer "^1.0.2"
|
||||
|
||||
v8-to-istanbul@^9.0.1:
|
||||
version "9.2.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad"
|
||||
@@ -7314,6 +7485,11 @@ yaml@^2.2.1:
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed"
|
||||
integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==
|
||||
|
||||
yaml@^2.2.2:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
|
||||
integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
|
||||
|
||||
yargs-parser@^18.1.2:
|
||||
version "18.1.3"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||
|
||||
@@ -1066,7 +1066,7 @@ PODS:
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- RNSVG (15.5.0):
|
||||
- RNSVG (15.6.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- RCTRequired
|
||||
@@ -1084,9 +1084,9 @@ PODS:
|
||||
- React-utils
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNSVG/common (= 15.5.0)
|
||||
- RNSVG/common (= 15.6.0)
|
||||
- Yoga
|
||||
- RNSVG/common (15.5.0):
|
||||
- RNSVG/common (15.6.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- RCTRequired
|
||||
@@ -1325,7 +1325,7 @@ SPEC CHECKSUMS:
|
||||
React-utils: f0bb613a2b0a7f8011bdafb8ac098e30d4825256
|
||||
ReactCommon: 4afd22a8615d591e925c67434b6d947b9ae24ca8
|
||||
RNReanimated: 096c06ec3b073d0bb04f6dd1c99e40fad2d2fb31
|
||||
RNSVG: d0638e8b3bff721b712b4c128af78cda17b6165c
|
||||
RNSVG: 99ccf6fc927760cb39709ec16748c3a03b055597
|
||||
SocketRocket: f6c6249082c011e6de2de60ed641ef8bbe0cfac9
|
||||
Yoga: 35603207c576afc16e93625844f6d469ae6d5f03
|
||||
|
||||
|
||||
@@ -9,6 +9,21 @@ const config: Config.InitialOptions = {
|
||||
],
|
||||
preset: 'react-native',
|
||||
verbose: true,
|
||||
globalSetup: '<rootDir>/e2e/setupJest.ts',
|
||||
globalTeardown: '<rootDir>/e2e/teardownJest.ts',
|
||||
modulePathIgnorePatterns: [
|
||||
'lib/typescript',
|
||||
'helpers.ts|globals.d.ts|setupJest.ts|teardownJest.ts',
|
||||
],
|
||||
reporters: [
|
||||
'default',
|
||||
[
|
||||
'jest-html-reporters',
|
||||
{
|
||||
filename: 'report.html',
|
||||
},
|
||||
],
|
||||
],
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
||||
14
package.json
14
package.json
@@ -58,6 +58,8 @@
|
||||
"release": "npm login && release-it",
|
||||
"test": "npm run lint && npm run tsc",
|
||||
"tsc": "tsc --noEmit",
|
||||
"e2e": "jest e2e",
|
||||
"generateE2eReferences": "ts-node e2e/generateReferences.ts",
|
||||
"check-archs-consistency": "node ./scripts/codegen-check-consistency.js",
|
||||
"sync-archs": "node ./scripts/codegen-sync-archs.js"
|
||||
},
|
||||
@@ -78,7 +80,10 @@
|
||||
"@types/css-tree": "^1.0.3",
|
||||
"@types/jest": "^27.5.2",
|
||||
"@types/node": "*",
|
||||
"@types/pixelmatch": "^5.2.0",
|
||||
"@types/pngjs": "^6.0.5",
|
||||
"@types/react": "^18.2.18",
|
||||
"@types/ws": "^8.5.10",
|
||||
"@typescript-eslint/eslint-plugin": "^5.11.0",
|
||||
"@typescript-eslint/parser": "^5.11.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
@@ -96,18 +101,23 @@
|
||||
"eslint-plugin-standard": "^5.0.0",
|
||||
"husky": "^8.0.1",
|
||||
"jest": "^28.1.0",
|
||||
"jest-html-reporters": "^3.1.7",
|
||||
"lint-staged": "^13.0.3",
|
||||
"peggy": "4.0.3",
|
||||
"pegjs": "^0.10.0",
|
||||
"pixelmatch": "5.3.0",
|
||||
"pngjs": "^7.0.0",
|
||||
"prettier": "3.0.1",
|
||||
"puppeteer": "^22.12.1",
|
||||
"react": "^18.2.0",
|
||||
"react-native": "^0.72.3",
|
||||
"react-native-builder-bob": "^0.20.4",
|
||||
"react-native-windows": "^0.72.4",
|
||||
"react-test-renderer": "^18.2.0",
|
||||
"release-it": "^14.12.5",
|
||||
"ts-node": "^10.8.0",
|
||||
"typescript": "^5.1.6"
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.1.6",
|
||||
"ws": "^8.18.0"
|
||||
},
|
||||
"lint-staged": {
|
||||
"{src,Example}/**/*.{js,ts,tsx}": "yarn format-js",
|
||||
|
||||
@@ -1070,7 +1070,7 @@ PODS:
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- React-Core
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNSVG (15.5.0):
|
||||
- RNSVG (15.6.0):
|
||||
- React-Core
|
||||
- SocketRocket (0.7.0)
|
||||
- Yoga (1.14.0)
|
||||
@@ -1294,7 +1294,7 @@ SPEC CHECKSUMS:
|
||||
React-utils: f0bb613a2b0a7f8011bdafb8ac098e30d4825256
|
||||
ReactCommon: cd9602a38f340d44b1cca3ad06d6f13106a46dd0
|
||||
RNReanimated: ba95f6d26ca4b8a8f7f2b15f62a3513750762f6b
|
||||
RNSVG: b986585e367f4a49d8aa43065066cc9c290b3d9b
|
||||
RNSVG: 5da7a24f31968ec74f0b091e3440080f347e279b
|
||||
SocketRocket: f6c6249082c011e6de2de60ed641ef8bbe0cfac9
|
||||
Yoga: 35603207c576afc16e93625844f6d469ae6d5f03
|
||||
|
||||
|
||||
@@ -1058,7 +1058,7 @@ PODS:
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- React-Core
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNSVG (15.3.0):
|
||||
- RNSVG (15.6.0):
|
||||
- React-Core
|
||||
- SocketRocket (0.6.1)
|
||||
- Yoga (1.14.0)
|
||||
@@ -1278,10 +1278,10 @@ SPEC CHECKSUMS:
|
||||
React-utils: debda2c206770ee2785bdebb7f16d8db9f18838a
|
||||
ReactCommon: ddb128564dcbfa0287d3d1a2d10f8c7457c971f6
|
||||
RNReanimated: 2fb8bf314df48f4968d9080aec46c47eb44a446a
|
||||
RNSVG: a48668fd382115bc89761ce291a81c4ca5f2fd2e
|
||||
RNSVG: 5da7a24f31968ec74f0b091e3440080f347e279b
|
||||
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
||||
Yoga: 2b33a7ac96c58cdaa7b810948fc6a2a76ed2d108
|
||||
|
||||
PODFILE CHECKSUM: 0ddaec8b74c24b39086422661a8aeb46f68d0382
|
||||
PODFILE CHECKSUM: 867081623c4821048817e3d8ade1e288af6d41a7
|
||||
|
||||
COCOAPODS: 1.15.2
|
||||
|
||||
@@ -21,5 +21,5 @@
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true
|
||||
},
|
||||
"include": ["src"]
|
||||
"include": ["src", "e2e", "__tests__/e2e/GeneralSvgRenderingTest.spec.tsx"]
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"react-native-reanimated": "3.13.0",
|
||||
"react-native-svg": "link:../",
|
||||
"react-native-svg-transformer": "^1.4.0",
|
||||
"react-native-view-shot": "3.8.0",
|
||||
"react-native-web": "0.19.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -33,6 +34,7 @@
|
||||
"@types/react-test-renderer": "^18.0.7",
|
||||
"jest": "^29.2.1",
|
||||
"jest-expo": "~51.0.3",
|
||||
"patch-package": "^8.0.0",
|
||||
"react-test-renderer": "18.2.0",
|
||||
"typescript": "~5.3.3"
|
||||
},
|
||||
|
||||
@@ -2358,6 +2358,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.13.tgz#ff34942667a4e19a9f4a0996a76814daac364cf3"
|
||||
integrity sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==
|
||||
|
||||
"@yarnpkg/lockfile@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
|
||||
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
|
||||
|
||||
abab@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
|
||||
@@ -2719,6 +2724,11 @@ balanced-match@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
base64-arraybuffer@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
|
||||
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
|
||||
|
||||
base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
@@ -2986,7 +2996,7 @@ ci-info@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
|
||||
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
|
||||
|
||||
ci-info@^3.2.0, ci-info@^3.3.0:
|
||||
ci-info@^3.2.0, ci-info@^3.3.0, ci-info@^3.7.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
|
||||
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
|
||||
@@ -3272,6 +3282,13 @@ css-in-js-utils@^3.1.0:
|
||||
dependencies:
|
||||
hyphenate-style-name "^1.0.3"
|
||||
|
||||
css-line-break@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
|
||||
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
|
||||
dependencies:
|
||||
utrie "^1.0.2"
|
||||
|
||||
css-select@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
|
||||
@@ -4079,7 +4096,7 @@ find-up@^5.0.0, find-up@~5.0.0:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
find-yarn-workspace-root@~2.0.0:
|
||||
find-yarn-workspace-root@^2.0.0, find-yarn-workspace-root@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
|
||||
integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
|
||||
@@ -4473,6 +4490,14 @@ html-escaper@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
|
||||
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
|
||||
|
||||
html2canvas@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
|
||||
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
|
||||
dependencies:
|
||||
css-line-break "^2.1.0"
|
||||
text-segmentation "^1.0.3"
|
||||
|
||||
http-errors@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
||||
@@ -5501,6 +5526,16 @@ json-schema-deref-sync@^0.13.0:
|
||||
traverse "~0.6.6"
|
||||
valid-url "~1.0.9"
|
||||
|
||||
json-stable-stringify@^1.0.2:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454"
|
||||
integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
isarray "^2.0.5"
|
||||
jsonify "^0.0.1"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
json5@^2.2.2, json5@^2.2.3:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
|
||||
@@ -5522,11 +5557,23 @@ jsonfile@^6.0.1:
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonify@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
|
||||
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
|
||||
|
||||
kind-of@^6.0.2:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||
|
||||
klaw-sync@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
|
||||
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.11"
|
||||
|
||||
kleur@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
@@ -6341,7 +6388,7 @@ open@^6.2.0:
|
||||
dependencies:
|
||||
is-wsl "^1.1.0"
|
||||
|
||||
open@^7.0.3:
|
||||
open@^7.0.3, open@^7.4.2:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
|
||||
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
|
||||
@@ -6512,6 +6559,27 @@ password-prompt@^1.0.4:
|
||||
ansi-escapes "^4.3.2"
|
||||
cross-spawn "^7.0.3"
|
||||
|
||||
patch-package@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
|
||||
integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
|
||||
dependencies:
|
||||
"@yarnpkg/lockfile" "^1.1.0"
|
||||
chalk "^4.1.2"
|
||||
ci-info "^3.7.0"
|
||||
cross-spawn "^7.0.3"
|
||||
find-yarn-workspace-root "^2.0.0"
|
||||
fs-extra "^9.0.0"
|
||||
json-stable-stringify "^1.0.2"
|
||||
klaw-sync "^6.0.0"
|
||||
minimist "^1.2.6"
|
||||
open "^7.4.2"
|
||||
rimraf "^2.6.3"
|
||||
semver "^7.5.3"
|
||||
slash "^2.0.0"
|
||||
tmp "^0.0.33"
|
||||
yaml "^2.2.2"
|
||||
|
||||
path-dirname@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
|
||||
@@ -6841,6 +6909,13 @@ react-native-svg-transformer@^1.4.0:
|
||||
version "0.0.0"
|
||||
uid ""
|
||||
|
||||
react-native-view-shot@3.8.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-3.8.0.tgz#1aa1905f0e79428ca32bf80c16fd4abc719c600b"
|
||||
integrity sha512-4cU8SOhMn3YQIrskh+5Q8VvVRxQOu8/s1M9NAL4z5BY1Rm0HXMWkQJ4N0XsZ42+Yca+y86ISF3LC5qdLPvPuiA==
|
||||
dependencies:
|
||||
html2canvas "^1.4.1"
|
||||
|
||||
react-native-web@0.19.11:
|
||||
version "0.19.11"
|
||||
resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.19.11.tgz#1b96ac3cea9af4e1280fd5fa3b606b471f66edc3"
|
||||
@@ -7113,7 +7188,7 @@ reusify@^1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||
|
||||
rimraf@^2.6.2:
|
||||
rimraf@^2.6.2, rimraf@^2.6.3:
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
@@ -7377,6 +7452,11 @@ sisteransi@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
||||
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
|
||||
|
||||
slash@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
|
||||
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
|
||||
|
||||
slash@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
|
||||
@@ -7851,6 +7931,13 @@ test-exclude@^6.0.0:
|
||||
glob "^7.1.4"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
text-segmentation@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
|
||||
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
|
||||
dependencies:
|
||||
utrie "^1.0.2"
|
||||
|
||||
text-table@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
@@ -8181,6 +8268,13 @@ utils-merge@1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
||||
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
|
||||
|
||||
utrie@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
|
||||
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
|
||||
dependencies:
|
||||
base64-arraybuffer "^1.0.2"
|
||||
|
||||
uuid@^7.0.3:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
|
||||
@@ -8502,6 +8596,11 @@ yaml@^2.2.1:
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e"
|
||||
integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==
|
||||
|
||||
yaml@^2.2.2:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
|
||||
integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
|
||||
|
||||
yargs-parser@^18.1.2:
|
||||
version "18.1.3"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||
|
||||
437
yarn.lock
437
yarn.lock
@@ -1853,6 +1853,20 @@
|
||||
dependencies:
|
||||
semver "7.6.0"
|
||||
|
||||
"@puppeteer/browsers@2.3.0":
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.3.0.tgz#791ea7d80450fea24eb19fb1d70c367ad4e08cae"
|
||||
integrity sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==
|
||||
dependencies:
|
||||
debug "^4.3.5"
|
||||
extract-zip "^2.0.1"
|
||||
progress "^2.0.3"
|
||||
proxy-agent "^6.4.0"
|
||||
semver "^7.6.3"
|
||||
tar-fs "^3.0.6"
|
||||
unbzip2-stream "^1.4.3"
|
||||
yargs "^17.7.2"
|
||||
|
||||
"@react-native-community/cli-clean@11.4.1":
|
||||
version "11.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.4.1.tgz#0155a02e4158c8a61ba3d7a2b08f3ebebed81906"
|
||||
@@ -2271,6 +2285,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
|
||||
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
|
||||
|
||||
"@tootallnate/quickjs-emscripten@^0.23.0":
|
||||
version "0.23.0"
|
||||
resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c"
|
||||
integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
|
||||
|
||||
"@tsconfig/node10@^1.0.7":
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
|
||||
@@ -2385,6 +2404,20 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
|
||||
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
|
||||
|
||||
"@types/pixelmatch@^5.2.0":
|
||||
version "5.2.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.6.tgz#fba6de304ac958495f27d85989f5c6bb7499a686"
|
||||
integrity sha512-wC83uexE5KGuUODn6zkm9gMzTwdY5L0chiK+VrKcDfEjzxh1uadlWTvOmAbCpnM9zx/Ww3f8uKlYQVnO/TrqVg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/pngjs@^6.0.5":
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-6.0.5.tgz#6dec2f7eb8284543ca4e423f3c09b119fa939ea3"
|
||||
integrity sha512-0k5eKfrA83JOZPppLtS2C7OUtyNAl2wKNxfyYl9Q5g9lPkgBl/9hNyAu6HuEH2J4XmIv2znEpkDd0SaZVxW6iQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/prettier@^2.1.5":
|
||||
version "2.7.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
|
||||
@@ -2418,6 +2451,13 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
|
||||
integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
|
||||
|
||||
"@types/ws@^8.5.10":
|
||||
version "8.5.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e"
|
||||
integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/yargs-parser@*":
|
||||
version "21.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
|
||||
@@ -2444,6 +2484,13 @@
|
||||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@types/yauzl@^2.9.1":
|
||||
version "2.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
|
||||
integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^5.11.0", "@typescript-eslint/eslint-plugin@^5.30.5":
|
||||
version "5.62.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db"
|
||||
@@ -2582,6 +2629,13 @@ agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2:
|
||||
dependencies:
|
||||
debug "4"
|
||||
|
||||
agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317"
|
||||
integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
|
||||
dependencies:
|
||||
debug "^4.3.4"
|
||||
|
||||
aggregate-error@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
|
||||
@@ -2853,7 +2907,7 @@ ast-types@0.15.2:
|
||||
dependencies:
|
||||
tslib "^2.0.1"
|
||||
|
||||
ast-types@^0.13.2:
|
||||
ast-types@^0.13.2, ast-types@^0.13.4:
|
||||
version "0.13.4"
|
||||
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
|
||||
integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==
|
||||
@@ -2909,6 +2963,11 @@ available-typed-arrays@^1.0.7:
|
||||
dependencies:
|
||||
possible-typed-array-names "^1.0.0"
|
||||
|
||||
b4a@^1.6.4:
|
||||
version "1.6.6"
|
||||
resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba"
|
||||
integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==
|
||||
|
||||
babel-core@^7.0.0-bridge.0:
|
||||
version "7.0.0-bridge.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
|
||||
@@ -3071,11 +3130,49 @@ balanced-match@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
bare-events@^2.0.0, bare-events@^2.2.0:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.4.2.tgz#3140cca7a0e11d49b3edc5041ab560659fd8e1f8"
|
||||
integrity sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==
|
||||
|
||||
bare-fs@^2.1.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-2.3.1.tgz#cdbd63dac7a552dfb2b87d18c822298d1efd213d"
|
||||
integrity sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==
|
||||
dependencies:
|
||||
bare-events "^2.0.0"
|
||||
bare-path "^2.0.0"
|
||||
bare-stream "^2.0.0"
|
||||
|
||||
bare-os@^2.1.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-2.4.0.tgz#5de5e3ba7704f459c9656629edca7cc736e06608"
|
||||
integrity sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==
|
||||
|
||||
bare-path@^2.0.0, bare-path@^2.1.0:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-2.1.3.tgz#594104c829ef660e43b5589ec8daef7df6cedb3e"
|
||||
integrity sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==
|
||||
dependencies:
|
||||
bare-os "^2.1.0"
|
||||
|
||||
bare-stream@^2.0.0:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.1.3.tgz#070b69919963a437cc9e20554ede079ce0a129b2"
|
||||
integrity sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==
|
||||
dependencies:
|
||||
streamx "^2.18.0"
|
||||
|
||||
base64-js@^1.1.2, base64-js@^1.3.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
basic-ftp@^5.0.2:
|
||||
version "5.0.5"
|
||||
resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0"
|
||||
integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
|
||||
|
||||
before-after-hook@^2.2.0:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
|
||||
@@ -3148,12 +3245,17 @@ bser@2.1.1:
|
||||
dependencies:
|
||||
node-int64 "^0.4.0"
|
||||
|
||||
buffer-crc32@~0.2.3:
|
||||
version "0.2.13"
|
||||
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
|
||||
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
|
||||
|
||||
buffer-from@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
||||
|
||||
buffer@^5.5.0:
|
||||
buffer@^5.2.1, buffer@^5.5.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||
@@ -3278,6 +3380,15 @@ chardet@^0.7.0:
|
||||
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
||||
|
||||
chromium-bidi@0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.6.2.tgz#91f9daa20984833b52221084480fbe0465b29c67"
|
||||
integrity sha512-4WVBa6ijmUTVr9cZD4eicQD8Mdy/HCX3bzEIYYpmk0glqYLoWH+LqQEvV9RpDRzoQSbY1KJHloYXbDMXMbDPhg==
|
||||
dependencies:
|
||||
mitt "3.0.1"
|
||||
urlpattern-polyfill "10.0.0"
|
||||
zod "3.23.8"
|
||||
|
||||
ci-info@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
|
||||
@@ -3603,6 +3714,16 @@ cosmiconfig@^7.0.1:
|
||||
path-type "^4.0.0"
|
||||
yaml "^1.10.0"
|
||||
|
||||
cosmiconfig@^9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
|
||||
integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
|
||||
dependencies:
|
||||
env-paths "^2.2.1"
|
||||
import-fresh "^3.3.0"
|
||||
js-yaml "^4.1.0"
|
||||
parse-json "^5.2.0"
|
||||
|
||||
create-require@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||
@@ -3667,6 +3788,11 @@ data-uri-to-buffer@3:
|
||||
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
|
||||
integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
|
||||
|
||||
data-uri-to-buffer@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b"
|
||||
integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
|
||||
|
||||
data-view-buffer@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
|
||||
@@ -3785,6 +3911,11 @@ define-data-property@^1.0.1, define-data-property@^1.1.4:
|
||||
es-errors "^1.3.0"
|
||||
gopd "^1.0.1"
|
||||
|
||||
define-lazy-prop@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
|
||||
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
|
||||
|
||||
define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
|
||||
@@ -3804,6 +3935,15 @@ degenerator@^3.0.2:
|
||||
esprima "^4.0.0"
|
||||
vm2 "^3.9.17"
|
||||
|
||||
degenerator@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5"
|
||||
integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==
|
||||
dependencies:
|
||||
ast-types "^0.13.4"
|
||||
escodegen "^2.1.0"
|
||||
esprima "^4.0.1"
|
||||
|
||||
del@^6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a"
|
||||
@@ -3857,6 +3997,11 @@ detect-newline@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
|
||||
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
|
||||
|
||||
devtools-protocol@0.0.1312386:
|
||||
version "0.0.1312386"
|
||||
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz#5ab824d6f1669ec6c6eb0fba047e73601d969052"
|
||||
integrity sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==
|
||||
|
||||
diagnostic-channel-publishers@1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.6.tgz#0e236cb4b7c4c81904b2e3741d0b16eff453dc5a"
|
||||
@@ -4008,6 +4153,11 @@ entities@^4.2.0:
|
||||
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
|
||||
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
|
||||
|
||||
env-paths@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
|
||||
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
|
||||
|
||||
envinfo@^7.5.0, envinfo@^7.7.2, envinfo@^7.8.1:
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31"
|
||||
@@ -4213,6 +4363,17 @@ escodegen@^1.8.1:
|
||||
optionalDependencies:
|
||||
source-map "~0.6.1"
|
||||
|
||||
escodegen@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
|
||||
integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
|
||||
dependencies:
|
||||
esprima "^4.0.1"
|
||||
estraverse "^5.2.0"
|
||||
esutils "^2.0.2"
|
||||
optionalDependencies:
|
||||
source-map "~0.6.1"
|
||||
|
||||
eslint-compat-utils@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4"
|
||||
@@ -4600,6 +4761,17 @@ external-editor@^3.0.3:
|
||||
iconv-lite "^0.4.24"
|
||||
tmp "^0.0.33"
|
||||
|
||||
extract-zip@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
|
||||
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
|
||||
dependencies:
|
||||
debug "^4.1.1"
|
||||
get-stream "^5.1.0"
|
||||
yauzl "^2.10.0"
|
||||
optionalDependencies:
|
||||
"@types/yauzl" "^2.9.1"
|
||||
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
@@ -4610,6 +4782,11 @@ fast-diff@^1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
|
||||
integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
|
||||
|
||||
fast-fifo@^1.2.0, fast-fifo@^1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
|
||||
integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
|
||||
|
||||
fast-glob@^3.1.1, fast-glob@^3.2.9:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
|
||||
@@ -4652,6 +4829,13 @@ fb-watchman@^2.0.0:
|
||||
dependencies:
|
||||
bser "2.1.1"
|
||||
|
||||
fd-slicer@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
|
||||
integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
|
||||
dependencies:
|
||||
pend "~1.2.0"
|
||||
|
||||
figures@^3.0.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
||||
@@ -4791,7 +4975,7 @@ fresh@0.5.2:
|
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
|
||||
|
||||
fs-extra@^10.1.0:
|
||||
fs-extra@^10.0.0, fs-extra@^10.1.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
||||
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
|
||||
@@ -4800,6 +4984,15 @@ fs-extra@^10.1.0:
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-extra@^11.2.0:
|
||||
version "11.2.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
|
||||
integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-extra@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
||||
@@ -4928,6 +5121,16 @@ get-uri@3:
|
||||
fs-extra "^8.1.0"
|
||||
ftp "^0.3.10"
|
||||
|
||||
get-uri@^6.0.1:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a"
|
||||
integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==
|
||||
dependencies:
|
||||
basic-ftp "^5.0.2"
|
||||
data-uri-to-buffer "^6.0.2"
|
||||
debug "^4.3.4"
|
||||
fs-extra "^11.2.0"
|
||||
|
||||
git-up@^4.0.0:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759"
|
||||
@@ -5196,6 +5399,14 @@ http-proxy-agent@^5.0.0:
|
||||
agent-base "6"
|
||||
debug "4"
|
||||
|
||||
http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1:
|
||||
version "7.0.2"
|
||||
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
|
||||
integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
|
||||
dependencies:
|
||||
agent-base "^7.1.0"
|
||||
debug "^4.3.4"
|
||||
|
||||
https-proxy-agent@5, https-proxy-agent@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
|
||||
@@ -5204,6 +5415,14 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0:
|
||||
agent-base "6"
|
||||
debug "4"
|
||||
|
||||
https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5:
|
||||
version "7.0.5"
|
||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2"
|
||||
integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==
|
||||
dependencies:
|
||||
agent-base "^7.0.2"
|
||||
debug "4"
|
||||
|
||||
human-signals@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
|
||||
@@ -5268,7 +5487,7 @@ import-fresh@^2.0.0:
|
||||
caller-path "^2.0.0"
|
||||
resolve-from "^3.0.0"
|
||||
|
||||
import-fresh@^3.2.1:
|
||||
import-fresh@^3.2.1, import-fresh@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
|
||||
@@ -5501,7 +5720,7 @@ is-directory@^0.3.1:
|
||||
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
|
||||
integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==
|
||||
|
||||
is-docker@^2.0.0:
|
||||
is-docker@^2.0.0, is-docker@^2.1.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
|
||||
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
|
||||
@@ -5752,7 +5971,7 @@ is-wsl@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
||||
integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==
|
||||
|
||||
is-wsl@^2.1.1:
|
||||
is-wsl@^2.1.1, is-wsl@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
||||
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
||||
@@ -6030,6 +6249,14 @@ jest-haste-map@^28.1.3:
|
||||
optionalDependencies:
|
||||
fsevents "^2.3.2"
|
||||
|
||||
jest-html-reporters@^3.1.7:
|
||||
version "3.1.7"
|
||||
resolved "https://registry.yarnpkg.com/jest-html-reporters/-/jest-html-reporters-3.1.7.tgz#d8cb6f5d15fd518e601841f90165f37765e7ff34"
|
||||
integrity sha512-GTmjqK6muQ0S0Mnksf9QkL9X9z2FGIpNSxC52E0PHDzjPQ1XDu2+XTI3B3FS43ZiUzD1f354/5FfwbNIBzT7ew==
|
||||
dependencies:
|
||||
fs-extra "^10.0.0"
|
||||
open "^8.0.3"
|
||||
|
||||
jest-leak-detector@^28.1.3:
|
||||
version "28.1.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d"
|
||||
@@ -6708,6 +6935,11 @@ lru-cache@^6.0.0:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
lru-cache@^7.14.1:
|
||||
version "7.18.3"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
|
||||
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
|
||||
|
||||
macos-release@^2.5.0:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.1.tgz#bccac4a8f7b93163a8d163b8ebf385b3c5f55bf9"
|
||||
@@ -7157,6 +7389,11 @@ minipass@^4.2.4:
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
|
||||
mitt@3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
|
||||
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
|
||||
|
||||
mkdirp@^0.5.1:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
|
||||
@@ -7447,6 +7684,15 @@ open@^6.2.0:
|
||||
dependencies:
|
||||
is-wsl "^1.1.0"
|
||||
|
||||
open@^8.0.3:
|
||||
version "8.4.2"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
|
||||
integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
|
||||
dependencies:
|
||||
define-lazy-prop "^2.0.0"
|
||||
is-docker "^2.1.1"
|
||||
is-wsl "^2.2.0"
|
||||
|
||||
optionator@^0.8.1:
|
||||
version "0.8.3"
|
||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
|
||||
@@ -7602,6 +7848,20 @@ pac-proxy-agent@^5.0.0:
|
||||
raw-body "^2.2.0"
|
||||
socks-proxy-agent "5"
|
||||
|
||||
pac-proxy-agent@^7.0.1:
|
||||
version "7.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz#0fb02496bd9fb8ae7eb11cfd98386daaac442f58"
|
||||
integrity sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==
|
||||
dependencies:
|
||||
"@tootallnate/quickjs-emscripten" "^0.23.0"
|
||||
agent-base "^7.0.2"
|
||||
debug "^4.3.4"
|
||||
get-uri "^6.0.1"
|
||||
http-proxy-agent "^7.0.0"
|
||||
https-proxy-agent "^7.0.5"
|
||||
pac-resolver "^7.0.1"
|
||||
socks-proxy-agent "^8.0.4"
|
||||
|
||||
pac-resolver@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7"
|
||||
@@ -7611,6 +7871,14 @@ pac-resolver@^5.0.0:
|
||||
ip "^1.1.5"
|
||||
netmask "^2.0.2"
|
||||
|
||||
pac-resolver@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6"
|
||||
integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==
|
||||
dependencies:
|
||||
degenerator "^5.0.0"
|
||||
netmask "^2.0.2"
|
||||
|
||||
package-json@^6.3.0:
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
|
||||
@@ -7740,6 +8008,11 @@ pegjs@^0.10.0:
|
||||
resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd"
|
||||
integrity sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow==
|
||||
|
||||
pend@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
|
||||
|
||||
picocolors@^1.0.0, picocolors@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
|
||||
@@ -7770,6 +8043,13 @@ pirates@^4.0.4, pirates@^4.0.6:
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
pixelmatch@5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a"
|
||||
integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==
|
||||
dependencies:
|
||||
pngjs "^6.0.0"
|
||||
|
||||
pkg-dir@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
|
||||
@@ -7791,6 +8071,16 @@ pkg-up@^3.1.0:
|
||||
dependencies:
|
||||
find-up "^3.0.0"
|
||||
|
||||
pngjs@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821"
|
||||
integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==
|
||||
|
||||
pngjs@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-7.0.0.tgz#a8b7446020ebbc6ac739db6c5415a65d17090e26"
|
||||
integrity sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==
|
||||
|
||||
possible-typed-array-names@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
|
||||
@@ -7866,6 +8156,11 @@ process-nextick-args@~2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||
|
||||
progress@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
||||
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
||||
|
||||
promise.allsettled@1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53"
|
||||
@@ -7926,7 +8221,21 @@ proxy-agent@5.0.0:
|
||||
proxy-from-env "^1.0.0"
|
||||
socks-proxy-agent "^5.0.0"
|
||||
|
||||
proxy-from-env@^1.0.0:
|
||||
proxy-agent@^6.4.0:
|
||||
version "6.4.0"
|
||||
resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d"
|
||||
integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==
|
||||
dependencies:
|
||||
agent-base "^7.0.2"
|
||||
debug "^4.3.4"
|
||||
http-proxy-agent "^7.0.1"
|
||||
https-proxy-agent "^7.0.3"
|
||||
lru-cache "^7.14.1"
|
||||
pac-proxy-agent "^7.0.1"
|
||||
proxy-from-env "^1.1.0"
|
||||
socks-proxy-agent "^8.0.2"
|
||||
|
||||
proxy-from-env@^1.0.0, proxy-from-env@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
||||
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
|
||||
@@ -7951,6 +8260,27 @@ pupa@^2.1.1:
|
||||
dependencies:
|
||||
escape-goat "^2.0.0"
|
||||
|
||||
puppeteer-core@22.14.0:
|
||||
version "22.14.0"
|
||||
resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-22.14.0.tgz#5bb466adba725c966b0a86f0337a476d4c68ebec"
|
||||
integrity sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw==
|
||||
dependencies:
|
||||
"@puppeteer/browsers" "2.3.0"
|
||||
chromium-bidi "0.6.2"
|
||||
debug "^4.3.5"
|
||||
devtools-protocol "0.0.1312386"
|
||||
ws "^8.18.0"
|
||||
|
||||
puppeteer@^22.12.1:
|
||||
version "22.14.0"
|
||||
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-22.14.0.tgz#11697c929f5d9d7eac5a3438a0ff12dc65aedcbe"
|
||||
integrity sha512-MGTR6/pM8zmWbTdazb6FKnwIihzsSEXBPH49mFFU96DNZpQOevCAZMnjBZGlZRGRzRK6aADCavR6SQtrbv5dQw==
|
||||
dependencies:
|
||||
"@puppeteer/browsers" "2.3.0"
|
||||
cosmiconfig "^9.0.0"
|
||||
devtools-protocol "0.0.1312386"
|
||||
puppeteer-core "22.14.0"
|
||||
|
||||
qs@^6.9.4:
|
||||
version "6.12.3"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754"
|
||||
@@ -7973,6 +8303,11 @@ queue-microtask@^1.2.2:
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
||||
|
||||
queue-tick@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142"
|
||||
integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==
|
||||
|
||||
queue@6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65"
|
||||
@@ -8592,7 +8927,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
|
||||
semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.1, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4:
|
||||
semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.1, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3:
|
||||
version "7.6.3"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
|
||||
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
|
||||
@@ -8774,7 +9109,16 @@ socks-proxy-agent@5, socks-proxy-agent@^5.0.0:
|
||||
debug "4"
|
||||
socks "^2.3.3"
|
||||
|
||||
socks@^2.3.3:
|
||||
socks-proxy-agent@^8.0.2, socks-proxy-agent@^8.0.4:
|
||||
version "8.0.4"
|
||||
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c"
|
||||
integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==
|
||||
dependencies:
|
||||
agent-base "^7.1.1"
|
||||
debug "^4.3.4"
|
||||
socks "^2.8.3"
|
||||
|
||||
socks@^2.3.3, socks@^2.8.3:
|
||||
version "2.8.3"
|
||||
resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5"
|
||||
integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
|
||||
@@ -8874,6 +9218,17 @@ stop-iteration-iterator@^1.0.0:
|
||||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
||||
streamx@^2.15.0, streamx@^2.18.0:
|
||||
version "2.18.0"
|
||||
resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.18.0.tgz#5bc1a51eb412a667ebfdcd4e6cf6a6fc65721ac7"
|
||||
integrity sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==
|
||||
dependencies:
|
||||
fast-fifo "^1.3.2"
|
||||
queue-tick "^1.0.1"
|
||||
text-decoder "^1.1.0"
|
||||
optionalDependencies:
|
||||
bare-events "^2.2.0"
|
||||
|
||||
strict-uri-encode@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
|
||||
@@ -9088,6 +9443,26 @@ supports-preserve-symlinks-flag@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
tar-fs@^3.0.6:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.6.tgz#eaccd3a67d5672f09ca8e8f9c3d2b89fa173f217"
|
||||
integrity sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==
|
||||
dependencies:
|
||||
pump "^3.0.0"
|
||||
tar-stream "^3.1.5"
|
||||
optionalDependencies:
|
||||
bare-fs "^2.1.1"
|
||||
bare-path "^2.1.0"
|
||||
|
||||
tar-stream@^3.1.5:
|
||||
version "3.1.7"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b"
|
||||
integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==
|
||||
dependencies:
|
||||
b4a "^1.6.4"
|
||||
fast-fifo "^1.2.0"
|
||||
streamx "^2.15.0"
|
||||
|
||||
temp@^0.8.4:
|
||||
version "0.8.4"
|
||||
resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2"
|
||||
@@ -9122,6 +9497,13 @@ test-exclude@^6.0.0:
|
||||
glob "^7.1.4"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
text-decoder@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.1.tgz#5df9c224cebac4a7977720b9f083f9efa1aefde8"
|
||||
integrity sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==
|
||||
dependencies:
|
||||
b4a "^1.6.4"
|
||||
|
||||
text-table@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
@@ -9140,7 +9522,7 @@ through2@^2.0.1:
|
||||
readable-stream "~2.3.6"
|
||||
xtend "~4.0.1"
|
||||
|
||||
through@^2.3.6:
|
||||
through@^2.3.6, through@^2.3.8:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
|
||||
@@ -9184,7 +9566,7 @@ tr46@~0.0.3:
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
|
||||
|
||||
ts-node@^10.8.0:
|
||||
ts-node@^10.9.2:
|
||||
version "10.9.2"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
|
||||
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
|
||||
@@ -9348,6 +9730,14 @@ unbox-primitive@^1.0.2:
|
||||
has-symbols "^1.0.3"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
unbzip2-stream@^1.4.3:
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
|
||||
integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
|
||||
dependencies:
|
||||
buffer "^5.2.1"
|
||||
through "^2.3.8"
|
||||
|
||||
unc-path-regex@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
|
||||
@@ -9455,6 +9845,11 @@ url-parse-lax@^3.0.0:
|
||||
dependencies:
|
||||
prepend-http "^2.0.0"
|
||||
|
||||
urlpattern-polyfill@10.0.0:
|
||||
version "10.0.0"
|
||||
resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec"
|
||||
integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==
|
||||
|
||||
use-sync-external-store@^1.0.0:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9"
|
||||
@@ -9721,6 +10116,11 @@ ws@^7, ws@^7.5.1:
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9"
|
||||
integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
|
||||
|
||||
ws@^8.18.0:
|
||||
version "8.18.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
|
||||
integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
|
||||
|
||||
xdg-basedir@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
|
||||
@@ -9843,7 +10243,7 @@ yargs@^16.2.0:
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^20.2.2"
|
||||
|
||||
yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2:
|
||||
yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2, yargs@^17.7.2:
|
||||
version "17.7.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
|
||||
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
|
||||
@@ -9856,6 +10256,14 @@ yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2:
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^21.1.1"
|
||||
|
||||
yauzl@^2.10.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
||||
integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
|
||||
dependencies:
|
||||
buffer-crc32 "~0.2.3"
|
||||
fd-slicer "~1.1.0"
|
||||
|
||||
yn@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
@@ -9865,3 +10273,8 @@ yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
zod@3.23.8:
|
||||
version "3.23.8"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
|
||||
integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
|
||||
|
||||
Reference in New Issue
Block a user