Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Hotfix] 0.76.9 #1169

Merged
merged 11 commits into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,9 @@ jobs:
- checkout
- yarn_install
- run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
- run: npm run publish
- run:
name: Infer dist-tag and run npm run publish
command: ./.circleci/scripts/publish.sh
- run: rm ~/.npmrc

workflows:
Expand All @@ -134,4 +136,4 @@ workflows:
branches:
ignore: /.*/
tags:
only: /v[0-9]+(\.[0-9]+)*/
only: /v\d+(\.\d+){2}(-.*)?/
27 changes: 27 additions & 0 deletions .circleci/scripts/publish.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/sh
# 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.

# Reduce a semver tag name to a Metro's release branch naming convention, eg v0.1.2-alpha.3 -> 0.1.x
RELEASE_BRANCH=$(echo "$CIRCLE_TAG" | awk -F. '{print substr($1, 2) "." $2 ".x"}')

# Does a release branch contain this tag (hotfix workflow)
TAG_ON_RELEASE_BRANCH=$(git branch -a --contains "$CIRCLE_TAG" | grep -cFx " remotes/origin/$RELEASE_BRANCH" || true)
echo "Tag is on release branch $RELEASE_BRANCH: $TAG_ON_RELEASE_BRANCH"

# Does main contain this tag (regular release workflow)
TAG_ON_MAIN=$(git branch -a --contains "$CIRCLE_TAG" | grep -cFx ' remotes/origin/main' || true)
echo "Tag is on main branch: $TAG_ON_MAIN"

if [ $TAG_ON_RELEASE_BRANCH -eq $TAG_ON_MAIN ]; then
echo "Could not determine whether this tag is 'latest' or a hotfix. Aborting."
exit 1
fi

NPM_TAG="latest"
[ "$TAG_ON_RELEASE_BRANCH" -eq 1 ] && NPM_TAG=$RELEASE_BRANCH
echo "Publishing with --tag=$NPM_TAG"

