diff --git a/.github/workflows/example-android-build-check.yml b/.github/workflows/example-android-build-check.yml index e86508467aba..478e34ef972b 100644 --- a/.github/workflows/example-android-build-check.yml +++ b/.github/workflows/example-android-build-check.yml @@ -28,12 +28,10 @@ jobs: build: if: github.repository == 'software-mansion/react-native-reanimated' runs-on: ubuntu-latest - strategy: - matrix: - working-directory: [apps/fabric-example] - fail-fast: false + env: + WORKING_DIRECTORY: apps/fabric-example concurrency: - group: android-${{ matrix.working-directory }}-${{ github.ref }} + group: android-${{ github.ref }} cancel-in-progress: true steps: - name: Check out Git repository @@ -50,5 +48,5 @@ jobs: run: yarn install --immutable - name: Build app - working-directory: ${{ matrix.working-directory }}/android + working-directory: ${{ env.WORKING_DIRECTORY }}/android run: ./gradlew assembleDebug --build-cache -PreactNativeArchitectures=arm64-v8a diff --git a/.github/workflows/example-ios-build-check.yml b/.github/workflows/example-ios-build-check.yml index d23c10d7172f..315181c0b88a 100644 --- a/.github/workflows/example-ios-build-check.yml +++ b/.github/workflows/example-ios-build-check.yml @@ -32,12 +32,10 @@ jobs: build: if: github.repository == 'software-mansion/react-native-reanimated' runs-on: macos-14 - strategy: - matrix: - working-directory: [apps/fabric-example] - fail-fast: false + env: + WORKING_DIRECTORY: apps/fabric-example concurrency: - group: ios-${{ matrix.working-directory }}-${{ github.ref }} + group: ios-${{ github.ref }} cancel-in-progress: true steps: - name: Check out Git repository @@ -51,11 +49,11 @@ jobs: run: yarn install --immutable # TODO: Add caching for node_modules and artifacts that will work with monorepo setup. - name: Install Pods - working-directory: ${{ matrix.working-directory }}/ios + working-directory: ${{ env.WORKING_DIRECTORY }}/ios run: | bundle install bundle exec pod install - name: Build app - working-directory: ${{ matrix.working-directory }} + working-directory: ${{ env.WORKING_DIRECTORY }} run: yarn react-native run-ios --no-packager diff --git a/.github/workflows/example-macos-build-check.yml b/.github/workflows/example-macos-build-check.yml index c2dc021f8229..177c4e8b84fc 100644 --- a/.github/workflows/example-macos-build-check.yml +++ b/.github/workflows/example-macos-build-check.yml @@ -53,7 +53,9 @@ jobs: - name: Install Pods working-directory: ${{ env.WORKING_DIRECTORY }}/macos - run: bundle install && bundle exec pod update # There's some bug on the macOS runners for pod installation and this is the workaround. + run: | + bundle install + bundle exec pod install - name: Build app working-directory: ${{ env.WORKING_DIRECTORY }} diff --git a/.github/workflows/example-typescript-check-and-lint.yml b/.github/workflows/example-typescript-check-and-lint.yml index 9afd51efc98e..06324c04f1dc 100644 --- a/.github/workflows/example-typescript-check-and-lint.yml +++ b/.github/workflows/example-typescript-check-and-lint.yml @@ -1,6 +1,9 @@ name: Example Typescript check and lint env: YARN_ENABLE_HARDENED_MODE: 0 + TYPE_CHECK_DIRECTORIES: >- + apps/common-app + apps/tvos-example on: pull_request: merge_group: @@ -47,14 +50,11 @@ jobs: - name: Check types working-directory: ${{ matrix.working-directory }} - if: ${{ matrix.working-directory != 'apps/web-example' }} + if: ${{ contains(env.TYPE_CHECK_DIRECTORIES, matrix.working-directory) }} run: yarn tsc --noEmit - - name: Check types - working-directory: ${{ matrix.working-directory }} - if: ${{ matrix.working-directory == 'apps/web-example' }} - run: yarn tsc --noEmit --baseUrl ../.. - name: Lint working-directory: ${{ matrix.working-directory }} + if: ${{ contains(env.TYPE_CHECK_DIRECTORIES, matrix.working-directory) }} run: yarn lint - name: Build WebExample working-directory: ${{ matrix.working-directory }} diff --git a/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch b/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch deleted file mode 100644 index fb2fed30da86..000000000000 --- a/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch +++ /dev/null @@ -1,124 +0,0 @@ -diff --git a/index.js b/index.js -index 709991da99b8b5cd9c5f4d81774d874da087a20c..d4a1fd6b30af87f3e0a3a32bdc249758df7c1355 100644 ---- a/index.js -+++ b/index.js -@@ -46,59 +46,75 @@ module.exports = { - fixable: "code", - schema: { - type: "array", -- minItems: 0, -- maxItems: 1, -- items: [ -- { -- type: "object", -- properties: { -- allowSameFolder: { type: "boolean" }, -- rootDir: { type: "string" }, -- prefix: { type: "string" }, -- allowedDepth: { type: "number" }, -- }, -- additionalProperties: false, -+ items: { -+ type: "object", -+ properties: { -+ allowSameFolder: { type: "boolean" }, -+ rootDir: { type: "string" }, -+ prefix: { type: "string" }, -+ allowedDepth: { type: "number" }, - }, -- ], -+ additionalProperties: false, -+ }, - }, - }, - create: function (context) { -- const { allowedDepth, allowSameFolder, rootDir, prefix } = { -- allowedDepth: context.options[0]?.allowedDepth, -- allowSameFolder: context.options[0]?.allowSameFolder || false, -- rootDir: context.options[0]?.rootDir || '', -- prefix: context.options[0]?.prefix || '', -- }; -+ const configs = context.options.map(config => ({ -+ allowedDepth: config?.allowedDepth, -+ allowSameFolder: config?.allowSameFolder || false, -+ rootDir: config?.rootDir || '', -+ prefix: config?.prefix || '', -+ })); - - return { - ImportDeclaration: function (node) { -- const path = node.source.value; -- if (isParentFolder(path, context, rootDir)) { -- if (typeof allowedDepth === 'undefined' || getRelativePathDepth(path) > allowedDepth) { -- context.report({ -- node, -- message: message, -- fix: function (fixer) { -- return fixer.replaceTextRange( -- [node.source.range[0] + 1, node.source.range[1] - 1], -- getAbsolutePath(path, context, rootDir, prefix) -- ); -- }, -- }); -+ const importPath = node.source.value; -+ -+ for (const config of configs) { -+ const { allowedDepth, allowSameFolder, rootDir, prefix } = config; -+ -+ if (isParentFolder(importPath, context, rootDir)) { -+ if (typeof allowedDepth === 'undefined' || getRelativePathDepth(importPath) > allowedDepth) { -+ const absolutePath = getAbsolutePath(importPath, context, rootDir, prefix); -+ // Only fix if the path is under this rootDir -+ const absoluteFilePath = path.join(path.dirname(context.getFilename()), importPath); -+ const absoluteRootPath = path.join(context.getCwd(), rootDir); -+ -+ if (absoluteFilePath.startsWith(absoluteRootPath)) { -+ context.report({ -+ node, -+ message: message, -+ fix: function (fixer) { -+ return fixer.replaceTextRange( -+ [node.source.range[0] + 1, node.source.range[1] - 1], -+ absolutePath -+ ); -+ }, -+ }); -+ return; // Stop checking other configs once we've found a match -+ } -+ } - } -- } - -- if (isSameFolder(path) && !allowSameFolder) { -- context.report({ -- node, -- message: message, -- fix: function (fixer) { -- return fixer.replaceTextRange( -- [node.source.range[0] + 1, node.source.range[1] - 1], -- getAbsolutePath(path, context, rootDir, prefix) -- ); -- }, -- }); -+ if (isSameFolder(importPath) && !allowSameFolder) { -+ const absolutePath = getAbsolutePath(importPath, context, rootDir, prefix); -+ const absoluteFilePath = path.join(path.dirname(context.getFilename()), importPath); -+ const absoluteRootPath = path.join(context.getCwd(), rootDir); -+ -+ if (absoluteFilePath.startsWith(absoluteRootPath)) { -+ context.report({ -+ node, -+ message: message, -+ fix: function (fixer) { -+ return fixer.replaceTextRange( -+ [node.source.range[0] + 1, node.source.range[1] - 1], -+ absolutePath -+ ); -+ }, -+ }); -+ return; // Stop checking other configs once we've found a match -+ } -+ } - } - }, - }; diff --git a/apps/common-app/.eslintrc.js b/apps/common-app/.eslintrc.js index 60a53a99f3cf..f06ccca5e17a 100644 --- a/apps/common-app/.eslintrc.js +++ b/apps/common-app/.eslintrc.js @@ -7,16 +7,58 @@ module.exports = { extends: [ 'eslint:recommended', 'plugin:react/recommended', - 'plugin:@typescript-eslint/recommended-requiring-type-checking', 'plugin:import/recommended', 'plugin:import/typescript', 'plugin:perfectionist/recommended-natural', 'prettier', ], - parser: '@typescript-eslint/parser', + overrides: [ + { + extends: [ + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + ], + files: ['*.ts', '*.tsx'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + plugins: ['@typescript-eslint'], + rules: { + '@typescript-eslint/array-type': ['error', { default: 'generic' }], + '@typescript-eslint/consistent-type-exports': 'error', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/member-ordering': [ + 'error', + { default: ['signature', 'method', 'constructor', 'field'] }, + ], + '@typescript-eslint/naming-convention': [ + 2, + { + format: ['PascalCase'], + selector: 'enumMember', + }, + ], + '@typescript-eslint/no-floating-promises': [ + 'error', + { + ignoreIIFE: true, + ignoreVoid: true, + }, + ], + '@typescript-eslint/no-shadow': 'error', + '@typescript-eslint/prefer-nullish-coalescing': [ + 'error', + { + ignoreConditionalTests: true, + ignoreMixedLogicalExpressions: true, + }, + ], + }, + }, + ], parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: __dirname, + ecmaVersion: 2021, }, plugins: [ 'react', @@ -27,40 +69,10 @@ module.exports = { 'simple-import-sort', 'no-relative-import-paths', 'perfectionist', - '@typescript-eslint', 'prettier', ], root: true, rules: { - '@typescript-eslint/array-type': ['error', { default: 'generic' }], - '@typescript-eslint/consistent-type-exports': 'error', - '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/member-ordering': [ - 'error', - { default: ['signature', 'method', 'constructor', 'field'] }, - ], - '@typescript-eslint/naming-convention': [ - 2, - { - format: ['PascalCase'], - selector: 'enumMember', - }, - ], - '@typescript-eslint/no-floating-promises': [ - 'error', - { - ignoreIIFE: true, - ignoreVoid: true, - }, - ], - '@typescript-eslint/no-shadow': 'error', - '@typescript-eslint/prefer-nullish-coalescing': [ - 'error', - { - ignoreConditionalTests: true, - ignoreMixedLogicalExpressions: true, - }, - ], camelcase: [ 'error', { @@ -179,12 +191,6 @@ module.exports = { 'no-regex-spaces': ['error'], 'no-relative-import-paths/no-relative-import-paths': [ 'warn', - { - allowSameFolder: true, - allowedDepth: 1, - prefix: '~', - rootDir: 'src/apps', - }, { allowSameFolder: true, allowedDepth: 1, prefix: '@', rootDir: 'src' }, ], 'no-return-assign': ['error', 'except-parens'], diff --git a/apps/common-app/package.json b/apps/common-app/package.json index d723cb966d31..884b4b077f05 100644 --- a/apps/common-app/package.json +++ b/apps/common-app/package.json @@ -10,62 +10,67 @@ "type:check": "tsc --noEmit" }, "peerDependencies": { - "@react-native-async-storage/async-storage": "*", - "@react-native-clipboard/clipboard": "*", - "@react-native-community/slider": "*", - "@react-native-masked-view/masked-view": "*", - "@react-navigation/bottom-tabs": "*", - "@react-navigation/native": "*", - "@react-navigation/native-stack": "*", - "@react-navigation/stack": "*", - "@shopify/flash-list": "*", - "d3-shape": "*", - "react": "*", - "react-dom": "*", - "react-native": "*", - "react-native-gesture-handler": "*", - "react-native-pager-view": "*", - "react-native-reanimated": "*", - "react-native-safe-area-context": "*", - "react-native-screens": "*", - "react-native-svg": "*", - "react-native-web": "*", - "react-strict-dom": "*" + "react-native": "*" }, - "devDependencies": { + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-native-fontawesome": "^0.3.2", + "@gorhom/portal": "^1.0.14", "@react-native-async-storage/async-storage": "2.1.0", "@react-native-clipboard/clipboard": "^1.15.0", "@react-native-community/slider": "4.5.5", "@react-native-masked-view/masked-view": "0.3.2", "@react-navigation/bottom-tabs": "^7.0.0", + "@react-navigation/drawer": "^7.1.1", "@react-navigation/native": "^7.0.14", "@react-navigation/native-stack": "^7.0.0", "@react-navigation/stack": "^7.1.1", "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch", + "d3-shape": "^3.2.0", + "eslint-plugin-reanimated": "workspace:*", + "react": "18.3.1", + "react-native-gesture-handler": "2.22.0", + "react-native-pager-view": "6.6.1", + "react-native-reanimated": "workspace:*", + "react-native-safe-area-context": "5.1.0", + "react-native-screens": "4.5.0", + "react-native-svg": "15.11.1", + "react-strict-dom": "0.0.27" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "15.0.1", + "@react-native-community/cli-platform-android": "15.0.1", + "@react-native-community/cli-platform-ios": "15.0.1", + "@react-native/babel-preset": "0.77.0-rc.6", + "@react-native/eslint-config": "0.77.0-rc.6", + "@react-native/metro-config": "0.77.0-rc.6", + "@react-native/typescript-config": "0.77.0-rc.6", "@tsconfig/react-native": "^3.0.0", "@types/d3-shape": "^3.1.1", - "d3-shape": "^3.2.0", + "@types/jest": "^29.5.13", + "@types/react": "^18.2.6", + "@types/react-test-renderer": "^18.0.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-relative-import-paths": "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch", + "eslint-plugin-no-relative-import-paths": "^1.6.1", "eslint-plugin-perfectionist": "^2.1.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-reanimated": "workspace:*", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.1.4", + "jest": "^29.6.3", "madge": "^5.0.1", "patch-package": "^8.0.0", "prettier": "^3.3.3", - "react": "18.3.1", "react-native": "0.77.0-rc.6", - "react-native-gesture-handler": "2.22.0", - "react-native-pager-view": "6.6.1", - "react-native-reanimated": "workspace:*", - "react-native-safe-area-context": "5.1.0", - "react-native-screens": "4.5.0", - "react-native-svg": "15.11.1", - "react-strict-dom": "0.0.27", + "react-native-monorepo-tools": "^1.2.1", + "react-test-renderer": "18.3.1", "typescript": "~5.3.0", "typescript-eslint": "^8.12.2" } diff --git a/apps/common-app/scripts/dependencies.js b/apps/common-app/scripts/dependencies.js new file mode 100644 index 000000000000..9c1bcfbc4b90 --- /dev/null +++ b/apps/common-app/scripts/dependencies.js @@ -0,0 +1,46 @@ +const path = require('path'); + +/** + * @param {Object} dependencies + * @param {Set} exclude + */ +function resolveDependencies(dependencies = {}, exclude) { + return Object.fromEntries( + Object.keys(dependencies) + .filter((name) => !exclude.has(name)) + .map((name) => [ + name, + { root: path.resolve(__dirname, `../../../node_modules/${name}`) }, + ]) + ); +} + +/** + * This function will return the dependencies from the common-app package that + * aren't listed in the current app's package.json + * + * @param {string} currentAppDir - The current app directory (e.g. __dirname) + * @param {string[]} exclude - The dependencies to exclude from the common-app + */ +function getDependencies(currentAppDir = '.', exclude = []) { + const commonAppDir = path.resolve(__dirname, '..'); + const commonAppPkg = require(path.resolve(commonAppDir, 'package.json')); + + const currentAppPkg = require(path.resolve(currentAppDir, 'package.json')); + + const excludedDependencies = new Set([ + ...Object.keys(currentAppPkg.devDependencies), + ...Object.keys(currentAppPkg.dependencies), + ...exclude, + ]); + + return { + // Get all common-app dependencies that aren't already in the current app + ...resolveDependencies(commonAppPkg.devDependencies, excludedDependencies), + ...resolveDependencies(commonAppPkg.dependencies, excludedDependencies), + }; +} + +module.exports = { + getDependencies, +}; diff --git a/apps/common-app/src/apps/reanimated/examples/WithoutBabelPluginExample.tsx b/apps/common-app/src/apps/reanimated/examples/WithoutBabelPluginExample.tsx index bbecc76eec1d..850176bc7453 100644 --- a/apps/common-app/src/apps/reanimated/examples/WithoutBabelPluginExample.tsx +++ b/apps/common-app/src/apps/reanimated/examples/WithoutBabelPluginExample.tsx @@ -4,16 +4,10 @@ import Animated, { useSharedValue, withSpring, } from 'react-native-reanimated'; -import { - Gesture, - GestureDetector, - enableExperimentalWebImplementation, -} from 'react-native-gesture-handler'; +import { Gesture, GestureDetector } from 'react-native-gesture-handler'; import React, { useEffect, useState } from 'react'; import { StyleSheet, Text, View } from 'react-native'; -enableExperimentalWebImplementation(true); - function isBabelPluginEnabled() { function worklet() { 'worklet'; diff --git a/apps/fabric-example/images.d.ts b/apps/fabric-example/images.d.ts deleted file mode 100644 index 5f1bcde0e96d..000000000000 --- a/apps/fabric-example/images.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare module '*.jpg' { - import type { ImageSourcePropType } from 'react-native'; - - const value: ImageSourcePropType; - export default value; -} - -declare module '*.png' { - import type { ImageSourcePropType } from 'react-native'; - - const value: ImageSourcePropType; - export default value; -} diff --git a/apps/fabric-example/metro.config.js b/apps/fabric-example/metro.config.js index e6dd2c4efa6d..a2a3cc62f024 100644 --- a/apps/fabric-example/metro.config.js +++ b/apps/fabric-example/metro.config.js @@ -2,7 +2,9 @@ const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const { wrapWithReanimatedMetroConfig, } = require('react-native-reanimated/metro-config'); -const { getMetroAndroidAssetsResolutionFix } = require('react-native-monorepo-tools'); +const { + getMetroAndroidAssetsResolutionFix, +} = require('react-native-monorepo-tools'); const androidAssetsResolutionFix = getMetroAndroidAssetsResolutionFix(); const path = require('path'); diff --git a/apps/fabric-example/package.json b/apps/fabric-example/package.json index 6b86981dbb07..a40c99606018 100644 --- a/apps/fabric-example/package.json +++ b/apps/fabric-example/package.json @@ -6,66 +6,15 @@ "build": "cd ios && bundle install && bundle exec pod update", "android": "react-native run-android", "ios": "react-native run-ios", - "lint": "eslint --max-warnings=0 --ignore-pattern 'common-app/' .", - "format": "prettier --write --list-different .", "start": "react-native start", - "test": "jest" + "format": "prettier --write --list-different ." }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.5.2", - "@fortawesome/free-solid-svg-icons": "^6.5.2", - "@fortawesome/react-native-fontawesome": "^0.3.2", - "@gorhom/portal": "^1.0.14", - "@react-native-async-storage/async-storage": "2.1.0", - "@react-native-clipboard/clipboard": "^1.15.0", - "@react-native-community/slider": "4.5.5", - "@react-native-masked-view/masked-view": "0.3.2", - "@react-navigation/drawer": "^7.1.1", - "@react-navigation/native": "^7.0.14", - "@react-navigation/native-stack": "^7.0.0", - "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch", "common-app": "workspace:*", - "react": "18.3.1", - "react-native": "0.77.0-rc.6", - "react-native-gesture-handler": "2.22.0", - "react-native-pager-view": "6.6.1", - "react-native-reanimated": "workspace:*", - "react-native-safe-area-context": "5.1.0", - "react-native-screens": "4.5.0", - "react-native-svg": "15.11.1" + "react-native": "0.77.0-rc.6" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/preset-env": "^7.25.3", - "@babel/runtime": "^7.25.0", - "@react-native-community/cli": "15.0.1", - "@react-native-community/cli-platform-android": "15.0.1", - "@react-native-community/cli-platform-ios": "15.0.1", - "@react-native/babel-preset": "0.77.0-rc.6", - "@react-native/eslint-config": "0.77.0-rc.6", - "@react-native/metro-config": "0.77.0-rc.6", - "@react-native/typescript-config": "0.77.0-rc.6", - "@types/jest": "^29.5.13", - "@types/react": "^18.2.6", - "@types/react-test-renderer": "^18.0.0", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-relative-import-paths": "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch", - "eslint-plugin-perfectionist": "^2.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-unused-imports": "^4.1.4", - "jest": "^29.6.3", - "madge": "^5.0.1", - "patch-package": "^8.0.0", - "prettier": "^3.3.3", - "react-native-monorepo-tools": "^1.2.1", - "react-test-renderer": "18.3.1", - "typescript": "~5.3.0", - "typescript-eslint": "^8.12.2" + "prettier": "^3.3.3" }, "engines": { "node": ">=18" diff --git a/apps/fabric-example/react-native.config.js b/apps/fabric-example/react-native.config.js index a14e68527737..37988ae350bc 100644 --- a/apps/fabric-example/react-native.config.js +++ b/apps/fabric-example/react-native.config.js @@ -1,8 +1,9 @@ -/** @type {import('@react-native-community/cli-types').Config} */ +/** This file is required to properly resolve native dependencies */ +const { getDependencies } = require('../common-app/scripts/dependencies'); + +const dependencies = getDependencies(__dirname); + module.exports = { - project: { - ios: {}, - android: {}, - }, + dependencies, assets: ['./assets/fonts/'], }; diff --git a/apps/fabric-example/tsconfig.json b/apps/fabric-example/tsconfig.json index 1dc2571aaeb9..a97c6a62d404 100644 --- a/apps/fabric-example/tsconfig.json +++ b/apps/fabric-example/tsconfig.json @@ -6,5 +6,5 @@ "@/*": ["../common-app/src/*"] } }, - "exclude": ["node_modules", "metro.config.js"] + "exclude": ["metro.config.js", "android", "ios", ".bundle", "node_modules"] } diff --git a/apps/macos-example/images.d.ts b/apps/macos-example/images.d.ts deleted file mode 100644 index 5f1bcde0e96d..000000000000 --- a/apps/macos-example/images.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare module '*.jpg' { - import type { ImageSourcePropType } from 'react-native'; - - const value: ImageSourcePropType; - export default value; -} - -declare module '*.png' { - import type { ImageSourcePropType } from 'react-native'; - - const value: ImageSourcePropType; - export default value; -} diff --git a/apps/macos-example/macos/Podfile.lock b/apps/macos-example/macos/Podfile.lock index e458b94baddd..ec39e5c89ac3 100644 --- a/apps/macos-example/macos/Podfile.lock +++ b/apps/macos-example/macos/Podfile.lock @@ -1459,8 +1459,6 @@ PODS: - React-Core - RNCClipboard (1.16.1): - React-Core - - RNCPicker (2.10.2): - - React-Core - RNGestureHandler (2.22.0): - DoubleConversion - glog @@ -1633,7 +1631,7 @@ DEPENDENCIES: - React-logger (from `../node_modules/react-native-macos/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native-macos/ReactCommon`) - React-microtasksnativemodule (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/microtasks`) - - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`) - React-nativeconfig (from `../node_modules/react-native-macos/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native-macos/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native-macos/ReactCommon/reactperflogger`) @@ -1659,12 +1657,11 @@ DEPENDENCIES: - React-utils (from `../node_modules/react-native-macos/ReactCommon/react/utils`) - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native-macos/ReactCommon`) - - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" - - "RNCPicker (from `../node_modules/@react-native-picker/picker`)" - - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - "RNCAsyncStorage (from `../../../node_modules/@react-native-async-storage/async-storage`)" + - "RNCClipboard (from `../../../node_modules/@react-native-clipboard/clipboard`)" + - RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`) - RNReanimated (from `../node_modules/react-native-reanimated`) - - RNSVG (from `../node_modules/react-native-svg`) + - RNSVG (from `../../../node_modules/react-native-svg`) - SocketRocket (from `../node_modules/react-native-macos/third-party-podspecs/SocketRocket.podspec`) - Yoga (from `../node_modules/react-native-macos/ReactCommon/yoga`) @@ -1738,7 +1735,7 @@ EXTERNAL SOURCES: React-microtasksnativemodule: :path: "../node_modules/react-native-macos/ReactCommon/react/nativemodule/microtasks" react-native-safe-area-context: - :path: "../node_modules/react-native-safe-area-context" + :path: "../../../node_modules/react-native-safe-area-context" React-nativeconfig: :path: "../node_modules/react-native-macos/ReactCommon" React-NativeModulesApple: @@ -1790,17 +1787,15 @@ EXTERNAL SOURCES: ReactCommon: :path: "../node_modules/react-native-macos/ReactCommon" RNCAsyncStorage: - :path: "../node_modules/@react-native-async-storage/async-storage" + :path: "../../../node_modules/@react-native-async-storage/async-storage" RNCClipboard: - :path: "../node_modules/@react-native-clipboard/clipboard" - RNCPicker: - :path: "../node_modules/@react-native-picker/picker" + :path: "../../../node_modules/@react-native-clipboard/clipboard" RNGestureHandler: - :path: "../node_modules/react-native-gesture-handler" + :path: "../../../node_modules/react-native-gesture-handler" RNReanimated: :path: "../node_modules/react-native-reanimated" RNSVG: - :path: "../node_modules/react-native-svg" + :path: "../../../node_modules/react-native-svg" SocketRocket: :podspec: "../node_modules/react-native-macos/third-party-podspecs/SocketRocket.podspec" Yoga: @@ -1869,7 +1864,6 @@ SPEC CHECKSUMS: ReactCommon: 33aa3e538f80f05a4d91150f7d704f1accf9b2ec RNCAsyncStorage: c91d753ede6dc21862c4922cd13f98f7cfde578e RNCClipboard: ee059e6006b137e369caed5eb852b4aad9f5d886 - RNCPicker: d8662eb6615e3401acb590c44b97b2af3beb1e53 RNGestureHandler: 8c8722468ee6ced80a0723943c894798d2613a81 RNReanimated: 5e21c891ee78aa03ffbd0ce2c8d15a7c263f499f RNSVG: 46769c92d1609e617dbf9326ad8a0cff912d0982 diff --git a/apps/macos-example/package.json b/apps/macos-example/package.json index f072217dd416..a88d0e544c7f 100644 --- a/apps/macos-example/package.json +++ b/apps/macos-example/package.json @@ -5,35 +5,15 @@ "scripts": { "macos": "react-native run-macos", "build": "cd macos && bundle install && bundle exec pod update", - "lint": "eslint . --max-warnings 0", "format": "prettier --write --list-different .", - "start": "react-native start", - "test": "jest" + "start": "react-native start" }, "dependencies": { - "@fortawesome/free-solid-svg-icons": "^6.5.2", - "@fortawesome/react-native-fontawesome": "^0.3.2", - "@gorhom/portal": "^1.0.14", - "@react-native-async-storage/async-storage": "2.1.0", - "@react-native-clipboard/clipboard": "^1.15.0", - "@react-native-community/slider": "4.5.5", - "@react-native-masked-view/masked-view": "0.3.2", - "@react-native-picker/picker": "^2.9.0", - "@react-navigation/drawer": "^7.1.1", - "@react-navigation/native": "^7.0.14", - "@react-navigation/native-stack": "^7.0.0", - "@react-navigation/stack": "^7.1.1", - "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch", "common-app": "workspace:*", "react": "18.3.1", "react-native": "0.75.4", - "react-native-gesture-handler": "2.22.0", "react-native-macos": "^0.75.13", - "react-native-pager-view": "6.6.1", - "react-native-reanimated": "workspace:*", - "react-native-safe-area-context": "5.1.0", - "react-native-screens": "4.5.0", - "react-native-svg": "15.11.1" + "react-native-reanimated": "workspace:*" }, "devDependencies": { "@babel/core": "^7.20.0", @@ -43,25 +23,7 @@ "@react-native/eslint-config": "0.75.4", "@react-native/metro-config": "0.75.4", "@react-native/typescript-config": "0.75.4", - "@types/react": "^18.2.6", - "@types/react-test-renderer": "^18.0.0", - "babel-jest": "^29.6.3", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-relative-import-paths": "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch", - "eslint-plugin-perfectionist": "^2.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-unused-imports": "^4.1.4", - "jest": "^29.6.3", - "madge": "^5.0.1", - "prettier": "^3.3.3", - "react-test-renderer": "18.2.0", - "typescript": "~5.3.0", - "typescript-eslint": "^8.12.2" + "prettier": "^3.3.3" }, "engines": { "node": ">=18" diff --git a/apps/macos-example/react-native.config.js b/apps/macos-example/react-native.config.js new file mode 100644 index 000000000000..37988ae350bc --- /dev/null +++ b/apps/macos-example/react-native.config.js @@ -0,0 +1,9 @@ +/** This file is required to properly resolve native dependencies */ +const { getDependencies } = require('../common-app/scripts/dependencies'); + +const dependencies = getDependencies(__dirname); + +module.exports = { + dependencies, + assets: ['./assets/fonts/'], +}; diff --git a/apps/tvos-example/ios/Podfile.lock b/apps/tvos-example/ios/Podfile.lock index 686d9c943b1b..87ddbe2337e2 100644 --- a/apps/tvos-example/ios/Podfile.lock +++ b/apps/tvos-example/ios/Podfile.lock @@ -1888,7 +1888,7 @@ SPEC CHECKSUMS: ReactCommon: 387c81ac0d7efbc9818b07e05ffae71ee356aa91 RNReanimated: 0ac2a2f20448fd74996312fdd9845816af2f2b95 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: 651e5fd560c7e408ab9d9ca44b8de1b622d7f0cc + Yoga: 2b0e5affb9ab46e4ebad33530df829c153c323d8 PODFILE CHECKSUM: 79e1477a8eb76b717bdd7c1610f7f8e6772536a9 diff --git a/apps/web-example/images.d.ts b/apps/web-example/images.d.ts deleted file mode 100644 index 5f1bcde0e96d..000000000000 --- a/apps/web-example/images.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare module '*.jpg' { - import type { ImageSourcePropType } from 'react-native'; - - const value: ImageSourcePropType; - export default value; -} - -declare module '*.png' { - import type { ImageSourcePropType } from 'react-native'; - - const value: ImageSourcePropType; - export default value; -} diff --git a/apps/web-example/package.json b/apps/web-example/package.json index af67ba0b1965..3be5815549d5 100644 --- a/apps/web-example/package.json +++ b/apps/web-example/package.json @@ -6,49 +6,21 @@ "scripts": { "start": "expo start --web", "start:noplugin": "DISABLE_BABEL_PLUGIN=1 yarn start", - "lint": "eslint --max-warnings=0 .", - "format": "prettier --write --list-different .", "production": "yarn expo export -p web && yarn serve dist --single", + "format": "prettier --write --list-different .", "build": "" }, "dependencies": { - "@expo/vector-icons": "^14.0.0", - "@fortawesome/fontawesome-svg-core": "^6.5.2", - "@fortawesome/free-solid-svg-icons": "^6.5.2", - "@fortawesome/react-native-fontawesome": "^0.3.2", - "@gorhom/portal": "^1.0.14", - "@react-native-async-storage/async-storage": "^1.24.0", - "@react-native-clipboard/clipboard": "^1.15.0", - "@react-navigation/drawer": "^7.1.1", - "@react-navigation/native": "^7.0.14", - "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch", "common-app": "workspace:*", "expo": "^52.0.4", - "react": "18.3.1", "react-dom": "18.3.1", - "react-native": "0.76.5", - "react-native-reanimated": "workspace:*", + "react-native": "0.77.0-rc.6", "react-native-web": "0.19.13" }, "devDependencies": { - "@babel/core": "^7.20.0", "@expo/metro-runtime": "~4.0.0", "@stylexjs/babel-plugin": "^0.10.0", - "@types/eslint": "^8", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-relative-import-paths": "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch", - "eslint-plugin-perfectionist": "^2.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-unused-imports": "^4.1.4", - "madge": "^5.0.1", "prettier": "^3.3.3", - "serve": "^14.2.3", - "typescript": "~5.3.0", - "typescript-eslint": "^8.12.2" + "serve": "^14.2.3" } } diff --git a/apps/web-example/react-native.config.js b/apps/web-example/react-native.config.js new file mode 100644 index 000000000000..79b1c84299c5 --- /dev/null +++ b/apps/web-example/react-native.config.js @@ -0,0 +1,9 @@ +/** This file is required to properly resolve native dependencies */ +import { getDependencies } from '../common-app/scripts/dependencies'; + +const { dependencies } = getDependencies(); + +module.exports = { + dependencies, + assets: ['./assets/fonts/'], +}; diff --git a/packages/react-native-reanimated/android/src/main/cpp/reanimated/CMakeLists.txt b/packages/react-native-reanimated/android/src/main/cpp/reanimated/CMakeLists.txt index 8c6dcca88a47..71da2bf0e7c0 100644 --- a/packages/react-native-reanimated/android/src/main/cpp/reanimated/CMakeLists.txt +++ b/packages/react-native-reanimated/android/src/main/cpp/reanimated/CMakeLists.txt @@ -110,12 +110,9 @@ elseif(${JS_RUNTIME} STREQUAL "jsc") elseif(${JS_RUNTIME} STREQUAL "v8") # TODO: Refactor this when adding support for newest V8 target_include_directories(reanimated PRIVATE "${JS_RUNTIME_DIR}/src") - file( - GLOB - V8_SO_DIR - "${JS_RUNTIME_DIR}/android/build/intermediates/library_jni/**/\ - jni/${ANDROID_ABI}" - ) + file(GLOB V8_SO_DIR + "${JS_RUNTIME_DIR}/android/build/intermediates/library_jni/**/\ + jni/${ANDROID_ABI}") find_library( V8EXECUTOR_LIB v8executor PATHS ${V8_SO_DIR} diff --git a/yarn.lock b/yarn.lock index b155b29e0942..6d45f94270d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -157,8 +157,8 @@ __metadata: linkType: hard "@babel/eslint-parser@npm:^7.20.0": - version: 7.25.9 - resolution: "@babel/eslint-parser@npm:7.25.9" + version: 7.26.5 + resolution: "@babel/eslint-parser@npm:7.26.5" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -166,7 +166,7 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10/ebb68d80b1fa2b964ad1147cc610e0c69b224e620419a885ba5abc996740523bee636a0d447fc29a0d495dbce5fa0246737b25e9e679cca6c5797fdac5176378 + checksum: 10/b9e4141f2aa01ea8e54233987d119402462a6b884f399add3b3f28d539bc4d3b311c6c1b58b196fef232e515fc77495aeff59f4668a19d978bddcffa3e66e7ca languageName: node linkType: hard @@ -4787,17 +4787,6 @@ __metadata: languageName: node linkType: hard -"@react-native-async-storage/async-storage@npm:^1.24.0": - version: 1.24.0 - resolution: "@react-native-async-storage/async-storage@npm:1.24.0" - dependencies: - merge-options: "npm:^3.0.4" - peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 - checksum: 10/5a6b7ac8bd7a9e537a53a3f2301530c284fd885a45ce4a4e0014859bc0f7c89bee5c4b5a6b3740b8d83751561159b237474d18f32fad75ea7d56d4ddb2180d91 - languageName: node - linkType: hard - "@react-native-clipboard/clipboard@npm:^1.15.0": version: 1.16.1 resolution: "@react-native-clipboard/clipboard@npm:1.16.1" @@ -5193,16 +5182,6 @@ __metadata: languageName: node linkType: hard -"@react-native-picker/picker@npm:^2.9.0": - version: 2.10.2 - resolution: "@react-native-picker/picker@npm:2.10.2" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/c6cbbc335ab5e7371866c3fb032a946ffc428440129b28c9dd23f6914cdff37c8e9d224ffd1aa77a99c18beaf21fd154cd60a9940ebcbc958fc6ee5fce4d864c - languageName: node - linkType: hard - "@react-native-tvos/virtualized-lists@npm:0.76.0-0": version: 0.76.0-0 resolution: "@react-native-tvos/virtualized-lists@npm:0.76.0-0" @@ -6741,23 +6720,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:^8": - version: 8.56.12 - resolution: "@types/eslint@npm:8.56.12" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10/bd998b5d3f98ac430ec8db6223f1cff1820774c1e72eabda05463256875d97065fd357fba7379dd25e6bfbeb73296f28faff6f4dcbc320f890bb49b09087644d - languageName: node - linkType: hard - -"@types/estree@npm:*": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d - languageName: node - linkType: hard - "@types/graceful-fs@npm:^4.1.3": version: 4.1.9 resolution: "@types/graceful-fs@npm:4.1.9" @@ -6816,7 +6778,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -9353,63 +9315,66 @@ __metadata: version: 0.0.0-use.local resolution: "common-app@workspace:apps/common-app" dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/preset-env": "npm:^7.25.3" + "@babel/runtime": "npm:^7.25.0" + "@fortawesome/fontawesome-svg-core": "npm:^6.5.2" + "@fortawesome/free-solid-svg-icons": "npm:^6.5.2" + "@fortawesome/react-native-fontawesome": "npm:^0.3.2" + "@gorhom/portal": "npm:^1.0.14" "@react-native-async-storage/async-storage": "npm:2.1.0" "@react-native-clipboard/clipboard": "npm:^1.15.0" + "@react-native-community/cli": "npm:15.0.1" + "@react-native-community/cli-platform-android": "npm:15.0.1" + "@react-native-community/cli-platform-ios": "npm:15.0.1" "@react-native-community/slider": "npm:4.5.5" "@react-native-masked-view/masked-view": "npm:0.3.2" + "@react-native/babel-preset": "npm:0.77.0-rc.6" + "@react-native/eslint-config": "npm:0.77.0-rc.6" + "@react-native/metro-config": "npm:0.77.0-rc.6" + "@react-native/typescript-config": "npm:0.77.0-rc.6" "@react-navigation/bottom-tabs": "npm:^7.0.0" + "@react-navigation/drawer": "npm:^7.1.1" "@react-navigation/native": "npm:^7.0.14" "@react-navigation/native-stack": "npm:^7.0.0" "@react-navigation/stack": "npm:^7.1.1" "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch" "@tsconfig/react-native": "npm:^3.0.0" "@types/d3-shape": "npm:^3.1.1" + "@types/jest": "npm:^29.5.13" + "@types/react": "npm:^18.2.6" + "@types/react-test-renderer": "npm:^18.0.0" d3-shape: "npm:^3.2.0" eslint: "npm:^8.57.0" eslint-config-prettier: "npm:^9.1.0" eslint-import-resolver-typescript: "npm:^3.6.3" eslint-plugin-import: "npm:^2.31.0" - eslint-plugin-no-relative-import-paths: "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch" + eslint-plugin-no-relative-import-paths: "npm:^1.6.1" eslint-plugin-perfectionist: "npm:^2.1.0" eslint-plugin-prettier: "npm:^5.2.1" eslint-plugin-react-hooks: "npm:^5.0.0" eslint-plugin-reanimated: "workspace:*" + eslint-plugin-simple-import-sort: "npm:^12.1.1" + eslint-plugin-unused-imports: "npm:^4.1.4" + jest: "npm:^29.6.3" madge: "npm:^5.0.1" patch-package: "npm:^8.0.0" prettier: "npm:^3.3.3" react: "npm:18.3.1" react-native: "npm:0.77.0-rc.6" react-native-gesture-handler: "npm:2.22.0" + react-native-monorepo-tools: "npm:^1.2.1" react-native-pager-view: "npm:6.6.1" react-native-reanimated: "workspace:*" react-native-safe-area-context: "npm:5.1.0" react-native-screens: "npm:4.5.0" react-native-svg: "npm:15.11.1" react-strict-dom: "npm:0.0.27" + react-test-renderer: "npm:18.3.1" typescript: "npm:~5.3.0" typescript-eslint: "npm:^8.12.2" peerDependencies: - "@react-native-async-storage/async-storage": "*" - "@react-native-clipboard/clipboard": "*" - "@react-native-community/slider": "*" - "@react-native-masked-view/masked-view": "*" - "@react-navigation/bottom-tabs": "*" - "@react-navigation/native": "*" - "@react-navigation/native-stack": "*" - "@react-navigation/stack": "*" - "@shopify/flash-list": "*" - d3-shape: "*" - react: "*" - react-dom: "*" react-native: "*" - react-native-gesture-handler: "*" - react-native-pager-view: "*" - react-native-reanimated: "*" - react-native-safe-area-context: "*" - react-native-screens: "*" - react-native-svg: "*" - react-native-web: "*" - react-strict-dom: "*" languageName: unknown linkType: soft @@ -11283,17 +11248,10 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-no-relative-import-paths@npm:1.5.5": - version: 1.5.5 - resolution: "eslint-plugin-no-relative-import-paths@npm:1.5.5" - checksum: 10/9c4ac94a4a6b63748ee8c3e97a240e5681da3e38f154d0cffb864b8667a207cf84c3f0411785e65a3c31edcfaa9cffb1e756b3691354285fd2fc1684bd2266c7 - languageName: node - linkType: hard - -"eslint-plugin-no-relative-import-paths@patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch": - version: 1.5.5 - resolution: "eslint-plugin-no-relative-import-paths@patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch::version=1.5.5&hash=17eb79" - checksum: 10/c76734a94546f5e100a4a435d0bdcf8c43d4c6f52f6cf663917bdc4bdbabc37e311e3c0aa3ee45026e3b05a878ca920213b7f04193074f95a517ac5309135e74 +"eslint-plugin-no-relative-import-paths@npm:^1.6.1": + version: 1.6.1 + resolution: "eslint-plugin-no-relative-import-paths@npm:1.6.1" + checksum: 10/b769becc029586c9dec93162000dd074fb3ca688d9af6d1d151f1aadc85cc309dd2272e75667477a33604801d8cb80698dcc3d66bbb74c2220a9af48375d724f languageName: node linkType: hard @@ -12119,58 +12077,9 @@ __metadata: version: 0.0.0-use.local resolution: "fabric-example@workspace:apps/fabric-example" dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/preset-env": "npm:^7.25.3" - "@babel/runtime": "npm:^7.25.0" - "@fortawesome/fontawesome-svg-core": "npm:^6.5.2" - "@fortawesome/free-solid-svg-icons": "npm:^6.5.2" - "@fortawesome/react-native-fontawesome": "npm:^0.3.2" - "@gorhom/portal": "npm:^1.0.14" - "@react-native-async-storage/async-storage": "npm:2.1.0" - "@react-native-clipboard/clipboard": "npm:^1.15.0" - "@react-native-community/cli": "npm:15.0.1" - "@react-native-community/cli-platform-android": "npm:15.0.1" - "@react-native-community/cli-platform-ios": "npm:15.0.1" - "@react-native-community/slider": "npm:4.5.5" - "@react-native-masked-view/masked-view": "npm:0.3.2" - "@react-native/babel-preset": "npm:0.77.0-rc.6" - "@react-native/eslint-config": "npm:0.77.0-rc.6" - "@react-native/metro-config": "npm:0.77.0-rc.6" - "@react-native/typescript-config": "npm:0.77.0-rc.6" - "@react-navigation/drawer": "npm:^7.1.1" - "@react-navigation/native": "npm:^7.0.14" - "@react-navigation/native-stack": "npm:^7.0.0" - "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch" - "@types/jest": "npm:^29.5.13" - "@types/react": "npm:^18.2.6" - "@types/react-test-renderer": "npm:^18.0.0" common-app: "workspace:*" - eslint: "npm:^8.57.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-import-resolver-typescript: "npm:^3.6.3" - eslint-plugin-import: "npm:^2.31.0" - eslint-plugin-no-relative-import-paths: "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch" - eslint-plugin-perfectionist: "npm:^2.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - eslint-plugin-react-hooks: "npm:^5.0.0" - eslint-plugin-simple-import-sort: "npm:^12.1.1" - eslint-plugin-unused-imports: "npm:^4.1.4" - jest: "npm:^29.6.3" - madge: "npm:^5.0.1" - patch-package: "npm:^8.0.0" prettier: "npm:^3.3.3" - react: "npm:18.3.1" react-native: "npm:0.77.0-rc.6" - react-native-gesture-handler: "npm:2.22.0" - react-native-monorepo-tools: "npm:^1.2.1" - react-native-pager-view: "npm:6.6.1" - react-native-reanimated: "workspace:*" - react-native-safe-area-context: "npm:5.1.0" - react-native-screens: "npm:4.5.0" - react-native-svg: "npm:15.11.1" - react-test-renderer: "npm:18.3.1" - typescript: "npm:~5.3.0" - typescript-eslint: "npm:^8.12.2" languageName: unknown linkType: soft @@ -15565,52 +15474,16 @@ __metadata: "@babel/core": "npm:^7.20.0" "@babel/preset-env": "npm:^7.20.0" "@babel/runtime": "npm:^7.20.0" - "@fortawesome/free-solid-svg-icons": "npm:^6.5.2" - "@fortawesome/react-native-fontawesome": "npm:^0.3.2" - "@gorhom/portal": "npm:^1.0.14" - "@react-native-async-storage/async-storage": "npm:2.1.0" - "@react-native-clipboard/clipboard": "npm:^1.15.0" - "@react-native-community/slider": "npm:4.5.5" - "@react-native-masked-view/masked-view": "npm:0.3.2" - "@react-native-picker/picker": "npm:^2.9.0" "@react-native/babel-preset": "npm:0.75.4" "@react-native/eslint-config": "npm:0.75.4" "@react-native/metro-config": "npm:0.75.4" "@react-native/typescript-config": "npm:0.75.4" - "@react-navigation/drawer": "npm:^7.1.1" - "@react-navigation/native": "npm:^7.0.14" - "@react-navigation/native-stack": "npm:^7.0.0" - "@react-navigation/stack": "npm:^7.1.1" - "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch" - "@types/react": "npm:^18.2.6" - "@types/react-test-renderer": "npm:^18.0.0" - babel-jest: "npm:^29.6.3" common-app: "workspace:*" - eslint: "npm:^8.57.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-import-resolver-typescript: "npm:^3.6.3" - eslint-plugin-import: "npm:^2.31.0" - eslint-plugin-no-relative-import-paths: "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch" - eslint-plugin-perfectionist: "npm:^2.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - eslint-plugin-react-hooks: "npm:^5.0.0" - eslint-plugin-simple-import-sort: "npm:^12.1.1" - eslint-plugin-unused-imports: "npm:^4.1.4" - jest: "npm:^29.6.3" - madge: "npm:^5.0.1" prettier: "npm:^3.3.3" react: "npm:18.3.1" react-native: "npm:0.75.4" - react-native-gesture-handler: "npm:2.22.0" react-native-macos: "npm:^0.75.13" - react-native-pager-view: "npm:6.6.1" react-native-reanimated: "workspace:*" - react-native-safe-area-context: "npm:5.1.0" - react-native-screens: "npm:4.5.0" - react-native-svg: "npm:15.11.1" - react-test-renderer: "npm:18.2.0" - typescript: "npm:~5.3.0" - typescript-eslint: "npm:^8.12.2" languageName: unknown linkType: soft @@ -21956,42 +21829,15 @@ __metadata: version: 0.0.0-use.local resolution: "web-example@workspace:apps/web-example" dependencies: - "@babel/core": "npm:^7.20.0" "@expo/metro-runtime": "npm:~4.0.0" - "@expo/vector-icons": "npm:^14.0.0" - "@fortawesome/fontawesome-svg-core": "npm:^6.5.2" - "@fortawesome/free-solid-svg-icons": "npm:^6.5.2" - "@fortawesome/react-native-fontawesome": "npm:^0.3.2" - "@gorhom/portal": "npm:^1.0.14" - "@react-native-async-storage/async-storage": "npm:^1.24.0" - "@react-native-clipboard/clipboard": "npm:^1.15.0" - "@react-navigation/drawer": "npm:^7.1.1" - "@react-navigation/native": "npm:^7.0.14" - "@shopify/flash-list": "patch:@shopify/flash-list@npm%3A1.7.2#~/.yarn/patches/@shopify-flash-list-npm-1.7.2-2a363895ca.patch" "@stylexjs/babel-plugin": "npm:^0.10.0" - "@types/eslint": "npm:^8" common-app: "workspace:*" - eslint: "npm:^8.57.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-import-resolver-typescript: "npm:^3.6.3" - eslint-plugin-import: "npm:^2.31.0" - eslint-plugin-no-relative-import-paths: "patch:eslint-plugin-no-relative-import-paths@npm%3A1.5.5#~/.yarn/patches/eslint-plugin-no-relative-import-paths-npm-1.5.5-8fb4e4bf7a.patch" - eslint-plugin-perfectionist: "npm:^2.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - eslint-plugin-react-hooks: "npm:^5.0.0" - eslint-plugin-simple-import-sort: "npm:^12.1.1" - eslint-plugin-unused-imports: "npm:^4.1.4" expo: "npm:^52.0.4" - madge: "npm:^5.0.1" prettier: "npm:^3.3.3" - react: "npm:18.3.1" react-dom: "npm:18.3.1" - react-native: "npm:0.76.5" - react-native-reanimated: "workspace:*" + react-native: "npm:0.77.0-rc.6" react-native-web: "npm:0.19.13" serve: "npm:^14.2.3" - typescript: "npm:~5.3.0" - typescript-eslint: "npm:^8.12.2" languageName: unknown linkType: soft