mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e10ba945f | ||
|
|
007a8e12b8 | ||
|
|
1be8c51173 | ||
|
|
9f9e1a41ca | ||
|
|
c967deaa2d | ||
|
|
55671c00e5 | ||
|
|
ce1620616c | ||
|
|
ab0d812cc6 | ||
|
|
5e2f3e018c | ||
|
|
45ae0b44d5 | ||
|
|
02b879b1e2 | ||
|
|
788dd2e681 | ||
|
|
3f8d1fa286 | ||
|
|
066128321d | ||
|
|
60a2706e97 | ||
|
|
d91a12bc8b | ||
|
|
111d013c03 | ||
|
|
7e14ec5177 |
@@ -0,0 +1,158 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
const {
|
||||
publishTemplate,
|
||||
verifyPublishedTemplate,
|
||||
} = require('../publishTemplate');
|
||||
|
||||
const mockRun = jest.fn();
|
||||
const mockSleep = jest.fn();
|
||||
const mockGetNpmPackageInfo = jest.fn();
|
||||
const silence = () => {};
|
||||
|
||||
jest.mock('../utils.js', () => ({
|
||||
log: silence,
|
||||
run: mockRun,
|
||||
sleep: mockSleep,
|
||||
getNpmPackageInfo: mockGetNpmPackageInfo,
|
||||
}));
|
||||
|
||||
const getMockGithub = () => ({
|
||||
rest: {
|
||||
actions: {
|
||||
createWorkflowDispatch: jest.fn(),
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
describe('#publishTemplate', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it('checks commits for magic #publish-package-to-npm&latest string and sets latest', async () => {
|
||||
mockRun.mockReturnValueOnce(`
|
||||
The commit message
|
||||
|
||||
#publish-packages-to-npm&latest`);
|
||||
|
||||
const github = getMockGithub();
|
||||
await publishTemplate(github, '0.76.0', true);
|
||||
expect(github.rest.actions.createWorkflowDispatch).toHaveBeenCalledWith({
|
||||
owner: 'react-native-community',
|
||||
repo: 'template',
|
||||
workflow_id: 'release.yaml',
|
||||
ref: '0.76-stable',
|
||||
inputs: {
|
||||
dry_run: true,
|
||||
is_latest_on_npm: true,
|
||||
version: '0.76.0',
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('pubished as is_latest_on_npm = false if missing magic string', async () => {
|
||||
mockRun.mockReturnValueOnce(`
|
||||
The commit message without magic
|
||||
`);
|
||||
|
||||
const github = getMockGithub();
|
||||
await publishTemplate(github, '0.76.0', false);
|
||||
expect(github.rest.actions.createWorkflowDispatch).toHaveBeenCalledWith({
|
||||
owner: 'react-native-community',
|
||||
repo: 'template',
|
||||
workflow_id: 'release.yaml',
|
||||
ref: '0.76-stable',
|
||||
inputs: {
|
||||
dry_run: false,
|
||||
is_latest_on_npm: false,
|
||||
version: '0.76.0',
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('#verifyPublishedTemplate', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it("waits on npm updating for version and not 'latest'", async () => {
|
||||
const NOT_LATEST = false;
|
||||
mockGetNpmPackageInfo
|
||||
// template@<version>
|
||||
.mockReturnValueOnce(Promise.reject('mock http/404'))
|
||||
.mockReturnValueOnce(Promise.resolve());
|
||||
mockSleep.mockReturnValueOnce(Promise.resolve()).mockImplementation(() => {
|
||||
throw new Error('Should not be called again!');
|
||||
});
|
||||
|
||||
const version = '0.77.0';
|
||||
await verifyPublishedTemplate(version, NOT_LATEST);
|
||||
|
||||
expect(mockGetNpmPackageInfo).toHaveBeenLastCalledWith(
|
||||
'@react-native-community/template',
|
||||
version,
|
||||
);
|
||||
});
|
||||
|
||||
it('waits on npm updating version and latest tag', async () => {
|
||||
const IS_LATEST = true;
|
||||
const version = '0.77.0';
|
||||
mockGetNpmPackageInfo
|
||||
// template@latest → unknown tag
|
||||
.mockReturnValueOnce(Promise.reject('mock http/404'))
|
||||
// template@latest != version → old tag
|
||||
.mockReturnValueOnce(Promise.resolve({version: '0.76.5'}))
|
||||
// template@latest == version → correct tag
|
||||
.mockReturnValueOnce(Promise.resolve({version}));
|
||||
mockSleep
|
||||
.mockReturnValueOnce(Promise.resolve())
|
||||
.mockReturnValueOnce(Promise.resolve())
|
||||
.mockImplementation(() => {
|
||||
throw new Error('Should not be called again!');
|
||||
});
|
||||
|
||||
await verifyPublishedTemplate(version, IS_LATEST);
|
||||
|
||||
expect(mockGetNpmPackageInfo).toHaveBeenCalledWith(
|
||||
'@react-native-community/template',
|
||||
'latest',
|
||||
);
|
||||
});
|
||||
|
||||
describe('timeouts', () => {
|
||||
let mockProcess;
|
||||
beforeEach(() => {
|
||||
mockProcess = jest.spyOn(process, 'exit').mockImplementation(code => {
|
||||
throw new Error(`process.exit(${code}) called!`);
|
||||
});
|
||||
});
|
||||
afterEach(() => mockProcess.mockRestore());
|
||||
it('will timeout if npm does not update package version after a set number of retries', async () => {
|
||||
const RETRIES = 2;
|
||||
mockGetNpmPackageInfo.mockReturnValue(Promise.reject('mock http/404'));
|
||||
mockSleep.mockReturnValue(Promise.resolve());
|
||||
await expect(() =>
|
||||
verifyPublishedTemplate('0.77.0', true, RETRIES),
|
||||
).rejects.toThrowError('process.exit(1) called!');
|
||||
expect(mockGetNpmPackageInfo).toHaveBeenCalledTimes(RETRIES);
|
||||
});
|
||||
|
||||
it('will timeout if npm does not update latest tag after a set number of retries', async () => {
|
||||
const RETRIES = 7;
|
||||
const IS_LATEST = true;
|
||||
mockGetNpmPackageInfo.mockReturnValue(
|
||||
Promise.resolve({version: '0.76.5'}),
|
||||
);
|
||||
mockSleep.mockReturnValue(Promise.resolve());
|
||||
await expect(async () => {
|
||||
await verifyPublishedTemplate('0.77.0', IS_LATEST, RETRIES);
|
||||
}).rejects.toThrowError('process.exit(1) called!');
|
||||
expect(mockGetNpmPackageInfo).toHaveBeenCalledTimes(RETRIES);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
const {run, sleep, getNpmPackageInfo, log} = require('./utils.js');
|
||||
|
||||
const TAG_AS_LATEST_REGEX = /#publish-packages-to-npm&latest/;
|
||||
|
||||
/**
|
||||
* Should this commit be `latest` on npm?
|
||||
*/
|
||||
function isLatest() {
|
||||
const commitMessage = run('git log -n1 --pretty=%B');
|
||||
return TAG_AS_LATEST_REGEX.test(commitMessage);
|
||||
}
|
||||
module.exports.isLatest = isLatest;
|
||||
|
||||
/**
|
||||
* Create a Github Action to publish the community template matching the released version
|
||||
* of React Native.
|
||||
*/
|
||||
module.exports.publishTemplate = async (github, version, dryRun = true) => {
|
||||
log(`📤 Get the ${TEMPLATE_NPM_PKG} repo to publish ${version}`);
|
||||
|
||||
const is_latest_on_npm = isLatest();
|
||||
|
||||
const majorMinor = /^v?(\d+\.\d+)/.exec(version);
|
||||
|
||||
if (!majorMinor) {
|
||||
log(`🔥 can't capture MAJOR.MINOR from '${version}', giving up.`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// MAJOR.MINOR-stable
|
||||
const ref = `${majorMinor[1]}-stable`;
|
||||
|
||||
await github.rest.actions.createWorkflowDispatch({
|
||||
owner: 'react-native-community',
|
||||
repo: 'template',
|
||||
workflow_id: 'release.yaml',
|
||||
ref,
|
||||
inputs: {
|
||||
dry_run: dryRun,
|
||||
is_latest_on_npm,
|
||||
// 0.75.0-rc.0, note no 'v' prefix
|
||||
version: version.replace(/^v/, ''),
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const SLEEP_S = 10;
|
||||
const MAX_RETRIES = 3 * 6; // 3 minutes
|
||||
const TEMPLATE_NPM_PKG = '@react-native-community/template';
|
||||
|
||||
/**
|
||||
* Will verify that @latest and the @<version> have been published.
|
||||
*
|
||||
* NOTE: This will infinitely query each step until successful, make sure the
|
||||
* calling job has a timeout.
|
||||
*/
|
||||
module.exports.verifyPublishedTemplate = async (
|
||||
version,
|
||||
latest = false,
|
||||
retries = MAX_RETRIES,
|
||||
) => {
|
||||
log(`🔍 Is ${TEMPLATE_NPM_PKG}@${version} on npm?`);
|
||||
|
||||
let count = retries;
|
||||
while (count-- > 0) {
|
||||
try {
|
||||
const json = await getNpmPackageInfo(
|
||||
TEMPLATE_NPM_PKG,
|
||||
latest ? 'latest' : version,
|
||||
);
|
||||
log(`🎉 Found ${TEMPLATE_NPM_PKG}@${version} on npm`);
|
||||
if (!latest) {
|
||||
return;
|
||||
}
|
||||
if (json.version === version) {
|
||||
log(`🎉 ${TEMPLATE_NPM_PKG}@latest → ${version} on npm`);
|
||||
return;
|
||||
}
|
||||
log(
|
||||
`🐌 ${TEMPLATE_NPM_PKG}@latest → ${pkg.version} on npm and not ${version} as expected, retrying...`,
|
||||
);
|
||||
} catch (e) {
|
||||
log(`Nope, fetch failed: ${e.message}`);
|
||||
}
|
||||
await sleep(SLEEP_S);
|
||||
}
|
||||
|
||||
let msg = `🚨 Timed out when trying to verify ${TEMPLATE_NPM_PKG}@${version} on npm`;
|
||||
if (latest) {
|
||||
msg += ' and latest tag points to this version.';
|
||||
}
|
||||
log(msg);
|
||||
process.exit(1);
|
||||
};
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
const {execSync} = require('child_process');
|
||||
|
||||
function run(cmd) {
|
||||
return execSync(cmd, 'utf8').toString().trim();
|
||||
}
|
||||
module.exports.run = run;
|
||||
|
||||
async function sleep(seconds) {
|
||||
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
|
||||
}
|
||||
module.exports.sleep = sleep;
|
||||
|
||||
async function getNpmPackageInfo(pkg, versionOrTag) {
|
||||
return fetch(`https://registry.npmjs.org/${pkg}/${versionOrTag}`).then(resp =>
|
||||
res.json(),
|
||||
);
|
||||
}
|
||||
module.exports.getNpmPackageInfo = getNpmPackageInfo;
|
||||
|
||||
module.exports.log = (...args) => console.log(...args);
|
||||
@@ -191,46 +191,23 @@ jobs:
|
||||
gha-npm-token: ${{ env.GHA_NPM_TOKEN }}
|
||||
- name: Publish @react-native-community/template
|
||||
id: publish-template-to-npm
|
||||
shell: bash
|
||||
run: |
|
||||
COMMIT_MSG=$(git log -n1 --pretty=%B);
|
||||
if grep -q '#publish-packages-to-npm&latest' <<< "$COMMIT_MSG"; then
|
||||
echo "TAG=latest" >> $GITHUB_OUTPUT
|
||||
IS_LATEST=true
|
||||
else
|
||||
IS_LATEST=false
|
||||
fi
|
||||
# Go from v0.75.0-rc.4 -> 0.75-stable, which is the template's branching scheme
|
||||
VERSION=$(grep -oE '\d+\.\d+' <<< "${{ github.ref_name }}" | { read version; echo "$version-stable"; })
|
||||
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
curl -L https://api.github.com/repos/react-native-community/template/actions/workflows/release.yaml/dispatches
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-H "Authorization: Bearer $REACT_NATIVE_BOT_GITHUB_TOKEN" \
|
||||
-d "{\"ref\":\"$VERSION\",\"inputs\":{\"version\":\"${{ github.ref_name }}\",\"is_latest_on_npm\":\"$IS_LATEST\"}}"
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
|
||||
script: |
|
||||
const {publishTemplate} = require('./.github/workflow-scripts/publishTemplate.js')
|
||||
const version = "${{ github.ref_name }}"
|
||||
const isDryRun = false
|
||||
await publishTemplate(github, version, isDryRun);
|
||||
- name: Wait for template to be published
|
||||
timeout-minutes: 3
|
||||
env:
|
||||
VERSION: ${{ steps.publish-template-to-npm.outputs.VERSION }}
|
||||
TAG: ${{ steps.publish-template-to-npm.outputs.TAG }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Waiting until @react-native-community/template is published to npm"
|
||||
while true; do
|
||||
if curl -o /dev/null -s -f "https://registry.npmjs.org/@react-native-community/template/$VERSION"; then
|
||||
echo "Confirm that @react-native-community/template@$VERSION is published on npm"
|
||||
break
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
while [ "$TAG" == "latest" ]; do
|
||||
CURRENT=$(curl -s "https://registry.npmjs.org/react-native/latest" | jq -r '.version');
|
||||
if [ "$CURRENT" == "$VERSION" ]; then
|
||||
echo "Confirm that @react-native-community/template@latest == $VERSION on npm"
|
||||
break
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
|
||||
script: |
|
||||
const {verifyPublished, isLatest} = require('./.github/workflow-scripts/publishTemplate.js')
|
||||
const version = "${{ github.ref_name }}"
|
||||
await verifyPublished(version, isLatest());
|
||||
- name: Update rn-diff-purge to generate upgrade-support diff
|
||||
run: |
|
||||
curl -X POST https://api.github.com/repos/react-native-community/rn-diff-purge/dispatches \
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
+4
-4
@@ -49,8 +49,8 @@
|
||||
"@definitelytyped/dtslint": "^0.0.127",
|
||||
"@jest/create-cache-key-function": "^29.6.3",
|
||||
"@pkgjs/parseargs": "^0.11.0",
|
||||
"@react-native/metro-babel-transformer": "0.76.0-rc.4",
|
||||
"@react-native/metro-config": "0.76.0-rc.4",
|
||||
"@react-native/metro-babel-transformer": "0.76.0",
|
||||
"@react-native/metro-config": "0.76.0",
|
||||
"@tsconfig/node18": "1.0.1",
|
||||
"@types/react": "^18.2.6",
|
||||
"@typescript-eslint/parser": "^7.1.1",
|
||||
@@ -86,8 +86,8 @@
|
||||
"jest": "^29.6.3",
|
||||
"jest-junit": "^10.0.0",
|
||||
"jscodeshift": "^0.14.0",
|
||||
"metro-babel-register": "^0.81.0-alpha.2",
|
||||
"metro-memory-fs": "^0.81.0-alpha.2",
|
||||
"metro-babel-register": "^0.81.0",
|
||||
"metro-memory-fs": "^0.81.0",
|
||||
"micromatch": "^4.0.4",
|
||||
"mkdirp": "^0.5.1",
|
||||
"node-fetch": "^2.2.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/assets-registry",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Asset support code for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/babel-plugin-codegen",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Babel plugin to generate native module and view manager code for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -25,7 +25,7 @@
|
||||
"index.js"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/codegen": "0.76.0-rc.4"
|
||||
"@react-native/codegen": "0.76.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/community-cli-plugin",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Core CLI commands for React Native",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
@@ -22,19 +22,19 @@
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/dev-middleware": "0.76.0-rc.4",
|
||||
"@react-native/metro-babel-transformer": "0.76.0-rc.4",
|
||||
"@react-native/dev-middleware": "0.76.0",
|
||||
"@react-native/metro-babel-transformer": "0.76.0",
|
||||
"chalk": "^4.0.0",
|
||||
"execa": "^5.1.1",
|
||||
"invariant": "^2.2.4",
|
||||
"metro": "^0.81.0-alpha.2",
|
||||
"metro-config": "^0.81.0-alpha.2",
|
||||
"metro-core": "^0.81.0-alpha.2",
|
||||
"metro": "^0.81.0",
|
||||
"metro-config": "^0.81.0",
|
||||
"metro-core": "^0.81.0",
|
||||
"node-fetch": "^2.2.0",
|
||||
"readline": "^1.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"metro-resolver": "^0.81.0-alpha.2"
|
||||
"metro-resolver": "^0.81.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@react-native-community/cli-server-api": "*"
|
||||
|
||||
@@ -140,7 +140,7 @@ async function buildBundleWithConfig(
|
||||
args.assetCatalogDest,
|
||||
);
|
||||
} finally {
|
||||
server.end();
|
||||
await server.end();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/core-cli-utils",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "React Native CLI library for Frameworks to build on",
|
||||
"license": "MIT",
|
||||
"main": "./src/index.flow.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/debugger-frontend",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Debugger frontend for React Native based on Chrome DevTools",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/dev-middleware",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Dev server middleware for React Native",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
@@ -23,7 +23,7 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@isaacs/ttlcache": "^1.4.1",
|
||||
"@react-native/debugger-frontend": "0.76.0-rc.4",
|
||||
"@react-native/debugger-frontend": "0.76.0",
|
||||
"chrome-launcher": "^0.15.2",
|
||||
"chromium-edge-launcher": "^0.2.0",
|
||||
"connect": "^3.6.5",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-config",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "ESLint config for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -22,7 +22,7 @@
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@babel/eslint-parser": "^7.25.1",
|
||||
"@react-native/eslint-plugin": "0.76.0-rc.4",
|
||||
"@react-native/eslint-plugin": "0.76.0",
|
||||
"@typescript-eslint/eslint-plugin": "^7.1.1",
|
||||
"@typescript-eslint/parser": "^7.1.1",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-plugin",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "ESLint rules for @react-native/eslint-config",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-plugin-specs",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "ESLint rules to validate NativeModule and Component Specs",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -27,7 +27,7 @@
|
||||
"@babel/core": "^7.25.2",
|
||||
"@babel/plugin-transform-flow-strip-types": "^7.25.2",
|
||||
"@babel/preset-flow": "^7.24.7",
|
||||
"@react-native/codegen": "0.76.0-rc.4",
|
||||
"@react-native/codegen": "0.76.0",
|
||||
"make-dir": "^2.1.0",
|
||||
"pirates": "^4.0.1",
|
||||
"source-map-support": "0.5.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/gradle-plugin",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Gradle Plugin for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "helloworld",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"bootstrap": "node ./cli.js bootstrap",
|
||||
@@ -13,16 +13,16 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "18.3.1",
|
||||
"react-native": "0.76.0-rc.4"
|
||||
"react-native": "0.76.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@babel/preset-env": "^7.25.3",
|
||||
"@babel/runtime": "^7.25.0",
|
||||
"@react-native/babel-preset": "0.76.0-rc.4",
|
||||
"@react-native/core-cli-utils": "0.76.0-rc.4",
|
||||
"@react-native/eslint-config": "0.76.0-rc.4",
|
||||
"@react-native/metro-config": "0.76.0-rc.4",
|
||||
"@react-native/babel-preset": "0.76.0",
|
||||
"@react-native/core-cli-utils": "0.76.0",
|
||||
"@react-native/eslint-config": "0.76.0",
|
||||
"@react-native/metro-config": "0.76.0",
|
||||
"babel-jest": "^29.6.3",
|
||||
"chalk": "^4.1.2",
|
||||
"commander": "^12.0.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/hermes-inspector-msggen",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"private": true,
|
||||
"description": "Hermes Inspector Message Generator for React Native",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/metro-config",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Metro configuration for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -26,9 +26,9 @@
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/js-polyfills": "0.76.0-rc.4",
|
||||
"@react-native/metro-babel-transformer": "0.76.0-rc.4",
|
||||
"metro-config": "^0.81.0-alpha.2",
|
||||
"metro-runtime": "^0.81.0-alpha.2"
|
||||
"@react-native/js-polyfills": "0.76.0",
|
||||
"@react-native/metro-babel-transformer": "0.76.0",
|
||||
"metro-config": "^0.81.0",
|
||||
"metro-runtime": "^0.81.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/normalize-colors",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Color normalization for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/js-polyfills",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Polyfills for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/babel-preset",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Babel preset for React Native applications",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
@@ -55,7 +55,7 @@
|
||||
"@babel/plugin-transform-typescript": "^7.25.2",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.24.7",
|
||||
"@babel/template": "^7.25.0",
|
||||
"@react-native/babel-plugin-codegen": "0.76.0-rc.4",
|
||||
"@react-native/babel-plugin-codegen": "0.76.0",
|
||||
"babel-plugin-syntax-hermes-parser": "^0.23.1",
|
||||
"babel-plugin-transform-flow-enums": "^0.0.2",
|
||||
"react-refresh": "^0.14.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/metro-babel-transformer",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Babel transformer for React Native applications.",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
@@ -16,7 +16,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@react-native/babel-preset": "0.76.0-rc.4",
|
||||
"@react-native/babel-preset": "0.76.0",
|
||||
"hermes-parser": "0.23.1",
|
||||
"nullthrows": "^1.1.1"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/bots",
|
||||
"description": "React Native Bots",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"private": true,
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/codegen-typescript-test",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"private": true,
|
||||
"description": "TypeScript related unit test for @react-native/codegen",
|
||||
"license": "MIT",
|
||||
@@ -19,7 +19,7 @@
|
||||
"prepare": "yarn run build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native/codegen": "0.76.0-rc.4"
|
||||
"@react-native/codegen": "0.76.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/codegen",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Code generation tools for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native-info",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"main": "build/index.js",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/popup-menu-android",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "PopupMenu for the Android platform",
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
@@ -17,7 +17,7 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@react-native/codegen": "0.76.0-rc.4"
|
||||
"@react-native/codegen": "0.76.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^18.2.6",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/oss-library-example",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"private": true,
|
||||
"description": "Package that includes native module exapmle, native component example, targets both the old and the new architecture. It should serve as an example of a real-world OSS library.",
|
||||
"license": "MIT",
|
||||
@@ -26,8 +26,8 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@react-native/babel-preset": "0.76.0-rc.4",
|
||||
"react-native": "0.76.0-rc.4"
|
||||
"@react-native/babel-preset": "0.76.0",
|
||||
"react-native": "0.76.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/test-renderer",
|
||||
"private": true,
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "A Test rendering library for React Native",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -17,7 +17,7 @@ const version: $ReadOnly<{
|
||||
major: 0,
|
||||
minor: 76,
|
||||
patch: 0,
|
||||
prerelease: 'rc.4',
|
||||
prerelease: null,
|
||||
};
|
||||
|
||||
module.exports = {version};
|
||||
|
||||
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
||||
RCTVersionMajor: @(0),
|
||||
RCTVersionMinor: @(76),
|
||||
RCTVersionPatch: @(0),
|
||||
RCTVersionPrerelease: @"rc.4",
|
||||
RCTVersionPrerelease: [NSNull null],
|
||||
};
|
||||
});
|
||||
return __rnVersion;
|
||||
|
||||
@@ -3798,13 +3798,13 @@ public abstract class com/facebook/react/packagerconnection/NotificationOnlyHand
|
||||
public final fun onRequest (Ljava/lang/Object;Lcom/facebook/react/packagerconnection/Responder;)V
|
||||
}
|
||||
|
||||
public final class com/facebook/react/packagerconnection/PackagerConnectionSettings {
|
||||
public class com/facebook/react/packagerconnection/PackagerConnectionSettings {
|
||||
public fun <init> (Landroid/content/Context;)V
|
||||
public final fun getAdditionalOptionsForPackager ()Ljava/util/Map;
|
||||
public final fun getDebugServerHost ()Ljava/lang/String;
|
||||
public fun getDebugServerHost ()Ljava/lang/String;
|
||||
public final fun getPackageName ()Ljava/lang/String;
|
||||
public final fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public final fun setDebugServerHost (Ljava/lang/String;)V
|
||||
public fun setDebugServerHost (Ljava/lang/String;)V
|
||||
}
|
||||
|
||||
public final class com/facebook/react/packagerconnection/ReconnectingWebSocket : okhttp3/WebSocketListener {
|
||||
|
||||
@@ -557,7 +557,6 @@ android {
|
||||
listOf(
|
||||
"src/main/res/devsupport",
|
||||
"src/main/res/shell",
|
||||
"src/main/res/views/alert",
|
||||
"src/main/res/views/modal",
|
||||
"src/main/res/views/uimanager"))
|
||||
java.exclude("com/facebook/react/processing")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION_NAME=0.76.0-rc.4
|
||||
VERSION_NAME=0.76.0
|
||||
react.internal.publishingGroup=com.facebook.react
|
||||
|
||||
android.useAndroidX=true
|
||||
|
||||
+2
-1
@@ -12,6 +12,7 @@ import androidx.annotation.AnyThread
|
||||
import androidx.annotation.UiThread
|
||||
import com.facebook.infer.annotation.ThreadConfined
|
||||
import com.facebook.react.common.annotations.UnstableReactNativeAPI
|
||||
import com.facebook.react.uimanager.events.EventDispatcher
|
||||
|
||||
@OptIn(UnstableReactNativeAPI::class)
|
||||
public interface UIManager : PerformanceCounter {
|
||||
@@ -78,7 +79,7 @@ public interface UIManager : PerformanceCounter {
|
||||
public fun dispatchCommand(reactTag: Int, commandId: String, commandArgs: ReadableArray?)
|
||||
|
||||
/** @return the [EventDispatcher] object that is used by this class. */
|
||||
public fun <T> getEventDispatcher(): T
|
||||
public val eventDispatcher: EventDispatcher
|
||||
|
||||
/**
|
||||
* Used by native animated module to bypass the process of updating the values through the shadow
|
||||
|
||||
-1
@@ -1021,7 +1021,6 @@ public class FabricUIManager
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
@SuppressWarnings("unchecked")
|
||||
public EventDispatcher getEventDispatcher() {
|
||||
return mEventDispatcher;
|
||||
}
|
||||
|
||||
+5
-57
@@ -12,20 +12,11 @@ import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.TypedArray;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.view.AccessibilityDelegateCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.infer.annotation.Nullsafe;
|
||||
import com.facebook.react.R;
|
||||
|
||||
/** A fragment used to display the dialog. */
|
||||
@Nullsafe(Nullsafe.Mode.LOCAL)
|
||||
@@ -75,55 +66,15 @@ public class AlertFragment extends DialogFragment implements DialogInterface.OnC
|
||||
return isAppCompat;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a custom dialog title View that has the role of "Heading" and focusable for
|
||||
* accessibility purposes.
|
||||
*
|
||||
* @returns accessible TextView title
|
||||
*/
|
||||
private static View getAccessibleTitle(Context activityContext, String titleText) {
|
||||
LayoutInflater inflater = LayoutInflater.from(activityContext);
|
||||
|
||||
// This layout matches the sizing and styling of AlertDialog's title_template (minus the icon)
|
||||
// since the whole thing gets tossed out when setting a custom title
|
||||
View titleContainer = inflater.inflate(R.layout.alert_title_layout, null);
|
||||
|
||||
TextView accessibleTitle =
|
||||
Assertions.assertNotNull(titleContainer.findViewById(R.id.alert_title));
|
||||
accessibleTitle.setText(titleText);
|
||||
accessibleTitle.setFocusable(true);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
accessibleTitle.setAccessibilityHeading(true);
|
||||
} else {
|
||||
ViewCompat.setAccessibilityDelegate(
|
||||
accessibleTitle,
|
||||
new AccessibilityDelegateCompat() {
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(
|
||||
View view, AccessibilityNodeInfoCompat info) {
|
||||
super.onInitializeAccessibilityNodeInfo(accessibleTitle, info);
|
||||
info.setHeading(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return titleContainer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a dialog compatible only with AppCompat activities. This function should be kept in
|
||||
* sync with {@link createAppDialog}.
|
||||
*/
|
||||
private static Dialog createAppCompatDialog(
|
||||
Context activityContext, Bundle arguments, DialogInterface.OnClickListener fragment) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activityContext);
|
||||
AlertDialog.Builder builder =
|
||||
new AlertDialog.Builder(activityContext).setTitle(arguments.getString(ARG_TITLE));
|
||||
|
||||
if (arguments.containsKey(ARG_TITLE)) {
|
||||
String title = Assertions.assertNotNull(arguments.getString(ARG_TITLE));
|
||||
View accessibleTitle = getAccessibleTitle(activityContext, title);
|
||||
builder.setCustomTitle(accessibleTitle);
|
||||
}
|
||||
if (arguments.containsKey(ARG_BUTTON_POSITIVE)) {
|
||||
builder.setPositiveButton(arguments.getString(ARG_BUTTON_POSITIVE), fragment);
|
||||
}
|
||||
@@ -154,13 +105,10 @@ public class AlertFragment extends DialogFragment implements DialogInterface.OnC
|
||||
@Deprecated(since = "0.75.0", forRemoval = true)
|
||||
private static Dialog createAppDialog(
|
||||
Context activityContext, Bundle arguments, DialogInterface.OnClickListener fragment) {
|
||||
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(activityContext);
|
||||
android.app.AlertDialog.Builder builder =
|
||||
new android.app.AlertDialog.Builder(activityContext)
|
||||
.setTitle(arguments.getString(ARG_TITLE));
|
||||
|
||||
if (arguments.containsKey(ARG_TITLE)) {
|
||||
String title = Assertions.assertNotNull(arguments.getString(ARG_TITLE));
|
||||
View accessibleTitle = getAccessibleTitle(activityContext, title);
|
||||
builder.setCustomTitle(accessibleTitle);
|
||||
}
|
||||
if (arguments.containsKey(ARG_BUTTON_POSITIVE)) {
|
||||
builder.setPositiveButton(arguments.getString(ARG_BUTTON_POSITIVE), fragment);
|
||||
}
|
||||
|
||||
+1
-1
@@ -18,5 +18,5 @@ public class ReactNativeVersion {
|
||||
"major", 0,
|
||||
"minor", 76,
|
||||
"patch", 0,
|
||||
"prerelease", "rc.4");
|
||||
"prerelease", null);
|
||||
}
|
||||
|
||||
+2
-2
@@ -15,13 +15,13 @@ import android.preference.PreferenceManager
|
||||
import com.facebook.common.logging.FLog
|
||||
import com.facebook.react.modules.systeminfo.AndroidInfoHelpers
|
||||
|
||||
public class PackagerConnectionSettings(private val appContext: Context) {
|
||||
public open class PackagerConnectionSettings(private val appContext: Context) {
|
||||
private val preferences: SharedPreferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(appContext)
|
||||
public val packageName: String = appContext.packageName
|
||||
private val _additionalOptionsForPackager: MutableMap<String, String> = mutableMapOf()
|
||||
|
||||
public var debugServerHost: String
|
||||
public open var debugServerHost: String
|
||||
get() {
|
||||
// Check host setting first. If empty try to detect emulator type and use default
|
||||
// hostname for those
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import com.facebook.yoga.YogaConstants
|
||||
public abstract class BaseViewManagerDelegate<T : View, U : BaseViewManagerInterface<T>>(
|
||||
@Suppress("NoHungarianNotation") @JvmField protected val mViewManager: U
|
||||
) : ViewManagerDelegate<T> {
|
||||
override public fun setProperty(view: T, propName: String, value: Any?) {
|
||||
override public fun setProperty(view: T, propName: String?, value: Any?) {
|
||||
when (propName) {
|
||||
ViewProps.ACCESSIBILITY_ACTIONS ->
|
||||
mViewManager.setAccessibilityActions(view, value as ReadableArray?)
|
||||
@@ -104,6 +104,6 @@ public abstract class BaseViewManagerDelegate<T : View, U : BaseViewManagerInter
|
||||
}
|
||||
}
|
||||
|
||||
override public fun receiveCommand(view: T, commandName: String, args: ReadableArray?): Unit =
|
||||
override public fun receiveCommand(view: T, commandName: String?, args: ReadableArray?): Unit =
|
||||
Unit
|
||||
}
|
||||
|
||||
+19
-2
@@ -18,7 +18,24 @@ import com.facebook.react.bridge.ReadableArray
|
||||
* @param <T> the type of the view supported by this delegate </T>
|
||||
*/
|
||||
public interface ViewManagerDelegate<T : View?> {
|
||||
public fun setProperty(view: T, propName: String, value: Any?)
|
||||
|
||||
public fun receiveCommand(view: T, commandName: String, args: ReadableArray?)
|
||||
/**
|
||||
* Sets a property on a view managed by this view manager.
|
||||
*
|
||||
* @param view the view to set the property on
|
||||
* @param propName the name of the property to set (NOTE: should be `String` but is kept as
|
||||
* `String?` to avoid breaking changes)
|
||||
* @param value the value to set the property to
|
||||
*/
|
||||
public fun setProperty(view: T, propName: String?, value: Any?)
|
||||
|
||||
/**
|
||||
* Executes a command from JS to the view
|
||||
*
|
||||
* @param view the view to execute the command on
|
||||
* @param commandName the name of the command to execute (NOTE: should be `String` but is kept as
|
||||
* `String?` to avoid breaking changes)
|
||||
* @param args the arguments to pass to the command
|
||||
*/
|
||||
public fun receiveCommand(view: T, commandName: String?, args: ReadableArray?)
|
||||
}
|
||||
|
||||
+26
-16
@@ -26,6 +26,7 @@ import android.view.WindowManager
|
||||
import android.view.accessibility.AccessibilityEvent
|
||||
import android.widget.FrameLayout
|
||||
import androidx.annotation.UiThread
|
||||
import com.facebook.common.logging.FLog
|
||||
import com.facebook.react.R
|
||||
import com.facebook.react.bridge.GuardedRunnable
|
||||
import com.facebook.react.bridge.LifecycleEventListener
|
||||
@@ -33,6 +34,7 @@ import com.facebook.react.bridge.ReactContext
|
||||
import com.facebook.react.bridge.UiThreadUtil
|
||||
import com.facebook.react.bridge.WritableMap
|
||||
import com.facebook.react.bridge.WritableNativeMap
|
||||
import com.facebook.react.common.ReactConstants
|
||||
import com.facebook.react.common.annotations.VisibleForTesting
|
||||
import com.facebook.react.config.ReactFeatureFlags
|
||||
import com.facebook.react.uimanager.JSPointerDispatcher
|
||||
@@ -306,29 +308,37 @@ public class ReactModalHostView(context: ThemedReactContext) :
|
||||
val dialogWindow =
|
||||
checkNotNull(dialog.window) { "dialog must have window when we call updateProperties" }
|
||||
val currentActivity = getCurrentActivity()
|
||||
if (currentActivity == null || currentActivity.isFinishing) {
|
||||
if (currentActivity == null || currentActivity.isFinishing || currentActivity.isDestroyed) {
|
||||
// If the activity has disappeared, then we shouldn't update the window associated to the
|
||||
// Dialog.
|
||||
return
|
||||
}
|
||||
val activityWindow = currentActivity.window
|
||||
if (activityWindow != null) {
|
||||
val activityWindowFlags = activityWindow.attributes.flags
|
||||
if ((activityWindowFlags and WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) {
|
||||
dialogWindow.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
} else {
|
||||
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
try {
|
||||
val activityWindow = currentActivity.window
|
||||
if (activityWindow != null) {
|
||||
val activityWindowFlags = activityWindow.attributes.flags
|
||||
if ((activityWindowFlags and WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) {
|
||||
dialogWindow.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
} else {
|
||||
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dialogWindow.setStatusBarTranslucency(statusBarTranslucent)
|
||||
dialogWindow.setStatusBarTranslucency(statusBarTranslucent)
|
||||
|
||||
if (transparent) {
|
||||
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
} else {
|
||||
dialogWindow.setDimAmount(0.5f)
|
||||
dialogWindow.setFlags(
|
||||
WindowManager.LayoutParams.FLAG_DIM_BEHIND, WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
if (transparent) {
|
||||
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
} else {
|
||||
dialogWindow.setDimAmount(0.5f)
|
||||
dialogWindow.setFlags(
|
||||
WindowManager.LayoutParams.FLAG_DIM_BEHIND, WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
}
|
||||
} catch (e: IllegalArgumentException) {
|
||||
// This is to prevent a crash from the following error, without a clear repro steps:
|
||||
// java.lang.IllegalArgumentException: View=DecorView@c94931b[XxxActivity] not attached to
|
||||
// window manager
|
||||
FLog.e(
|
||||
ReactConstants.TAG, "ReactModalHostView: error while setting window flags: ", e.message)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical|start"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="?android:attr/dialogPreferredPadding"
|
||||
android:paddingTop="18dp"
|
||||
android:paddingEnd="?android:attr/dialogPreferredPadding">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/alert_title"
|
||||
style="?android:attr/windowTitleStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="viewStart"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textSize="18sp" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -92,7 +92,7 @@ class RootViewTest {
|
||||
val eventEmitterModuleMock = mock(RCTEventEmitter::class.java)
|
||||
whenever(catalystInstanceMock.getNativeModule(UIManagerModule::class.java))
|
||||
.thenReturn(uiManager)
|
||||
whenever(uiManager.getEventDispatcher()).thenReturn(eventDispatcher)
|
||||
whenever(uiManager.eventDispatcher).thenReturn(eventDispatcher)
|
||||
|
||||
// RootView IDs is React Native follow the 11, 21, 31, ... progression.
|
||||
val rootViewId = 11
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ class NativeAnimatedNodeTraversalTest {
|
||||
|
||||
uiManagerMock = mock(UIManagerModule::class.java)
|
||||
eventDispatcherMock = mock(EventDispatcher::class.java)
|
||||
whenever(uiManagerMock.getEventDispatcher()).thenAnswer { eventDispatcherMock }
|
||||
whenever(uiManagerMock.eventDispatcher).thenAnswer { eventDispatcherMock }
|
||||
whenever(uiManagerMock.constants).thenAnswer {
|
||||
mapOf("customDirectEventTypes" to emptyMap<Any, Any>())
|
||||
}
|
||||
|
||||
+1
-1
@@ -488,7 +488,7 @@ class TouchEventDispatchTest {
|
||||
spy(FabricUIManager(reactContext, viewManagerRegistry, batchEventDispatchedListener))
|
||||
uiManager.initialize()
|
||||
|
||||
eventDispatcher = uiManager.getEventDispatcher()
|
||||
eventDispatcher = uiManager.eventDispatcher
|
||||
|
||||
// Ignore scheduled choreographer work
|
||||
val reactChoreographerMock = mock(ReactChoreographer::class.java)
|
||||
|
||||
+5
-1
@@ -17,6 +17,7 @@ import com.facebook.react.bridge.UIManagerListener
|
||||
import com.facebook.react.bridge.WritableMap
|
||||
import com.facebook.react.common.annotations.UnstableReactNativeAPI
|
||||
import com.facebook.react.fabric.interop.UIBlockViewResolver
|
||||
import com.facebook.react.uimanager.events.EventDispatcher
|
||||
|
||||
@OptIn(UnstableReactNativeAPI::class)
|
||||
class FakeUIManager : UIManager, UIBlockViewResolver {
|
||||
@@ -65,7 +66,10 @@ class FakeUIManager : UIManager, UIBlockViewResolver {
|
||||
error("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun <T : Any?> getEventDispatcher(): T {
|
||||
override val eventDispatcher: EventDispatcher
|
||||
get() = TODO("Not yet implemented")
|
||||
|
||||
fun <T : Any?> getEventDispatcher(): T {
|
||||
error("Not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ constexpr struct {
|
||||
int32_t Major = 0;
|
||||
int32_t Minor = 76;
|
||||
int32_t Patch = 0;
|
||||
std::string_view Prerelease = "rc.4";
|
||||
std::string_view Prerelease = "";
|
||||
} ReactNativeVersion;
|
||||
|
||||
} // namespace facebook::react
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "A framework for building native apps using React",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -109,13 +109,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@jest/create-cache-key-function": "^29.6.3",
|
||||
"@react-native/assets-registry": "0.76.0-rc.4",
|
||||
"@react-native/codegen": "0.76.0-rc.4",
|
||||
"@react-native/community-cli-plugin": "0.76.0-rc.4",
|
||||
"@react-native/gradle-plugin": "0.76.0-rc.4",
|
||||
"@react-native/js-polyfills": "0.76.0-rc.4",
|
||||
"@react-native/normalize-colors": "0.76.0-rc.4",
|
||||
"@react-native/virtualized-lists": "0.76.0-rc.4",
|
||||
"@react-native/assets-registry": "0.76.0",
|
||||
"@react-native/codegen": "0.76.0",
|
||||
"@react-native/community-cli-plugin": "0.76.0",
|
||||
"@react-native/gradle-plugin": "0.76.0",
|
||||
"@react-native/js-polyfills": "0.76.0",
|
||||
"@react-native/normalize-colors": "0.76.0",
|
||||
"@react-native/virtualized-lists": "0.76.0",
|
||||
"abort-controller": "^3.0.0",
|
||||
"anser": "^1.4.9",
|
||||
"ansi-regex": "^5.0.0",
|
||||
@@ -131,8 +131,8 @@
|
||||
"jest-environment-node": "^29.6.3",
|
||||
"jsc-android": "^250231.0.0",
|
||||
"memoize-one": "^5.0.0",
|
||||
"metro-runtime": "^0.81.0-alpha.2",
|
||||
"metro-source-map": "^0.81.0-alpha.2",
|
||||
"metro-runtime": "^0.81.0",
|
||||
"metro-source-map": "^0.81.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"nullthrows": "^1.1.1",
|
||||
"pretty-format": "^29.7.0",
|
||||
|
||||
@@ -12,19 +12,33 @@ class NewArchitectureHelper
|
||||
@@NewArchWarningEmitted = false # Used not to spam warnings to the user.
|
||||
|
||||
def self.set_clang_cxx_language_standard_if_needed(installer)
|
||||
cxxBuildsettingsName = "CLANG_CXX_LANGUAGE_STANDARD"
|
||||
projects = installer.aggregate_targets
|
||||
.map{ |t| t.user_project }
|
||||
.uniq{ |p| p.path }
|
||||
|
||||
projects.each do |project|
|
||||
Pod::UI.puts("Setting CLANG_CXX_LANGUAGE_STANDARD to #{ Helpers::Constants::cxx_language_standard } on #{ project.path }")
|
||||
Pod::UI.puts("Setting #{cxxBuildsettingsName} to #{ Helpers::Constants::cxx_language_standard } on #{ project.path }")
|
||||
|
||||
project.build_configurations.each do |config|
|
||||
config.build_settings["CLANG_CXX_LANGUAGE_STANDARD"] = Helpers::Constants::cxx_language_standard
|
||||
config.build_settings[cxxBuildsettingsName] = Helpers::Constants::cxx_language_standard
|
||||
end
|
||||
|
||||
project.save()
|
||||
end
|
||||
|
||||
installer.target_installation_results.pod_target_installation_results.each do |pod_name, target_installation_result|
|
||||
target_installation_result.native_target.build_configurations.each do |config|
|
||||
config.build_settings[cxxBuildsettingsName] = Helpers::Constants::cxx_language_standard
|
||||
end
|
||||
end
|
||||
|
||||
# Override targets that would set spec.xcconfig to define c++ version
|
||||
installer.aggregate_targets.each do |aggregate_target|
|
||||
aggregate_target.xcconfigs.each do |config_name, config_file|
|
||||
config_file.attributes[cxxBuildsettingsName] = Helpers::Constants::cxx_language_standard
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.computeFlags(is_new_arch_enabled)
|
||||
|
||||
+284
-284
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/tester",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"private": true,
|
||||
"description": "React Native tester app.",
|
||||
"license": "MIT",
|
||||
@@ -23,8 +23,8 @@
|
||||
"clean-ios": "rm -rf build/generated/ios Pods Podfile.lock"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native/oss-library-example": "0.76.0-rc.4",
|
||||
"@react-native/popup-menu-android": "0.76.0-rc.4",
|
||||
"@react-native/oss-library-example": "0.76.0",
|
||||
"@react-native/popup-menu-android": "0.76.0",
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"invariant": "^2.2.4",
|
||||
"nullthrows": "^1.1.1"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/typescript-config",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Default TypeScript configuration for React Native apps",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/virtualized-lists",
|
||||
"version": "0.76.0-rc.4",
|
||||
"version": "0.76.0",
|
||||
"description": "Virtualized lists for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1091,7 +1091,18 @@
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.24.7"
|
||||
"@babel/plugin-transform-typescript" "^7.24.7"
|
||||
|
||||
"@babel/register@^7.13.16", "@babel/register@^7.24.6":
|
||||
"@babel/register@7.22.5":
|
||||
version "7.22.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939"
|
||||
integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==
|
||||
dependencies:
|
||||
clone-deep "^4.0.1"
|
||||
find-cache-dir "^2.0.0"
|
||||
make-dir "^2.1.0"
|
||||
pirates "^4.0.5"
|
||||
source-map-support "^0.5.16"
|
||||
|
||||
"@babel/register@^7.13.16":
|
||||
version "7.24.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.24.6.tgz#59e21dcc79e1d04eed5377633b0f88029a6bef9e"
|
||||
integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==
|
||||
@@ -2810,6 +2821,13 @@ babel-plugin-syntax-hermes-parser@0.23.1, babel-plugin-syntax-hermes-parser@^0.2
|
||||
dependencies:
|
||||
hermes-parser "0.23.1"
|
||||
|
||||
babel-plugin-syntax-hermes-parser@0.24.0:
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.24.0.tgz#79d0c73daae7bd7d4b07f64ee281c75aa48845cf"
|
||||
integrity sha512-J4wETqz7ehbyYl2uge65zsfr0Ue+0yJYYMMkGAWpZc0fB02z4JAcx+mJEXVU14yiihGwqVUlR7oS4/gDYOxUdA==
|
||||
dependencies:
|
||||
hermes-parser "0.24.0"
|
||||
|
||||
babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0:
|
||||
version "7.0.0-beta.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf"
|
||||
@@ -4890,6 +4908,11 @@ hermes-estree@0.23.1:
|
||||
resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.1.tgz#d0bac369a030188120ee7024926aabe5a9f84fdb"
|
||||
integrity sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==
|
||||
|
||||
hermes-estree@0.24.0:
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.24.0.tgz#487dc1ddc0bae698c2d79f34153ac9bf62d7b3c0"
|
||||
integrity sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==
|
||||
|
||||
hermes-parser@0.23.1:
|
||||
version "0.23.1"
|
||||
resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.23.1.tgz#e5de648e664f3b3d84d01b48fc7ab164f4b68205"
|
||||
@@ -4897,6 +4920,13 @@ hermes-parser@0.23.1:
|
||||
dependencies:
|
||||
hermes-estree "0.23.1"
|
||||
|
||||
hermes-parser@0.24.0:
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.24.0.tgz#2ed19d079efc0848eb1f800f0c393a074c4696fb"
|
||||
integrity sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==
|
||||
dependencies:
|
||||
hermes-estree "0.24.0"
|
||||
|
||||
hermes-transform@0.23.1:
|
||||
version "0.23.1"
|
||||
resolved "https://registry.yarnpkg.com/hermes-transform/-/hermes-transform-0.23.1.tgz#ea6d401117db8398de9723dc1cf936a9a3c8477b"
|
||||
@@ -6360,76 +6390,76 @@ merge2@^1.3.0, merge2@^1.4.1:
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||
|
||||
metro-babel-register@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.81.0-alpha.2.tgz#3ed905de8b7079a63483871e692bb17deabe656c"
|
||||
integrity sha512-XBSStCShFqU487ee7gfj23N9tU65NN9axIv/BxL9Kl1bA91/lXn82X8QaAlcyzOv8+ulSm96h1JN/jnmCVotgA==
|
||||
metro-babel-register@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.81.0.tgz#05e9deda5633e38aceb7120b1865cbbc63c5b8ef"
|
||||
integrity sha512-CU9D49k9ti02ebHXuYlbDNPdBj0C4SnCDIGk328epmcO0p++WzFSWWO92cGc7i0HqKyzgeMskPGJV825Eh7zSg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.25.2"
|
||||
"@babel/plugin-proposal-export-namespace-from" "^7.18.9"
|
||||
"@babel/plugin-transform-flow-strip-types" "^7.25.2"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.24.8"
|
||||
"@babel/preset-typescript" "^7.24.7"
|
||||
"@babel/register" "^7.24.6"
|
||||
"@babel/register" "7.22.5"
|
||||
babel-plugin-replace-ts-export-assignment "^0.0.2"
|
||||
babel-plugin-syntax-hermes-parser "0.23.1"
|
||||
babel-plugin-syntax-hermes-parser "0.24.0"
|
||||
babel-plugin-transform-flow-enums "^0.0.2"
|
||||
escape-string-regexp "^1.0.5"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
|
||||
metro-babel-transformer@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.81.0-alpha.2.tgz#b4e3173c342c986c0b98acd72c64ee4da4c37ee1"
|
||||
integrity sha512-OGjDXZGthGnMKH6GGrCYomXl5JT3CXhbPQe9Q0T2+AvFG5OYj4/SAhxqPZ0LgJ+aGAubCD30WoYJ+CZ0H1eEmg==
|
||||
metro-babel-transformer@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz#cf468eafea52e4d8a77844eb7257f8a76e9d9d94"
|
||||
integrity sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.25.2"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
hermes-parser "0.23.1"
|
||||
hermes-parser "0.24.0"
|
||||
nullthrows "^1.1.1"
|
||||
|
||||
metro-cache-key@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.81.0-alpha.2.tgz#85dff024d894b44f9d61422786063074e6345403"
|
||||
integrity sha512-XE6LdsTrz5lBWznCKUBGrGlwQrbrHp37Q0SLRgG3xGDI33QmGD8U9DdY4siyGUdo+JD+h1T1RfAM72zWefn9Sw==
|
||||
metro-cache-key@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.81.0.tgz#5db34fa1a323a2310205bda7abd0df9614e36f45"
|
||||
integrity sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
|
||||
metro-cache@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.81.0-alpha.2.tgz#044d1132c66ffb6f49a4c5c70591296e0125908f"
|
||||
integrity sha512-fAnaC/PTY0CxG4oaHWYd6JIKUF7lPswHEQvrAcULohdc7qdaOlLZwhIn5+IbhGoi2wYmygNtJAQ75dmaW5udQw==
|
||||
metro-cache@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.81.0.tgz#90470d10d190ad708f04c6e337eec2c7cddb3db0"
|
||||
integrity sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g==
|
||||
dependencies:
|
||||
exponential-backoff "^3.1.1"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
metro-core "0.81.0-alpha.2"
|
||||
metro-core "0.81.0"
|
||||
|
||||
metro-config@0.81.0-alpha.2, metro-config@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.81.0-alpha.2.tgz#a110744b72c1397d818568b3b4dc8e096fb58393"
|
||||
integrity sha512-HcAxiXW3nahJBKB2RmM7v+Y1hDsBw0tQWIksmIoRTEm6LqF0XbrONEg0MS5sGvWSe3TH3+hG/CWA9Brs9kuKuA==
|
||||
metro-config@0.81.0, metro-config@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.81.0.tgz#8f8074033cb7e9ddb5b0459642adf6880bc9fbc1"
|
||||
integrity sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg==
|
||||
dependencies:
|
||||
connect "^3.6.5"
|
||||
cosmiconfig "^5.0.5"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
jest-validate "^29.6.3"
|
||||
metro "0.81.0-alpha.2"
|
||||
metro-cache "0.81.0-alpha.2"
|
||||
metro-core "0.81.0-alpha.2"
|
||||
metro-runtime "0.81.0-alpha.2"
|
||||
metro "0.81.0"
|
||||
metro-cache "0.81.0"
|
||||
metro-core "0.81.0"
|
||||
metro-runtime "0.81.0"
|
||||
|
||||
metro-core@0.81.0-alpha.2, metro-core@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.81.0-alpha.2.tgz#bf997b05bda00491194c95934ce5b1374f8d093e"
|
||||
integrity sha512-U8bknkQK0a15F5ZPku5QP/ZmnYxhbYY5X+Pw0Gx+rpkeWf8vdfB+4r/usuzIh9kaZErZHTZNEMI7dZ4/4boRpQ==
|
||||
metro-core@0.81.0, metro-core@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.81.0.tgz#d0b634f9cf97849b7730c59457ab7a439811d4c8"
|
||||
integrity sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
lodash.throttle "^4.1.1"
|
||||
metro-resolver "0.81.0-alpha.2"
|
||||
metro-resolver "0.81.0"
|
||||
|
||||
metro-file-map@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.81.0-alpha.2.tgz#450310f28da447f6e6438acf1bc387895c58d416"
|
||||
integrity sha512-bR/V5oKIk2OTNpTx9Xy2pYKDEUYbngUs/YsLFDkK4YFuO1FDJZxTcPr6sgMSJignz/AC2gx/oO3zpbO7I3GKJQ==
|
||||
metro-file-map@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.81.0.tgz#af0ccf4f8db4fd8429f78f231faa49dde2c402c3"
|
||||
integrity sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg==
|
||||
dependencies:
|
||||
anymatch "^3.0.3"
|
||||
debug "^2.2.0"
|
||||
@@ -6445,69 +6475,69 @@ metro-file-map@0.81.0-alpha.2:
|
||||
optionalDependencies:
|
||||
fsevents "^2.3.2"
|
||||
|
||||
metro-memory-fs@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.81.0-alpha.2.tgz#241280cc64ade326f1ffb1df6fc77506de7f9858"
|
||||
integrity sha512-4owL5ha/vNmwZvHhIQ48lZ1gSqbaIHOpt1Mmv3iQoe/z9Foe+SYLTPbCU3Dt5yK9oWDvkBYKag66LxPoCsPLRA==
|
||||
metro-memory-fs@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.81.0.tgz#f11ac95bb294f3fd4c933cf93ab9ee6da626d352"
|
||||
integrity sha512-hbmyOuVigPU81Kd+CUCq7tXgEkrHmteWG1WJHTEwldoLHuYUzSeaoE8LlLUbqPF+OPW0asYx/cTDrfNM8KCuqw==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
|
||||
metro-minify-terser@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.81.0-alpha.2.tgz#bd844986ef08f6c5f7ae57828ae973256bb27000"
|
||||
integrity sha512-cAqqFWP5UO0ImNu7c3xIrXCLltvm9OIng2kIe/+nU9CC70K7pATxdtWpC0PA9dt2MsfY2583i3pu/rr5qIY0Yw==
|
||||
metro-minify-terser@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.81.0.tgz#8b0abe977d63a99b99fa94d53678ef3170d5b659"
|
||||
integrity sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
terser "^5.15.0"
|
||||
|
||||
metro-resolver@0.81.0-alpha.2, metro-resolver@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.81.0-alpha.2.tgz#30402262f96ee1f1aa43408b1f91508a50da1be5"
|
||||
integrity sha512-C4KGAki0jeUq1wqFrsD0R6FgmYL+6weDuze/5SolMmBflaU03hY9ZiQUsNuEWgU7+OG+A0q6PBwcskBUXBpW6Q==
|
||||
metro-resolver@0.81.0, metro-resolver@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.81.0.tgz#141f4837e1e0c5a1810ea02f2d9be3c9f6cf3766"
|
||||
integrity sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
|
||||
metro-runtime@0.81.0-alpha.2, metro-runtime@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.81.0-alpha.2.tgz#216f02d5473799379403db71a0a6ec1b791197f6"
|
||||
integrity sha512-uP+7ejq7R+WOV39TucJsgeRalA8jlw5l3JtID+Iu8zZvzJT0WO4VlINAFVS5n6Xk7tK+dkqGH1oF0lst1X+qNw==
|
||||
metro-runtime@0.81.0, metro-runtime@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.81.0.tgz#63af9b3fec15d1f307d89ef4881f5ba2c592291e"
|
||||
integrity sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.25.0"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
|
||||
metro-source-map@0.81.0-alpha.2, metro-source-map@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.81.0-alpha.2.tgz#c8264efda5e312cb87a9b0ac78b7eb0e6808c92a"
|
||||
integrity sha512-R5obOY4guE8D2fckCjoYrf+NHWwiorOBPSLr9jXLKXqdo7c3dCG9Fp9U1vJc4qKTJjhHN+bHND/+Ih8UPHH9zg==
|
||||
metro-source-map@0.81.0, metro-source-map@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.81.0.tgz#ca83964124bb227d5f0bdb1ee304dbfe635f869e"
|
||||
integrity sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g==
|
||||
dependencies:
|
||||
"@babel/traverse" "^7.25.3"
|
||||
"@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3"
|
||||
"@babel/types" "^7.25.2"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
invariant "^2.2.4"
|
||||
metro-symbolicate "0.81.0-alpha.2"
|
||||
metro-symbolicate "0.81.0"
|
||||
nullthrows "^1.1.1"
|
||||
ob1 "0.81.0-alpha.2"
|
||||
ob1 "0.81.0"
|
||||
source-map "^0.5.6"
|
||||
vlq "^1.0.0"
|
||||
|
||||
metro-symbolicate@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.81.0-alpha.2.tgz#7aebb285b516b03df09ac8b3cc57611f7642db94"
|
||||
integrity sha512-S5v09d93mg3C8iGwAZwhDwiDg5kW7DnGi9OOvb8+gtBJ9EzxV9/z3BPG1NFkzQ/ymnIEUcaQ1N8BpEgrXnsI6g==
|
||||
metro-symbolicate@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.81.0.tgz#b7b1eae8bfd6ad2a922fa2bcb9f2144e464adafb"
|
||||
integrity sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
invariant "^2.2.4"
|
||||
metro-source-map "0.81.0-alpha.2"
|
||||
metro-source-map "0.81.0"
|
||||
nullthrows "^1.1.1"
|
||||
source-map "^0.5.6"
|
||||
through2 "^2.0.1"
|
||||
vlq "^1.0.0"
|
||||
|
||||
metro-transform-plugins@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.81.0-alpha.2.tgz#7fd204f91975c4dc8145d613b54f982ec892ba84"
|
||||
integrity sha512-VtK38ytQ9mK1v/JOm1wW1AvZjO/Fsd8krNZy6riRj2fstcKkNx6LL1j5TtwINBUjCY1WPrpunQtG+Wc98LMiHQ==
|
||||
metro-transform-plugins@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.81.0.tgz#614c0e50593df545487b3f3383fed810c608fb32"
|
||||
integrity sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q==
|
||||
dependencies:
|
||||
"@babel/core" "^7.25.2"
|
||||
"@babel/generator" "^7.25.0"
|
||||
@@ -6516,29 +6546,29 @@ metro-transform-plugins@0.81.0-alpha.2:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
nullthrows "^1.1.1"
|
||||
|
||||
metro-transform-worker@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.81.0-alpha.2.tgz#a18a386139c9e74e189e5bc94c6d6028aba35ba7"
|
||||
integrity sha512-DBzR0gf7rBB42NDFuZ9hfTrvpSNDnKSHsp+TKMBtsVRtb3UpbnuH1iiO7HNV7Dro5E8nNjkYuUnLE6tC6CNFYQ==
|
||||
metro-transform-worker@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.81.0.tgz#43e63c95014f36786f0e1a132c778c6392950de7"
|
||||
integrity sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.25.2"
|
||||
"@babel/generator" "^7.25.0"
|
||||
"@babel/parser" "^7.25.3"
|
||||
"@babel/types" "^7.25.2"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
metro "0.81.0-alpha.2"
|
||||
metro-babel-transformer "0.81.0-alpha.2"
|
||||
metro-cache "0.81.0-alpha.2"
|
||||
metro-cache-key "0.81.0-alpha.2"
|
||||
metro-minify-terser "0.81.0-alpha.2"
|
||||
metro-source-map "0.81.0-alpha.2"
|
||||
metro-transform-plugins "0.81.0-alpha.2"
|
||||
metro "0.81.0"
|
||||
metro-babel-transformer "0.81.0"
|
||||
metro-cache "0.81.0"
|
||||
metro-cache-key "0.81.0"
|
||||
metro-minify-terser "0.81.0"
|
||||
metro-source-map "0.81.0"
|
||||
metro-transform-plugins "0.81.0"
|
||||
nullthrows "^1.1.1"
|
||||
|
||||
metro@0.81.0-alpha.2, metro@^0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/metro/-/metro-0.81.0-alpha.2.tgz#69059bda8f4194809d206cfae89ff2f06a53e5a7"
|
||||
integrity sha512-ZfL5IjEEuMtM5A5tVKL2LNv/WO6Gj1RhdIsW+3uz3BB0Y/ZqMdfp61qVWNCV7kGWMqunee3ER0P1EUuPHfIb0Q==
|
||||
metro@0.81.0, metro@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/metro/-/metro-0.81.0.tgz#cffe9b7d597728dee8b57903ca155417b7c13a4f"
|
||||
integrity sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.24.7"
|
||||
"@babel/core" "^7.25.2"
|
||||
@@ -6556,24 +6586,24 @@ metro@0.81.0-alpha.2, metro@^0.81.0-alpha.2:
|
||||
error-stack-parser "^2.0.6"
|
||||
flow-enums-runtime "^0.0.6"
|
||||
graceful-fs "^4.2.4"
|
||||
hermes-parser "0.23.1"
|
||||
hermes-parser "0.24.0"
|
||||
image-size "^1.0.2"
|
||||
invariant "^2.2.4"
|
||||
jest-worker "^29.6.3"
|
||||
jsc-safe-url "^0.2.2"
|
||||
lodash.throttle "^4.1.1"
|
||||
metro-babel-transformer "0.81.0-alpha.2"
|
||||
metro-cache "0.81.0-alpha.2"
|
||||
metro-cache-key "0.81.0-alpha.2"
|
||||
metro-config "0.81.0-alpha.2"
|
||||
metro-core "0.81.0-alpha.2"
|
||||
metro-file-map "0.81.0-alpha.2"
|
||||
metro-resolver "0.81.0-alpha.2"
|
||||
metro-runtime "0.81.0-alpha.2"
|
||||
metro-source-map "0.81.0-alpha.2"
|
||||
metro-symbolicate "0.81.0-alpha.2"
|
||||
metro-transform-plugins "0.81.0-alpha.2"
|
||||
metro-transform-worker "0.81.0-alpha.2"
|
||||
metro-babel-transformer "0.81.0"
|
||||
metro-cache "0.81.0"
|
||||
metro-cache-key "0.81.0"
|
||||
metro-config "0.81.0"
|
||||
metro-core "0.81.0"
|
||||
metro-file-map "0.81.0"
|
||||
metro-resolver "0.81.0"
|
||||
metro-runtime "0.81.0"
|
||||
metro-source-map "0.81.0"
|
||||
metro-symbolicate "0.81.0"
|
||||
metro-transform-plugins "0.81.0"
|
||||
metro-transform-worker "0.81.0"
|
||||
mime-types "^2.1.27"
|
||||
nullthrows "^1.1.1"
|
||||
serialize-error "^2.1.0"
|
||||
@@ -6851,10 +6881,10 @@ oauth-sign@~0.9.0:
|
||||
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
|
||||
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
|
||||
|
||||
ob1@0.81.0-alpha.2:
|
||||
version "0.81.0-alpha.2"
|
||||
resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.81.0-alpha.2.tgz#45ac7fc423577fee88425476908793905df6a3c5"
|
||||
integrity sha512-wii3uNfV58CK6KzM6o1HzlUAYZJbsbNm3dQHMQJeTok6jZzF/aDYZrbuI4U4V4HkKxrHL2QgRf2rKDlDU9Au9g==
|
||||
ob1@0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.81.0.tgz#dc3154cca7aa9c2eb58f5ac63e9ee23ff4c6f520"
|
||||
integrity sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ==
|
||||
dependencies:
|
||||
flow-enums-runtime "^0.0.6"
|
||||
|
||||
@@ -7177,7 +7207,7 @@ pinpoint@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874"
|
||||
integrity sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==
|
||||
|
||||
pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6:
|
||||
pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5, pirates@^4.0.6:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
Reference in New Issue
Block a user