From 198589e51d8d80a6b9fabd92f069d2334ac99caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 16 Apr 2026 12:53:41 +0200 Subject: [PATCH] chore(Reanimated): add lint step to disallow worklets includes --- packages/react-native-reanimated/package.json | 7 ++++--- .../scripts/validate-worklets-includes.sh | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100755 packages/react-native-reanimated/scripts/validate-worklets-includes.sh diff --git a/packages/react-native-reanimated/package.json b/packages/react-native-reanimated/package.json index 5db5196b15f5..ce6cfeae5412 100644 --- a/packages/react-native-reanimated/package.json +++ b/packages/react-native-reanimated/package.json @@ -12,10 +12,10 @@ "test": "jest", "lint": "yarn lint:js && yarn lint:common && yarn lint:android && yarn lint:apple", "lint:js": "eslint src __tests__ __typetests__ && yarn prettier --check src __tests__ __typetests__", - "lint:android": "../../scripts/validate-android.sh && ./android/gradlew -p android spotlessCheck -q && ../../scripts/cpplint.sh android/src && yarn format:android:cpp --dry-run -Werror && yarn lint:cmake", - "lint:common": "../../scripts/validate-common.sh && ../../scripts/cpplint.sh Common && yarn format:common --dry-run -Werror", + "lint:android": "../../scripts/validate-android.sh && yarn validate-includes android && ./android/gradlew -p android spotlessCheck -q && ../../scripts/cpplint.sh android/src && yarn format:android:cpp --dry-run -Werror && yarn lint:cmake", + "lint:common": "../../scripts/validate-common.sh && yarn validate-includes Common && ../../scripts/cpplint.sh Common && yarn format:common --dry-run -Werror", "lint:clang-tidy": "../../scripts/clang-tidy-lint.sh \".\"", - "lint:apple": "../../scripts/validate-apple.sh && yarn format:apple --dry-run -Werror", + "lint:apple": "../../scripts/validate-apple.sh && yarn validate-includes apple && yarn format:apple --dry-run -Werror", "lint:cmake": "find ./android -type d \\( -name build -o -name .cxx \\) -prune -o -type f -name 'CMakeLists.txt' -print | xargs ../../scripts/lint-cmake.sh", "format": "yarn format:js && yarn format:apple && yarn format:android && yarn format:common", "format:js": "prettier --write --list-different src __tests__ __typetests__", @@ -37,6 +37,7 @@ "build": "yarn workspace react-native-worklets build && yarn set-version && bob build", "circular-dependency-check": "yarn madge --extensions js,jsx --circular lib", "tree-shake:check:web": "yarn is-tree-shakable --resolution web", + "validate-includes": "bash ./scripts/validate-worklets-includes.sh", "validate-peers": "node ../../scripts/validate-compatibility-peer-dependencies.js", "set-version": "node scripts/set-version.js" }, diff --git a/packages/react-native-reanimated/scripts/validate-worklets-includes.sh b/packages/react-native-reanimated/scripts/validate-worklets-includes.sh new file mode 100755 index 000000000000..9393ec7e27c1 --- /dev/null +++ b/packages/react-native-reanimated/scripts/validate-worklets-includes.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +if grep -Rn "$@" --include='*.h' --include='*.cpp' --include='*.m' --include='*.mm' -e '^#include '; then + echo "Found disallowed \`#include \` in \`Common/\`, \`apple/\` or \`android/\`. Only \`#include \` is permitted." + exit 1 +fi