npm run publish --tag="$NPM_TAG"
4 changes: 2 additions & 2 deletions packages/buck-worker-tool/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "buck-worker-tool",
"version": "0.76.8",
"version": "0.76.9",
"description": "Implementation of the Buck worker protocol for Node.js.",
"license": "MIT",
"main": "src/worker-tool.js",
Expand All @@ -12,7 +12,7 @@
"through": ">=2.2.7 <3"
},
"devDependencies": {
"metro-memory-fs": "0.76.8"
"metro-memory-fs": "0.76.9"
},
"scripts": {
"prepare-release": "test -d build && rm -rf src.real && mv src src.real && mv build src",
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-babel-register/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-babel-register",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 babel/register configuration for Metro.",
"main": "src/babel-register.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-babel-transformer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-babel-transformer",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Base Babel transformer for Metro.",
"main": "src/index.js",
"repository": {
Expand Down
4 changes: 2 additions & 2 deletions packages/metro-cache-key/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-cache-key",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Cache key utility.",
"main": "src/index.js",
"repository": {
Expand All @@ -13,7 +13,7 @@
},
"license": "MIT",
"devDependencies": {
"metro-memory-fs": "0.76.8"
"metro-memory-fs": "0.76.9"
},
"engines": {
"node": ">=16"
Expand Down
6 changes: 3 additions & 3 deletions packages/metro-cache/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-cache",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Cache layers for Metro.",
"main": "src/index.js",
"repository": {
Expand All @@ -12,11 +12,11 @@
"cleanup-release": "test ! -e build && mv src build && mv src.real src"
},
"dependencies": {
"metro-core": "0.76.8",
"metro-core": "0.76.9",
"rimraf": "^3.0.2"
},
"devDependencies": {
"metro-memory-fs": "0.76.8"
"metro-memory-fs": "0.76.9"
},
"license": "MIT",
"engines": {
Expand Down
10 changes: 5 additions & 5 deletions packages/metro-config/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-config",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Config parser for Metro.",
"main": "src/index.js",
"repository": {
Expand All @@ -16,10 +16,10 @@
"connect": "^3.6.5",
"cosmiconfig": "^5.0.5",
"jest-validate": "^29.2.1",
"metro": "0.76.8",
"metro-cache": "0.76.8",
"metro-core": "0.76.8",
"metro-runtime": "0.76.8"
"metro": "0.76.9",
"metro-cache": "0.76.9",
"metro-core": "0.76.9",
"metro-runtime": "0.76.9"
},
"devDependencies": {
"@types/connect": "^3.4.35",
Expand Down
4 changes: 2 additions & 2 deletions packages/metro-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-core",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Metro's core package.",
"main": "src/index.js",
"repository": {
Expand All @@ -13,7 +13,7 @@
},
"dependencies": {
"lodash.throttle": "^4.1.1",
"metro-resolver": "0.76.8"
"metro-resolver": "0.76.9"
},
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-file-map/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-file-map",
"version": "0.76.8",
"version": "0.76.9",
"description": "[Experimental] - 🚇 File crawling, watching and mapping for Metro",
"main": "src/index.js",
"repository": {
Expand Down
73 changes: 44 additions & 29 deletions packages/metro-file-map/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -904,33 +904,39 @@ export default class HasteMap extends EventEmitter {
const rootDir = this._options.rootDir;

let changeQueue: Promise<null | void> = Promise.resolve();
let eventsQueue: EventsQueue = [];
let eventStartTimestamp = null;
let nextEmit: ?{
eventsQueue: EventsQueue,
firstEventTimestamp: number,
firstEnqueuedTimestamp: number,
} = null;

const emitChange = () => {
if (eventsQueue.length) {
const hmrPerfLogger = this._options.perfLoggerFactory?.('HMR', {
key: this._getNextChangeID(),
if (nextEmit == null || nextEmit.eventsQueue.length === 0) {
// Nothing to emit
return;
}
const {eventsQueue, firstEventTimestamp, firstEnqueuedTimestamp} =
nextEmit;
const hmrPerfLogger = this._options.perfLoggerFactory?.('HMR', {
key: this._getNextChangeID(),
});
if (hmrPerfLogger != null) {
hmrPerfLogger.start({timestamp: firstEventTimestamp});
hmrPerfLogger.point('waitingForChangeInterval_start', {
timestamp: firstEnqueuedTimestamp,
});
if (hmrPerfLogger != null) {
hmrPerfLogger.start({timestamp: nullthrows(eventStartTimestamp)});
hmrPerfLogger.point('waitingForChangeInterval_start', {
timestamp: nullthrows(eventStartTimestamp),
});
hmrPerfLogger.point('waitingForChangeInterval_end');
hmrPerfLogger.annotate({
int: {eventsQueueLength: eventsQueue.length},
});
hmrPerfLogger.point('fileChange_start');
}
const changeEvent: ChangeEvent = {
logger: hmrPerfLogger,
eventsQueue,
};
this.emit('change', changeEvent);
eventsQueue = [];
eventStartTimestamp = null;
hmrPerfLogger.point('waitingForChangeInterval_end');
hmrPerfLogger.annotate({
int: {eventsQueueLength: eventsQueue.length},
});
hmrPerfLogger.point('fileChange_start');
}
const changeEvent: ChangeEvent = {
logger: hmrPerfLogger,
eventsQueue,
};
this.emit('change', changeEvent);
nextEmit = null;
};

const onChange = (
Expand Down Expand Up @@ -975,15 +981,14 @@ export default class HasteMap extends EventEmitter {
return;
}

if (eventStartTimestamp == null) {
eventStartTimestamp = performance.timeOrigin + performance.now();
}
const onChangeStartTime = performance.timeOrigin + performance.now();

changeQueue = changeQueue
.then(async () => {
// If we get duplicate events for the same file, ignore them.
if (
eventsQueue.find(
nextEmit != null &&
nextEmit.eventsQueue.find(
event =>
event.type === type &&
event.filePath === absoluteFilePath &&
Expand All @@ -1001,11 +1006,21 @@ export default class HasteMap extends EventEmitter {
const linkStats = fileSystem.linkStats(relativeFilePath);

const enqueueEvent = (metadata: ChangeEventMetadata) => {
eventsQueue.push({
const event = {
filePath: absoluteFilePath,
metadata,
type,
});
};
if (nextEmit == null) {
nextEmit = {
eventsQueue: [event],
firstEventTimestamp: onChangeStartTime,
firstEnqueuedTimestamp:
performance.timeOrigin + performance.now(),
};
} else {
nextEmit.eventsQueue.push(event);
}
return null;
};

Expand Down
2 changes: 1 addition & 1 deletion packages/metro-inspector-proxy/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-inspector-proxy",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Inspector proxy for React Native and dev tools integration.",
"main": "src/index.js",
"bin": "src/cli.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-memory-fs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-memory-fs",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 A memory-based implementation of `fs` useful for testing.",
"main": "src/index.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-minify-terser/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-minify-terser",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Minifier for Metro based on Terser.",
"main": "src/index.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-minify-uglify/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-minify-uglify",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Minifier for Metro based on Uglify.",
"main": "src/index.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-react-native-babel-preset/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-react-native-babel-preset",
"version": "0.76.8",
"version": "0.76.9",
"description": "Babel preset for React Native applications",
"main": "src/index.js",
"repository": {
Expand Down
4 changes: 2 additions & 2 deletions packages/metro-react-native-babel-transformer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-react-native-babel-transformer",
"version": "0.76.8",
"version": "0.76.9",
"description": "Babel transformer for React Native applications.",
"main": "src/index.js",
"repository": {
Expand All @@ -21,7 +21,7 @@
"@babel/core": "^7.20.0",
"babel-preset-fbjs": "^3.4.0",
"hermes-parser": "0.12.0",
"metro-react-native-babel-preset": "0.76.8",
"metro-react-native-babel-preset": "0.76.9",
"nullthrows": "^1.1.1"
},
"peerDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-react-native-interop-tools/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-react-native-interop-tools",
"version": "0.76.8",
"version": "0.76.9",
"description": "Interop tools for React Native applications",
"main": "src/index.js",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-resolver/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-resolver",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Implementation of Metro's resolution logic.",
"main": "src",
"repository": {
Expand Down
18 changes: 18 additions & 0 deletions packages/metro-resolver/src/__tests__/package-exports-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,24 @@ describe('with package exports resolution enabled', () => {
expect(logWarning).not.toHaveBeenCalled();
});
});

describe('haste package', () => {
test('should resolve subpath in "exports"', () => {
const context = {
...baseContext,
resolveHastePackage(name: string) {
if (name === 'test-pkg') {
return '/root/node_modules/test-pkg/package.json';
}
return null;
},
};
expect(Resolver.resolve(context, 'test-pkg/foo.js', null)).toEqual({
type: 'sourceFile',
filePath: '/root/node_modules/test-pkg/lib/foo.js',
});
});
});
});

describe('subpath patterns', () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-resolver/src/resolve.js
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ function resolveHasteName(
const packageDirPath = path.dirname(packageJsonPath);
const pathInModule = moduleName.substring(packageName.length + 1);
const potentialModulePath = path.join(packageDirPath, pathInModule);
const result = resolveModulePath(context, potentialModulePath, platform);
const result = resolvePackage(context, potentialModulePath, platform);
if (result.type === 'resolved') {
return result;
}
Expand Down
2 changes: 1 addition & 1 deletion packages/metro-runtime/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "metro-runtime",
"version": "0.76.8",
"version": "0.76.9",
"description": "🚇 Module required for evaluating Metro bundles.",
"main": "src",
"repository": {
Expand Down
Loading