(100);
+
+ const handlePress = () => {
+ width.value = withSpring(width.value + 50);
+ };
+
+ const handleReset = () => {
+ width.value = withSpring(100);
+ };
+
+ return (
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ alignItems: 'center',
+ marginVertical: 16,
+ },
+ box: {
+ height: 100,
+ backgroundColor: '#b58df1',
+ borderRadius: 20,
+ marginVertical: 0,
+ },
+ buttons: {
+ flexDirection: 'row',
+ justifyContent: 'space-around',
+ },
+});
diff --git a/packages/plugin-reanimated/README.md b/packages/plugin-reanimated/README.md
new file mode 100644
index 000000000..bd880faef
--- /dev/null
+++ b/packages/plugin-reanimated/README.md
@@ -0,0 +1,96 @@
+
+
+
+
+A toolkit to build your React Native application with Rspack or Webpack.
+
+
+---
+
+[![Build Status][build-badge]][build]
+[![Version][version-badge]][version]
+[![MIT License][license-badge]][license]
+[![PRs Welcome][prs-welcome-badge]][prs-welcome]
+[![Code of Conduct][coc-badge]][coc]
+
+`@callstack/repack-plugin-reanimated` is a plugin for `@callstack/repack` that integrates `react-native-reanimated` into your React Native projects.
+
+## About
+
+This plugin exists in order to simplify the setup required to get `react-native-reanimated` working with Re.Pack and to minimize the impact on build performance. It looks for relevant keywords like `worklet` inside the source before transforming the file with `babel`.
+
+## Installation
+
+```sh
+npm install -D @callstack/repack-plugin-reanimated
+```
+
+## Usage
+
+### Plugin
+
+To add the plugin to your Re.Pack configuration, update your `rspack.config.js` or `webpack.config.js` as follows:
+
+```js
+import { ReanimatedPlugin } from '@callstack/repack-plugin-reanimated';
+
+export default (env) => {
+ // ...
+ return {
+ // ...
+ plugins: [
+ // ...
+ new ReanimatedPlugin(),
+ ],
+ };
+};
+```
+
+### Loader
+
+The plugin also comes with it's own loader, which you can use on it's own inside `rspack.config.js` or `webpack.config.js` like this:
+
+```js
+export default (env) => {
+ // ...
+ return {
+ // ...
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ use: {
+ loader: '@callstack/repack-plugin-reanimated/loader',
+ options: {
+ babelPlugins: [
+ [
+ '@babel/plugin-syntax-typescript',
+ { isTSX: false, allowNamespaces: true },
+ ],
+ ],
+ },
+ },
+ },
+ ],
+ },
+ };
+};
+```
+
+---
+
+Check out our website at https://re-pack.dev for more info and documentation or our GitHub: https://github.com/callstack/repack.
+
+
+
+[callstack-readme-with-love]: https://callstack.com/?utm_source=github.com&utm_medium=referral&utm_campaign=react-native-paper&utm_term=readme-with-love
+[build-badge]: https://img.shields.io/github/workflow/status/callstack/repack/CI/main?style=flat-square
+[build]: https://github.com/callstack/repack/actions/workflows/main.yml
+[version-badge]: https://img.shields.io/npm/v/@callstack/repack-plugin-reanimated?style=flat-square
+[version]: https://www.npmjs.com/package/@callstack/repack-plugin-reanimated
+[license-badge]: https://img.shields.io/npm/l/@callstack/repack-plugin-reanimated?style=flat-square
+[license]: https://github.com/callstack/repack/blob/master/LICENSE
+[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
+[prs-welcome]: ./CONTRIBUTING.md
+[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
+[coc]: https://github.com/callstack/repack/blob/master/CODE_OF_CONDUCT.md
diff --git a/packages/plugin-reanimated/loader/index.d.ts b/packages/plugin-reanimated/loader/index.d.ts
new file mode 100644
index 000000000..7da59b1b3
--- /dev/null
+++ b/packages/plugin-reanimated/loader/index.d.ts
@@ -0,0 +1 @@
+export * from '../dist/loader.js';
diff --git a/packages/plugin-reanimated/loader/index.js b/packages/plugin-reanimated/loader/index.js
new file mode 100644
index 000000000..db08a49f7
--- /dev/null
+++ b/packages/plugin-reanimated/loader/index.js
@@ -0,0 +1 @@
+module.exports = require('../dist/loader.js');
diff --git a/packages/plugin-reanimated/package.json b/packages/plugin-reanimated/package.json
new file mode 100644
index 000000000..0a869a108
--- /dev/null
+++ b/packages/plugin-reanimated/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "@callstack/repack-plugin-reanimated",
+ "version": "5.0.0-rc.2",
+ "description": "A plugin for @callstack/repack that integrates react-native-reanimated",
+ "author": "Jakub RomaĆczyk ",
+ "license": "MIT",
+ "homepage": "https://github.com/callstack/repack",
+ "repository": "github:callstack/repack",
+ "type": "commonjs",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "files": ["dist", "loader"],
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ },
+ "./loader": {
+ "types": "./loader/index.d.ts",
+ "default": "./loader/index.js"
+ }
+ },
+ "keywords": [
+ "repack",
+ "re.pack",
+ "plugin",
+ "repack-plugin",
+ "reanimated",
+ "react-native-reanimated"
+ ],
+ "publishConfig": {
+ "registry": "https://registry.npmjs.org/",
+ "access": "public"
+ },
+ "engineStrict": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "dependencies": {},
+ "peerDependencies": {
+ "@babel/core": "^7.20",
+ "@callstack/repack": "^5"
+ },
+ "devDependencies": {
+ "@callstack/repack": "workspace:*",
+ "@rspack/core": "1.0.8",
+ "@types/babel__core": "7.20.5",
+ "@types/node": "^18"
+ },
+ "scripts": {
+ "build": "tsc -p tsconfig.build.json",
+ "typecheck": "tsc --noEmit"
+ }
+}
diff --git a/packages/plugin-reanimated/src/index.ts b/packages/plugin-reanimated/src/index.ts
new file mode 100644
index 000000000..e364801a8
--- /dev/null
+++ b/packages/plugin-reanimated/src/index.ts
@@ -0,0 +1,2 @@
+export { ReanimatedPlugin } from './plugin.js';
+export { reanimatedModuleRules } from './rules.js';
diff --git a/packages/plugin-reanimated/src/loader.ts b/packages/plugin-reanimated/src/loader.ts
new file mode 100644
index 000000000..a6a918b08
--- /dev/null
+++ b/packages/plugin-reanimated/src/loader.ts
@@ -0,0 +1,70 @@
+import { transform } from '@babel/core';
+import type { LoaderContext } from '@rspack/core';
+
+interface ReanimatedLoaderOptions {
+ babelPlugins?: string[];
+}
+
+// Reference: https://github.com/software-mansion/react-native-reanimated/blob/3.16.3/packages/react-native-reanimated/plugin/src/autoworkletization.ts#L19-L59
+const REANIMATED_AUTOWORKLETIZATION_KEYWORDS = [
+ 'worklet',
+ 'useAnimatedGestureHandler',
+ 'useAnimatedScrollHandler',
+ 'useFrameCallback',
+ 'useAnimatedStyle',
+ 'useAnimatedProps',
+ 'createAnimatedPropAdapter',
+ 'useDerivedValue',
+ 'useAnimatedReaction',
+ 'useWorkletCallback',
+ 'withTiming',
+ 'withSpring',
+ 'withDecay',
+ 'withRepeat',
+ 'runOnUI',
+ 'executeOnUIRuntimeSync',
+];
+
+const REANIMATED_REGEX = new RegExp(
+ REANIMATED_AUTOWORKLETIZATION_KEYWORDS.join('|')
+);
+
+export const raw = false;
+
+export default function reanimatedLoader(
+ this: LoaderContext,
+ source: string
+) {
+ this.cacheable();
+ const callback = this.async();
+ const options = this.getOptions();
+
+ if (!REANIMATED_REGEX.test(source)) {
+ callback(null, source);
+ return;
+ }
+
+ const babelPlugins = options.babelPlugins ?? [];
+
+ transform(
+ source,
+ {
+ filename: this.resourcePath,
+ babelrc: false,
+ configFile: false,
+ compact: false,
+ comments: true,
+ plugins: [...babelPlugins, 'react-native-reanimated/plugin'],
+ },
+ (err, result) => {
+ if (err) {
+ callback(err);
+ return;
+ }
+
+ // @ts-ignore
+ callback(null, result.code, result.map);
+ return;
+ }
+ );
+}
diff --git a/packages/plugin-reanimated/src/plugin.ts b/packages/plugin-reanimated/src/plugin.ts
new file mode 100644
index 000000000..db64b5cb2
--- /dev/null
+++ b/packages/plugin-reanimated/src/plugin.ts
@@ -0,0 +1,9 @@
+import type { Compiler, RspackPluginInstance } from '@rspack/core';
+import { reanimatedModuleRules } from './rules.js';
+
+export class ReanimatedPlugin implements RspackPluginInstance {
+ apply(compiler: Compiler) {
+ // add rules for transpiling wih reanimated loader
+ compiler.options.module.rules.push(reanimatedModuleRules);
+ }
+}
diff --git a/packages/plugin-reanimated/src/rules.ts b/packages/plugin-reanimated/src/rules.ts
new file mode 100644
index 000000000..081d1749f
--- /dev/null
+++ b/packages/plugin-reanimated/src/rules.ts
@@ -0,0 +1,52 @@
+import { getModulePaths } from '@callstack/repack';
+
+export const reanimatedModuleRules = {
+ exclude: getModulePaths([
+ 'react',
+ 'react-native',
+ '@react-native',
+ 'react-native-macos',
+ 'react-native-windows',
+ 'react-native-tvos',
+ '@callstack/react-native-visionos',
+ ]),
+ oneOf: [
+ {
+ test: /\.ts$/,
+ use: {
+ loader: '@callstack/repack-plugin-reanimated/loader',
+ options: {
+ babelPlugins: [
+ [
+ '@babel/plugin-syntax-typescript',
+ { isTSX: false, allowNamespaces: true },
+ ],
+ ],
+ },
+ },
+ },
+ {
+ test: /\.tsx$/,
+ use: {
+ loader: '@callstack/repack-plugin-reanimated/loader',
+ options: {
+ babelPlugins: [
+ [
+ '@babel/plugin-syntax-typescript',
+ { isTSX: true, allowNamespaces: true },
+ ],
+ ],
+ },
+ },
+ },
+ {
+ test: /\.jsx?$/,
+ use: {
+ loader: '@callstack/repack-plugin-reanimated/loader',
+ options: {
+ babelPlugins: ['babel-plugin-syntax-hermes-parser'],
+ },
+ },
+ },
+ ],
+};
diff --git a/packages/plugin-reanimated/tsconfig.build.json b/packages/plugin-reanimated/tsconfig.build.json
new file mode 100644
index 000000000..a74bb84bd
--- /dev/null
+++ b/packages/plugin-reanimated/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "paths": {}
+ }
+}
diff --git a/packages/plugin-reanimated/tsconfig.json b/packages/plugin-reanimated/tsconfig.json
new file mode 100644
index 000000000..ec5007917
--- /dev/null
+++ b/packages/plugin-reanimated/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "target": "ES2021",
+ "lib": ["ES2021"],
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "declaration": true,
+ "sourceMap": false,
+ "rootDirs": ["src", "../repack/src", "../dev-server/src"],
+ "paths": {
+ "@callstack/repack": ["../repack/src/index.ts"],
+ "@callstack/repack/*": ["../repack/src/*"],
+ "@callstack/repack-dev-server": ["../dev-server/src/index.ts"],
+ "@callstack/repack-dev-server/*": ["../dev-server/src/*"],
+ "@react-native/dev-middleware": [
+ "../dev-server/node_modules/@react-native/dev-middleware/dist"
+ ]
+ }
+ },
+ "include": ["src/**/*"]
+}
diff --git a/packages/repack/src/rules/reactNativeLoadingRules.ts b/packages/repack/src/rules/reactNativeLoadingRules.ts
index 0c81a0df3..1fda6e4d4 100644
--- a/packages/repack/src/rules/reactNativeLoadingRules.ts
+++ b/packages/repack/src/rules/reactNativeLoadingRules.ts
@@ -26,7 +26,10 @@ export const REACT_NATIVE_LOADING_RULES: RuleSetRule = {
targets: { 'react-native': '0.74' },
},
jsc: {
- externalHelpers: true,
+ // helpers alter the order of execution and cause weird issues with reanimated
+ // this is very likely an SWC issue
+ // TODO - investigate and reenable helpers in the future
+ externalHelpers: false,
loose: true,
parser: {
syntax: 'ecmascript',
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b3f06286f..9e1b2a627 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -62,6 +62,9 @@ importers:
react-native:
specifier: 0.76.3
version: 0.76.3(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@react-native-community/cli-server-api@15.0.1)(@types/react@18.3.3)(react@18.3.1)
+ react-native-reanimated:
+ specifier: ^3.16.3
+ version: 3.16.3(@babel/core@7.25.2)(react-native@0.76.3(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@react-native-community/cli-server-api@15.0.1)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
react-native-svg:
specifier: 15.8.0
version: 15.8.0(react-native@0.76.3(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@react-native-community/cli-server-api@15.0.1)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
@@ -72,6 +75,9 @@ importers:
'@callstack/repack':
specifier: workspace:*
version: link:../../packages/repack
+ '@callstack/repack-plugin-reanimated':
+ specifier: workspace:*
+ version: link:../../packages/plugin-reanimated
'@react-native-community/cli':
specifier: 15.0.1
version: 15.0.1(typescript@5.5.3)
@@ -88,8 +94,8 @@ importers:
specifier: 0.76.3
version: 0.76.3
'@rsdoctor/rspack-plugin':
- specifier: ^0.4.5
- version: 0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ specifier: ^0.4.11
+ version: 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
'@rspack/core':
specifier: 1.0.8
version: 1.0.8(@swc/helpers@0.5.13)
@@ -416,6 +422,21 @@ importers:
specifier: ^5.5.3
version: 5.5.3
+ packages/plugin-reanimated:
+ devDependencies:
+ '@callstack/repack':
+ specifier: workspace:*
+ version: link:../repack
+ '@rspack/core':
+ specifier: 1.0.8
+ version: 1.0.8(@swc/helpers@0.5.13)
+ '@types/babel__core':
+ specifier: 7.20.5
+ version: 7.20.5
+ '@types/node':
+ specifier: ^18
+ version: 18.19.41
+
packages/repack:
dependencies:
'@callstack/repack-dev-server':
@@ -621,6 +642,10 @@ packages:
resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
+ '@babel/code-frame@7.25.7':
+ resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==}
+ engines: {node: '>=6.9.0'}
+
'@babel/compat-data@7.25.4':
resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
engines: {node: '>=6.9.0'}
@@ -712,6 +737,10 @@ packages:
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-option@7.24.8':
resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
engines: {node: '>=6.9.0'}
@@ -728,6 +757,10 @@ packages:
resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
+ '@babel/highlight@7.25.9':
+ resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/parser@7.25.6':
resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
engines: {node: '>=6.0.0'}
@@ -2278,23 +2311,49 @@ packages:
peerDependencies:
'@rsbuild/core': 1.x || ^1.0.1-rc.0
+ '@rsdoctor/client@0.4.11':
+ resolution: {integrity: sha512-UqLwDcolExZ0QaKlnYZ7lGW6/MtKMw+aEv3IYPi6ByBlHY/Q6GlvgieR6BqSJXGg4ai7acKXbmZJqLaICPml0Q==}
+
'@rsdoctor/client@0.4.5':
resolution: {integrity: sha512-JzTBH4UAI70ftV5GfwF+oCs6Hf9Jq2FXerg9AlRwQgPpQoLLdke0tJYwvuEzSVxuVqAWKB3Z1mQwRm/fwo08xg==}
+ '@rsdoctor/core@0.4.11':
+ resolution: {integrity: sha512-CBBxk/RAkYg/ATKYk/LZIq5TrLR9q1B6xNZtBkLCko0NYzk76PovllF23ZoLwIzPgNI2i2EBVgajHZNJs2OXKA==}
+
'@rsdoctor/core@0.4.5':
resolution: {integrity: sha512-5KiDjIKK4psRRPeCwIcudKaTkR+rz854SezHqEhCnLAhsfOcFVDjfjyRFTyevdCaAnK6qnQgM3qNRuxiw+3kdw==}
+ '@rsdoctor/graph@0.4.11':
+ resolution: {integrity: sha512-K+dWjeN5QeqWAwmwZPUyJyozz9WZAqf4PbKagzqa9SxcTM5Sx0HeeKJlJTPG9SwDsBKPSBJ8fXnxhIJyjeuI4w==}
+
'@rsdoctor/graph@0.4.5':
resolution: {integrity: sha512-ugDDVoWJZ1djlqE0F9tJPNmFXCA6j49oCPeL7fIhYcxayQlrMiQOCHmgqbD84QFCuOJoyCHm44w6y+BAs9nTgw==}
+ '@rsdoctor/rspack-plugin@0.4.11':
+ resolution: {integrity: sha512-TcWOJSCKETdLThJLRgVaL2wbwV33UCrwi9kNOluoizpJksrv/GVmUibkcp4ToCVxHGleAriB9vxdRrccYN6oqA==}
+ peerDependencies:
+ '@rspack/core': '*'
+
'@rsdoctor/rspack-plugin@0.4.5':
resolution: {integrity: sha512-pAKN2hS4s+47GXfolHwC+uAe8Dxh4Y/VWinMaxpZmnDt1LeUX2ynvz7Hy8r1Q5vaG1mC6FxdKMrEDGMB9Ck1WQ==}
peerDependencies:
'@rspack/core': '*'
+ '@rsdoctor/sdk@0.4.11':
+ resolution: {integrity: sha512-8GNUtqSoZSElnQ8NfPdD8jnjMj6O4YpX18Y31VPNW9+wQhYo+Cvx2l90Y0j6JiCcqSObDVjE9OruNZTD5u+o3g==}
+
'@rsdoctor/sdk@0.4.5':
resolution: {integrity: sha512-j5lQOJt0UOkLUU2fWyeL6kP/EZVZTavg/1p5hCBWlarYpUECl/iH2m/EDT1nxqrPf2tlxTaEfzTlGy9TH4Cm0w==}
+ '@rsdoctor/types@0.4.11':
+ resolution: {integrity: sha512-wxevR9h6fwtN9vkEionLy8O8Rs+j2prxi1nhtooNCSMH80q6svUnQxXouKjCWCeXvoalxTyBSk5+OoGV3lgfiA==}
+ peerDependencies:
+ '@rspack/core': '*'
+ webpack: 5.x
+ peerDependenciesMeta:
+ '@rspack/core':
+ optional: true
+
'@rsdoctor/types@0.4.5':
resolution: {integrity: sha512-KZamdG7Vc7d26DkPizO5EKvSeI+OFR35UcyMxRfiswDAo3EJJxtuebKh8TsHDBDvYNhOgAWTT5DcvouhBYJRhg==}
peerDependencies:
@@ -2304,6 +2363,9 @@ packages:
'@rspack/core':
optional: true
+ '@rsdoctor/utils@0.4.11':
+ resolution: {integrity: sha512-hLtd4Nuq8nYZMbnsYI59YCqGBFwB0SgPdenV3e2FZLpge8gBKz+5NYceurqwxoc/JiZMV3L/fQu75W8lz4XqNA==}
+
'@rsdoctor/utils@0.4.5':
resolution: {integrity: sha512-ueEpGDRCufy2s60Q4mI83qYEroeaELFQr3QdxCCjC+BJylRNJiPYe9fb1o6gnSWHw2QKhCC/HUPLcz+twbMvyg==}
@@ -2903,6 +2965,7 @@ packages:
acorn-import-assertions@1.9.0:
resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
+ deprecated: package has been renamed to acorn-import-attributes
peerDependencies:
acorn: ^8
@@ -3051,6 +3114,9 @@ packages:
axios@1.7.7:
resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==}
+ axios@1.7.9:
+ resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==}
+
babel-core@7.0.0-bridge.0:
resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==}
peerDependencies:
@@ -4905,6 +4971,10 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ json-cycle@1.5.0:
+ resolution: {integrity: sha512-GOehvd5PO2FeZ5T4c+RxobeT5a1PiGpF4u9/3+UvrMU4bhnVqzJY7hm39wg8PDCqkU91fWGH8qjWR4bn+wgq9w==}
+ engines: {node: '>= 4'}
+
json-parse-better-errors@1.0.2:
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
@@ -6066,6 +6136,13 @@ packages:
react-lazy-with-preload@2.2.1:
resolution: {integrity: sha512-ONSb8gizLE5jFpdHAclZ6EAAKuFX2JydnFXPPPjoUImZlLjGtKzyBS8SJgJq7CpLgsGKh9QCZdugJyEEOVC16Q==}
+ react-native-reanimated@3.16.3:
+ resolution: {integrity: sha512-OWlA6e1oHhytTpc7WiSZ7Tmb8OYwLKYZz29Sz6d6WAg60Hm5GuAiKIWUG7Ako7FLcYhFkA0pEQ2xPMEYUo9vlw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ react: '*'
+ react-native: '*'
+
react-native-safe-area-context@4.14.0:
resolution: {integrity: sha512-/SyYpCulWQOnnXhRq6wepkhoyQMowHm1ptDyRz20s+YS/R9mbd+mK+jFyFCyXFJn8jp7vFl43VUCgspuOiEbwA==}
peerDependencies:
@@ -7480,6 +7557,11 @@ snapshots:
'@babel/highlight': 7.24.7
picocolors: 1.1.1
+ '@babel/code-frame@7.25.7':
+ dependencies:
+ '@babel/highlight': 7.25.9
+ picocolors: 1.1.1
+
'@babel/compat-data@7.25.4': {}
'@babel/core@7.25.2':
@@ -7625,6 +7707,8 @@ snapshots:
'@babel/helper-validator-identifier@7.24.7': {}
+ '@babel/helper-validator-identifier@7.25.9': {}
+
'@babel/helper-validator-option@7.24.8': {}
'@babel/helper-wrap-function@7.25.0':
@@ -7647,6 +7731,13 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
+ '@babel/highlight@7.25.9':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
'@babel/parser@7.25.6':
dependencies:
'@babel/types': 7.25.6
@@ -9769,8 +9860,33 @@ snapshots:
reduce-configs: 1.0.0
sass-embedded: 1.80.1
+ '@rsdoctor/client@0.4.11': {}
+
'@rsdoctor/client@0.4.5': {}
+ '@rsdoctor/core@0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ dependencies:
+ '@rsdoctor/graph': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/sdk': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/types': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/utils': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ axios: 1.7.9
+ enhanced-resolve: 5.12.0
+ filesize: 10.1.6
+ fs-extra: 11.2.0
+ lodash: 4.17.21
+ path-browserify: 1.0.1
+ semver: 7.6.3
+ source-map: 0.7.4
+ webpack-bundle-analyzer: 4.10.2
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - bufferutil
+ - debug
+ - supports-color
+ - utf-8-validate
+ - webpack
+
'@rsdoctor/core@0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
dependencies:
'@rsdoctor/graph': 0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
@@ -9794,6 +9910,20 @@ snapshots:
- utf-8-validate
- webpack
+ '@rsdoctor/graph@0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ dependencies:
+ '@rsdoctor/types': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/utils': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ lodash: 4.17.21
+ socket.io: 4.7.2
+ source-map: 0.7.4
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ - webpack
+
'@rsdoctor/graph@0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
dependencies:
'@rsdoctor/types': 0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
@@ -9808,6 +9938,22 @@ snapshots:
- utf-8-validate
- webpack
+ '@rsdoctor/rspack-plugin@0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ dependencies:
+ '@rsdoctor/core': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/graph': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/sdk': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/types': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/utils': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rspack/core': 1.0.8(@swc/helpers@0.5.13)
+ lodash: 4.17.21
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - supports-color
+ - utf-8-validate
+ - webpack
+
'@rsdoctor/rspack-plugin@0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
dependencies:
'@rsdoctor/core': 0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
@@ -9824,6 +9970,31 @@ snapshots:
- utf-8-validate
- webpack
+ '@rsdoctor/sdk@0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ dependencies:
+ '@rsdoctor/client': 0.4.11
+ '@rsdoctor/graph': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/types': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/utils': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@types/fs-extra': 11.0.4
+ body-parser: 1.20.3
+ cors: 2.8.5
+ dayjs: 1.11.13
+ fs-extra: 11.2.0
+ json-cycle: 1.5.0
+ lodash: 4.17.21
+ open: 8.4.2
+ serve-static: 1.16.2
+ socket.io: 4.7.2
+ source-map: 0.7.4
+ tapable: 2.2.1
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ - webpack
+
'@rsdoctor/sdk@0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
dependencies:
'@rsdoctor/client': 0.4.5
@@ -9848,6 +10019,16 @@ snapshots:
- utf-8-validate
- webpack
+ '@rsdoctor/types@0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ dependencies:
+ '@types/connect': 3.4.38
+ '@types/estree': 1.0.5
+ '@types/tapable': 2.2.7
+ source-map: 0.7.4
+ webpack: 5.94.0
+ optionalDependencies:
+ '@rspack/core': 1.0.8(@swc/helpers@0.5.13)
+
'@rsdoctor/types@0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
dependencies:
'@types/connect': 3.4.38
@@ -9858,6 +10039,31 @@ snapshots:
optionalDependencies:
'@rspack/core': 1.0.8(@swc/helpers@0.5.13)
+ '@rsdoctor/utils@0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ dependencies:
+ '@babel/code-frame': 7.25.7
+ '@rsdoctor/types': 0.4.11(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@types/estree': 1.0.5
+ acorn: 8.12.1
+ acorn-import-assertions: 1.9.0(acorn@8.12.1)
+ acorn-walk: 8.3.4
+ chalk: 4.1.2
+ connect: 3.7.0
+ deep-eql: 4.1.4
+ envinfo: 7.14.0
+ filesize: 10.1.6
+ fs-extra: 11.2.0
+ get-port: 5.1.1
+ json-stream-stringify: 3.0.1
+ lines-and-columns: 2.0.4
+ lodash: 4.17.21
+ rslog: 1.2.3
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - supports-color
+ - webpack
+
'@rsdoctor/utils@0.4.5(@rspack/core@1.0.8(@swc/helpers@0.5.13))(webpack@5.94.0)':
dependencies:
'@babel/code-frame': 7.24.7
@@ -10729,6 +10935,14 @@ snapshots:
transitivePeerDependencies:
- debug
+ axios@1.7.9:
+ dependencies:
+ follow-redirects: 1.15.6
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
babel-core@7.0.0-bridge.0(@babel/core@7.25.2):
dependencies:
'@babel/core': 7.25.2
@@ -12921,6 +13135,8 @@ snapshots:
jsesc@2.5.2: {}
+ json-cycle@1.5.0: {}
+
json-parse-better-errors@1.0.2: {}
json-parse-even-better-errors@2.3.1: {}
@@ -14614,6 +14830,25 @@ snapshots:
react-lazy-with-preload@2.2.1: {}
+ react-native-reanimated@3.16.3(@babel/core@7.25.2)(react-native@0.76.3(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@react-native-community/cli-server-api@15.0.1)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1):
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2)
+ '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2)
+ '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.25.2)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2)
+ '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2)
+ '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2)
+ '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2)
+ '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2)
+ '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2)
+ convert-source-map: 2.0.0
+ invariant: 2.2.4
+ react: 18.3.1
+ react-native: 0.76.3(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@react-native-community/cli-server-api@15.0.1)(@types/react@18.3.3)(react@18.3.1)
+ transitivePeerDependencies:
+ - supports-color
+
react-native-safe-area-context@4.14.0(react-native@0.76.3(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@react-native-community/cli-server-api@15.0.1)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index d1d165732..e9e6d9431 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,9 +1,5 @@
packages:
- - "packages/dev-server"
- - "packages/init"
- - "packages/repack"
- - "apps/tester-app"
- - "apps/tester-federation"
- - "apps/tester-federation-v2"
- - "tests/metro-compat"
+ - "packages/*"
+ - "apps/*"
+ - "tests/*"
- "website"