diff --git a/react-native-libraries.json b/react-native-libraries.json index ea986e073..091512626 100644 --- a/react-native-libraries.json +++ b/react-native-libraries.json @@ -1,6 +1,6 @@ [ { - "githubUrl": "https://github.com/onubo/react-native-logs", + "githubUrl": "https://github.com/mowispace/react-native-logs", "ios": true, "android": true, "web": true, @@ -149,7 +149,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/A11yWatch/react-native-reader", + "githubUrl": "https://github.com/j-mendez/react-native-reader", "ios": true, "android": true, "expoGo": true @@ -260,7 +260,8 @@ "expoGo": true }, { - "githubUrl": "https://github.com/Instabug/instabug-reactnative", + "githubUrl": "https://github.com/Instabug/Instabug-React-Native", + "npmPkg": "instabug-reactnative", "ios": true, "android": true, "web": true, @@ -287,7 +288,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/facebook/react-native-fbsdk", + "githubUrl": "https://github.com/facebookarchive/react-native-fbsdk", "ios": true, "android": true, "unmaintained": true @@ -492,11 +493,12 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/davodesign84/react-native-mixpanel", + "githubUrl": "https://github.com/davide-scalzo/react-native-mixpanel", "ios": true, "android": true, "unmaintained": true, - "newArchitecture": false + "newArchitecture": false, + "alternatives": ["mixpanel-react-native"] }, { "githubUrl": "https://github.com/react-navigation/react-navigation/tree/main/packages/native", @@ -698,7 +700,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/archriss/react-native-snap-carousel", + "githubUrl": "https://github.com/meliorence/react-native-snap-carousel", "examples": ["https://github.com/meliorence/react-native-snap-carousel/tree/master/example"], "images": [ "https://i.imgur.com/e1WbZcu.gif", @@ -767,7 +769,7 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/aakashns/react-native-dialogs", + "githubUrl": "https://github.com/react-native-dialogs/react-native-dialogs", "android": true }, { @@ -829,7 +831,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/benhurott/react-native-masked-text", + "githubUrl": "https://github.com/bhrott/react-native-masked-text", "ios": true, "android": true, "expoGo": true @@ -841,7 +843,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/wix/react-native-autogrow-textinput", + "githubUrl": "https://github.com/wix-incubator/react-native-autogrow-textinput", "ios": true, "android": true }, @@ -977,7 +979,7 @@ "android": true }, { - "githubUrl": "https://github.com/rnc-archive/react-native-side-menu", + "githubUrl": "https://github.com/Kureev/react-native-side-menu", "ios": true, "android": true, "expoGo": true, @@ -1001,7 +1003,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/skv-headless/react-native-scrollable-tab-view", + "githubUrl": "https://github.com/ptomasroos/react-native-scrollable-tab-view", "ios": true, "android": true, "expoGo": true @@ -1043,7 +1045,7 @@ "examples": ["https://snack.expo.dev/HyQ25dU8Z"] }, { - "githubUrl": "https://github.com/appintheair/react-native-looped-carousel", + "githubUrl": "https://github.com/phil-r/react-native-looped-carousel", "ios": true, "android": true, "expoGo": true @@ -1155,7 +1157,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/maxjvh/react-native-simple-modal", + "githubUrl": "https://github.com/httnn/react-native-simple-modal", "ios": true, "android": true, "expoGo": true @@ -1319,16 +1321,16 @@ "expoGo": true }, { - "githubUrl": "https://github.com/joinspontaneous/react-native-loading-spinner-overlay", + "githubUrl": "https://github.com/ladjs/react-native-loading-spinner-overlay", "images": [ - "https://raw.githubusercontent.com/joinspontaneous/react-native-loading-spinner-overlay/master/media/demo.gif" + "https://cdn.jsdelivr.net/gh/joinspontaneous/react-native-loading-spinner-overlay@1.0.0/media/demo.gif" ], "ios": true, "android": true, "expoGo": true }, { - "githubUrl": "https://github.com/jaysoo/react-native-parallax-scroll-view", + "githubUrl": "https://github.com/i6mi6/react-native-parallax-scroll-view", "ios": true, "android": true, "expoGo": true @@ -1373,7 +1375,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/matc4/react-native-svg-uri", + "githubUrl": "https://github.com/vault-development/react-native-svg-uri", "ios": true, "android": true, "expoGo": true @@ -1481,7 +1483,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/jorilallo/react-native-emoji", + "githubUrl": "https://github.com/EricPKerr/react-native-emoji", "ios": true, "android": true, "expoGo": true, @@ -1578,7 +1580,7 @@ "android": true }, { - "githubUrl": "https://github.com/yonahforst/react-native-permissions", + "githubUrl": "https://github.com/zoontek/react-native-permissions", "ios": true, "android": true, "windows": true, @@ -1610,12 +1612,12 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/terrillo/rn-apple-healthkit", + "githubUrl": "https://github.com/lucaspbordignon/rn-apple-healthkit", "ios": true, "examples": ["https://snack.expo.dev/S1gdfOb4Z?session_id=snack-session-rypa21JSW"] }, { - "githubUrl": "https://github.com/rt2zz/react-native-contacts", + "githubUrl": "https://github.com/morenoh149/react-native-contacts", "images": [ "https://raw.githubusercontent.com/morenoh149/react-native-contacts/master/example/react-native-contacts.gif" ], @@ -1664,7 +1666,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/wix/react-native-wordpress-editor", + "githubUrl": "https://github.com/wix-incubator/react-native-wordpress-editor", "ios": true, "android": true, "unmaintained": true @@ -1686,7 +1688,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/wix/react-native-keyboard-input", + "githubUrl": "https://github.com/wix-incubator/react-native-keyboard-input", "ios": true, "android": true, "unmaintained": true @@ -1787,7 +1789,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/lwansbrough/react-native-google-analytics", + "githubUrl": "https://github.com/rnc-archive/react-native-google-analytics", "ios": true, "android": true, "expoGo": true, @@ -1904,7 +1906,7 @@ "ios": true }, { - "githubUrl": "https://github.com/avocode/nachos-ui", + "githubUrl": "https://github.com/nachos-ui/nachos-ui", "ios": true, "android": true, "expoGo": true @@ -2014,7 +2016,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/wix/react-native-keyboard-aware-scrollview", + "githubUrl": "https://github.com/wix-incubator/react-native-keyboard-aware-scrollview", "ios": true, "android": true, "expoGo": true, @@ -2055,7 +2057,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/Polidea/react-native-ble-plx", + "githubUrl": "https://github.com/dotintent/react-native-ble-plx", "ios": true, "android": true, "newArchitecture": true, @@ -2475,7 +2477,7 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/CompanyCam/react-native-walkthrough-tooltip", + "githubUrl": "https://github.com/jasongaare/react-native-walkthrough-tooltip", "images": [ "https://raw.githubusercontent.com/jasongaare/react-native-walkthrough-tooltip/master/example.gif" ], @@ -3185,8 +3187,9 @@ "npmPkg": "@pietile-native-kit/page-slider" }, { - "githubUrl": "https://github.com/artyorsh/react-native-eva-icons", - "examples": ["https://github.com/artyorsh/react-native-eva-icons/tree/master/playground"], + "githubUrl": "https://github.com/akveo/react-native-eva-icons/tree/master/lib", + "npmPkg": "react-native-eva-icons", + "examples": ["https://github.com/akveo/react-native-eva-icons/tree/master/playground"], "ios": true, "android": true, "web": true, @@ -3428,16 +3431,13 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/tienph6m/react-native-animated-spinkit", + "githubUrl": "https://github.com/phamfoo/react-native-animated-spinkit", "ios": true, "android": true, "expoGo": true, - "examples": [ - "https://snack.expo.dev/@tienph6m/react-native-animated-spinkit", - "https://github.com/tienph6m/react-native-animated-spinkit/tree/master/example" - ], + "examples": ["https://github.com/phamfoo/react-native-animated-spinkit/tree/master/example"], "images": [ - "https://raw.githubusercontent.com/tienphaw/react-native-animated-spinkit/master/demo.gif" + "https://raw.githubusercontent.com/phamfoo/react-native-animated-spinkit/master/demo.gif" ] }, { @@ -3602,7 +3602,7 @@ "fireos": true }, { - "githubUrl": "https://github.com/th3rdwave/react-native-safe-area-context", + "githubUrl": "https://github.com/AppAndFlow/react-native-safe-area-context", "ios": true, "android": true, "tvos": true, @@ -3681,7 +3681,7 @@ "npmPkg": "@react-native-community/art" }, { - "githubUrl": "https://github.com/react-native-push-notification-ios/push-notification-ios", + "githubUrl": "https://github.com/react-native-push-notification/ios", "ios": true, "npmPkg": "@react-native-community/push-notification-ios", "newArchitecture": false, @@ -3760,10 +3760,8 @@ "npmPkg": "@react-native-community/image-editor" }, { - "githubUrl": "https://github.com/react-native-masked-view/masked-view", - "images": [ - "https://raw.githubusercontent.com/react-native-masked-view/masked-view/master/img/example.png" - ], + "githubUrl": "https://github.com/callstack/masked-view", + "images": ["https://raw.githubusercontent.com/callstack/masked-view/master/img/example.png"], "ios": true, "android": true, "fireos": true, @@ -4014,7 +4012,7 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/dooboolab/react-native-iap", + "githubUrl": "https://github.com/hyochan/react-native-iap", "images": [ "https://user-images.githubusercontent.com/27461460/52619625-87aa8a80-2ee5-11e9-9aee-6691c34408f3.gif" ], @@ -4150,7 +4148,7 @@ "android": true }, { - "githubUrl": "https://github.com/underscopeio/react-native-navigation-hooks", + "githubUrl": "https://github.com/Nubescope/react-native-navigation-hooks", "ios": true, "android": true }, @@ -4163,7 +4161,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/aws-amplify/amplify-js/tree/master/packages/datastore", + "githubUrl": "https://github.com/aws-amplify/amplify-js/tree/main/packages/datastore", "npmPkg": "@aws-amplify/datastore", "ios": true, "android": true, @@ -4181,7 +4179,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/aws-amplify/amplify-js/tree/master/packages/auth", + "githubUrl": "https://github.com/aws-amplify/amplify-js/tree/main/packages/auth", "npmPkg": "@aws-amplify/auth", "ios": true, "android": true, @@ -4293,14 +4291,12 @@ "android": true }, { - "githubUrl": "https://github.com/MohamadKh75/react-native-jalali-datepicker", + "githubUrl": "https://github.com/MoKhajavi75/react-native-jalali-datepicker", "npmPkg": "@mohamadkh75/react-native-jalali-datepicker", - "examples": [ - "https://github.com/MohamadKh75/react-native-jalali-datepicker/tree/master/example" - ], + "examples": ["https://github.com/MoKhajavi75/react-native-jalali-datepicker/tree/main/example"], "images": [ - "https://raw.githubusercontent.com/MohamadKh75/react-native-jalali-datepicker/master/assets/react-native-jalali-datepicker-1.jpg", - "https://raw.githubusercontent.com/MohamadKh75/react-native-jalali-datepicker/master/assets/react-native-jalali-datepicker-2.jpg" + "https://raw.githubusercontent.com/MoKhajavi75/react-native-jalali-datepicker/main/assets/react-native-jalali-datepicker-1.jpg", + "https://raw.githubusercontent.com/MoKhajavi75/react-native-jalali-datepicker/main/assets/react-native-jalali-datepicker-2.jpg" ], "ios": true, "android": true, @@ -4347,7 +4343,7 @@ "windows": true }, { - "githubUrl": "https://github.com/luggit/react-native-config", + "githubUrl": "https://github.com/react-native-config/react-native-config", "ios": true, "android": true, "windows": true, @@ -4412,7 +4408,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/weflex/react-native-wechat", + "githubUrl": "https://github.com/yorkie/react-native-wechat", "ios": true, "android": true, "unmaintained": true @@ -4489,7 +4485,7 @@ "android": true }, { - "githubUrl": "https://github.com/software-mansion/react-native-tab-view-viewpager-adapter", + "githubUrl": "https://github.com/osdnk/react-native-tab-view-viewpager-adapter", "ios": true, "android": true, "expoGo": true @@ -4640,7 +4636,7 @@ "android": true }, { - "githubUrl": "https://github.com/kalontech/ReactNativeWheelPicker", + "githubUrl": "https://github.com/Cero-Studio/ReactNativeWheelPicker", "ios": true, "android": true, "expoGo": true, @@ -4805,7 +4801,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/soliury/react-native-html-render", + "githubUrl": "https://github.com/osdio/react-native-html-render", "ios": true, "android": true, "unmaintained": true @@ -4856,7 +4852,7 @@ "unmaintained": true }, { - "githubUrl": "https://github.com/uxcam/react-native-ux-cam/tree/master/uxcam-react-wrapper", + "githubUrl": "https://github.com/uxcam/react-native-ux-cam/tree/main/uxcam-react-wrapper", "npmPkg": "react-native-ux-cam", "ios": true, "android": true @@ -5434,7 +5430,7 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/Gil2015/react-native-table-component", + "githubUrl": "https://github.com/dohooo/react-native-table-component", "images": [ "https://raw.githubusercontent.com/Gil2015/tools_file/master/img/react-native-table-component/example.jpg" ], @@ -5553,7 +5549,7 @@ "android": true }, { - "githubUrl": "https://github.com/rh389/react-native-securerandom", + "githubUrl": "https://github.com/robhogan/react-native-securerandom", "ios": true, "android": true, "fireos": true @@ -5613,8 +5609,8 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/venits/react-native-map-clustering", - "examples": ["https://github.com/venits/react-native-map-clustering/tree/master/example"], + "githubUrl": "https://github.com/tomekvenits/react-native-map-clustering", + "examples": ["https://github.com/tomekvenits/react-native-map-clustering/tree/master/example"], "ios": true, "android": true, "expoGo": true @@ -5627,9 +5623,9 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/mtford90/react-native-watch-connectivity", + "githubUrl": "https://github.com/watch-connectivity/react-native-watch-connectivity", "images": [ - "https://raw.githubusercontent.com/mtford90/react-native-watch-connectivity/06001bb1d15bcdb9607c35d75c7c7ab463c71e86/assets/screenshot.png" + "https://raw.githubusercontent.com/watch-connectivity/react-native-watch-connectivity/06001bb1d15bcdb9607c35d75c7c7ab463c71e86/assets/screenshot.png" ], "ios": true }, @@ -5654,8 +5650,8 @@ "expoGo": true }, { - "githubUrl": "https://github.com/Kjens93/react-native-font-faces", - "examples": ["https://github.com/Kjens93/react-native-font-faces/tree/master/example"], + "githubUrl": "https://github.com/kylerjensen/react-native-font-faces", + "examples": ["https://github.com/kylerjensen/react-native-font-faces/tree/master/example"], "ios": true, "android": true, "web": true, @@ -5947,7 +5943,7 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/edamameldn/tape-cli", + "githubUrl": "https://github.com/tapehq/tape-cli", "images": ["https://i.imgur.com/ZXq25sX.gif"], "ios": true, "android": true, @@ -6066,9 +6062,9 @@ "android": true }, { - "githubUrl": "https://github.com/facebook/flipper/tree/master/react-native/react-native-flipper", + "githubUrl": "https://github.com/facebook/flipper/tree/main/react-native/react-native-flipper", "examples": [ - "https://github.com/facebook/flipper/tree/master/react-native/ReactNativeFlipperExample" + "https://github.com/facebook/flipper/tree/main/react-native/ReactNativeFlipperExample" ], "ios": true, "android": true, @@ -6115,7 +6111,7 @@ "examples": ["https://github.com/dcangulo/react-native-pkce-challenge/tree/main/example"] }, { - "githubUrl": "https://github.com/Forward-Software/react-native-toolbox", + "githubUrl": "https://github.com/forwardsoftware/react-native-toolbox", "npmPkg": "@forward-software/react-native-toolbox", "ios": true, "android": true, @@ -6229,10 +6225,12 @@ "android": true }, { - "githubUrl": "https://github.com/artxty/typed-async-storage", + "githubUrl": "https://github.com/tyshkovskii/typed-async-storage", "ios": true, "android": true, - "expoGo": true + "expoGo": true, + "unmaintained": true, + "alternatives": ["zod"] }, { "githubUrl": "https://github.com/hyochan/react-native-nitro-sound", @@ -6318,9 +6316,9 @@ "alternatives": ["@react-native-menu/menu"] }, { - "githubUrl": "https://github.com/srk-sharingan/sharingan-rn-modal-dropdown", + "githubUrl": "https://github.com/selvamk-js/sharingan-rn-modal-dropdown", "images": [ - "https://raw.githubusercontent.com/srk-sharingan/sharingan-rn-modal-dropdown/master/demo/demo.gif" + "https://raw.githubusercontent.com/selvamk-js/sharingan-rn-modal-dropdown/master/demo/demo1.gif" ], "ios": true, "android": true @@ -6477,9 +6475,9 @@ "fireos": true }, { - "githubUrl": "https://github.com/aspect-apps/react-native-navigation-drawer-extension", + "githubUrl": "https://github.com/lukebrandonfarrell/react-native-navigation-drawer-extension", "examples": [ - "https://github.com/aspect-apps/react-native-navigation-drawer-extension/tree/master/example" + "https://github.com/lukebrandonfarrell/react-native-navigation-drawer-extension/tree/master/example" ], "images": [ "https://raw.githubusercontent.com/LukeBrandonFarrell/open-source-images/master/react-native-navigation-drawer-extension/left-drawer.gif", @@ -6544,7 +6542,7 @@ "android": true }, { - "githubUrl": "https://github.com/doville/rn-fitness-tracker", + "githubUrl": "https://github.com/kilohealth/rn-fitness-tracker", "npmPkg": "@kilohealth/rn-fitness-tracker", "ios": true, "android": true @@ -6674,12 +6672,10 @@ "template": true }, { - "githubUrl": "https://github.com/smallcasetech/react-native-simple-biometrics", - "examples": [ - "https://github.com/smallcasetech/react-native-simple-biometrics/tree/master/example" - ], + "githubUrl": "https://github.com/smallcase/react-native-simple-biometrics", + "examples": ["https://github.com/smallcase/react-native-simple-biometrics/tree/master/example"], "images": [ - "https://raw.githubusercontent.com/smallcasetech/react-native-simple-biometrics/master/demo.gif" + "https://raw.githubusercontent.com/smallcase/react-native-simple-biometrics/master/demo.gif" ], "ios": true, "android": true @@ -6725,12 +6721,12 @@ "expoGo": true }, { - "githubUrl": "https://github.com/Flair-Dev/react-native-awesome-gallery", - "examples": ["https://github.com/Flair-Dev/react-native-awesome-gallery/tree/main/example"], + "githubUrl": "https://github.com/pavelbabenko/react-native-awesome-gallery", + "examples": ["https://github.com/pavelbabenko/react-native-awesome-gallery/tree/main/example"], "images": [ - "https://raw.githubusercontent.com/Flair-Dev/react-native-awesome-gallery/main/example-basic.gif", - "https://raw.githubusercontent.com/Flair-Dev/react-native-awesome-gallery/main/example-loop.gif", - "https://raw.githubusercontent.com/Flair-Dev/react-native-awesome-gallery/main/example-toolbar.gif" + "https://raw.githubusercontent.com/pavelbabenko/react-native-awesome-gallery/main/example-basic.gif", + "https://raw.githubusercontent.com/pavelbabenko/react-native-awesome-gallery/main/example-loop.gif", + "https://raw.githubusercontent.com/pavelbabenko/react-native-awesome-gallery/main/example-toolbar.gif" ], "ios": true, "android": true, @@ -7044,8 +7040,8 @@ "expoGo": true }, { - "githubUrl": "https://github.com/Blaumaus/react-native-redux-alert", - "examples": ["https://github.com/Blaumaus/react-native-redux-alert/tree/main/example"], + "githubUrl": "https://github.com/ossua/react-native-redux-alert", + "examples": ["https://github.com/ossua/react-native-redux-alert/tree/main/example"], "ios": true, "android": true, "expoGo": true @@ -7333,9 +7329,9 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/IjzerenHein/react-native-bundle-visualizer", + "githubUrl": "https://github.com/callstack/react-native-bundle-visualizer", "images": [ - "https://raw.githubusercontent.com/IjzerenHein/react-native-bundle-visualizer/master/react-native-bundle-visualizer2.gif" + "https://raw.githubusercontent.com/callstack/react-native-bundle-visualizer/main/react-native-bundle-visualizer2.gif" ], "ios": true, "android": true, @@ -7495,8 +7491,10 @@ "expoGo": true }, { - "githubUrl": "https://github.com/mohakapt/react-native-js-tableview", - "examples": ["https://github.com/mohakapt/react-native-js-tableview/tree/master/example"], + "githubUrl": "https://github.com/heysem-useinsider/react-native-js-tableview", + "examples": [ + "https://github.com/heysem-useinsider/react-native-js-tableview/tree/master/example" + ], "images": [ "https://raw.githubusercontent.com/mohakapt/react-native-js-tableview/master/images/screenshot_ios.gif", "https://raw.githubusercontent.com/mohakapt/react-native-js-tableview/master/images/screenshot_android.gif" @@ -7527,14 +7525,14 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/SrBrahma/react-native-shadow-2", + "githubUrl": "https://github.com/ftzi/react-native-shadow-2", "examples": [ "https://snack.expo.dev/@srbrahma/react-native-shadow-2-sandbox", - "https://github.com/SrBrahma/react-native-shadow-2/tree/main/sandbox" + "https://github.com/ftzi/react-native-shadow-2/tree/main/sandbox" ], "images": [ - "https://raw.githubusercontent.com/SrBrahma/react-native-shadow-2/main/resources/README/react-native-shadow-2-ex-1.png", - "https://raw.githubusercontent.com/SrBrahma/react-native-shadow-2/main/resources/README/react-native-shadow-2-ex-2.png" + "https://raw.githubusercontent.com/ftzi/react-native-shadow-2/main/resources/README/react-native-shadow-2-ex-1.png", + "https://raw.githubusercontent.com/ftzi/react-native-shadow-2/main/resources/README/react-native-shadow-2-ex-2.png" ], "ios": true, "android": true, @@ -7603,10 +7601,10 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/SrBrahma/pagescrollview", + "githubUrl": "https://github.com/ftzi/pagescrollview", "examples": ["https://snack.expo.dev/@srbrahma/887706"], "images": [ - "https://raw.githubusercontent.com/SrBrahma/pagescrollview/main/resources/README/example.png" + "https://raw.githubusercontent.com/ftzi/pagescrollview/main/resources/README/example.png" ], "ios": true, "android": true, @@ -7786,8 +7784,8 @@ "android": true }, { - "githubUrl": "https://github.com/yhostc/react-native-idata-scanner", - "examples": ["https://github.com/yhostc/react-native-idata-scanner/tree/main/example"], + "githubUrl": "https://github.com/isnolan/react-native-idata-scanner", + "examples": ["https://github.com/isnolan/react-native-idata-scanner/tree/main/example"], "ios": true, "android": true, "expoGo": true @@ -7887,7 +7885,7 @@ "dev": true }, { - "githubUrl": "https://github.com/software-mansion-labs/react-freeze", + "githubUrl": "https://github.com/software-mansion/react-freeze", "ios": true, "android": true, "expoGo": true, @@ -7934,7 +7932,7 @@ "android": true }, { - "githubUrl": "https://github.com/flexible-agency/react-native-email-link", + "githubUrl": "https://github.com/tschoffelen/react-native-email-link", "ios": true, "android": true, "expoGo": true, @@ -8080,9 +8078,9 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/SrBrahma/react-native-payment-icons", + "githubUrl": "https://github.com/ftzi/react-native-payment-icons", "images": [ - "https://github.com/SrBrahma/react-native-payment-icons/raw/main/resources/example.jpg" + "https://raw.githubusercontent.com/ftzi/react-native-payment-icons/main/resources/example.jpg" ], "ios": true, "android": true, @@ -8159,9 +8157,9 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/nomi9995/react-native-interactable-reanimated", + "githubUrl": "https://github.com/numandev1/react-native-interactable-reanimated", "examples": [ - "https://github.com/nomi9995/react-native-interactable-reanimated/tree/master/example" + "https://github.com/numandev1/react-native-interactable-reanimated/tree/master/example" ], "images": [ "https://i.imgur.com/ErA2GQo.gif", @@ -8214,9 +8212,9 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/xulihang/vision-camera-dynamsoft-barcode-reader", + "githubUrl": "https://github.com/tony-xlh/vision-camera-dynamsoft-barcode-reader", "examples": [ - "https://github.com/xulihang/vision-camera-dynamsoft-barcode-reader/tree/main/example" + "https://github.com/tony-xlh/vision-camera-dynamsoft-barcode-reader/tree/main/example" ], "ios": true, "android": true @@ -8378,7 +8376,7 @@ "template": true }, { - "githubUrl": "https://github.com/criszz77/react-native-media-console", + "githubUrl": "https://github.com/LunatiqueCoder/react-native-media-console", "images": [ "https://user-images.githubusercontent.com/55203625/159137837-4e34a8be-1cbb-48ae-9d67-99ce4922e660.gif" ], @@ -8776,7 +8774,7 @@ "expoGo": true }, { - "githubUrl": "https://github.com/Luffos/rxn-input", + "githubUrl": "https://github.com/gomes042/rxn-input", "android": true, "web": true, "unmaintained": true @@ -8934,9 +8932,9 @@ "dev": true }, { - "githubUrl": "https://github.com/xulihang/vision-camera-dynamsoft-label-recognizer", + "githubUrl": "https://github.com/tony-xlh/vision-camera-dynamsoft-label-recognizer", "examples": [ - "https://github.com/xulihang/vision-camera-dynamsoft-label-recognizer/tree/main/example" + "https://github.com/tony-xlh/vision-camera-dynamsoft-label-recognizer/tree/main/example" ], "ios": true, "android": true @@ -9020,7 +9018,7 @@ ] }, { - "githubUrl": "https://github.com/Luffos/rxn-units", + "githubUrl": "https://github.com/gomes042/rxn-units", "examples": ["https://codesandbox.io/s/rxn-units-example-ox6n4h"], "ios": true, "android": true, @@ -9152,7 +9150,7 @@ "android": true }, { - "githubUrl": "https://github.com/access-mindinventory/react-native-card-animation", + "githubUrl": "https://github.com/Mindinventory/react-native-card-animation", "npmPkg": "@mindinventory/react-native-card-animation", "ios": true, "android": true @@ -9421,11 +9419,11 @@ "expoGo": true }, { - "githubUrl": "https://github.com/dev-event/react-native-maps-draw", + "githubUrl": "https://github.com/dev-chief/react-native-maps-draw", "npmPkg": "@dev-event/react-native-maps-draw", - "examples": ["https://github.com/dev-event/react-native-maps-draw/tree/main/example"], + "examples": ["https://github.com/dev-chief/react-native-maps-draw/tree/main/example"], "images": [ - "https://raw.githubusercontent.com/dev-event/react-native-maps-draw/main/drawes.gif" + "https://raw.githubusercontent.com/dev-chief/react-native-maps-draw/main/drawes.gif" ], "ios": true, "android": true @@ -9600,13 +9598,13 @@ "expoGo": true }, { - "githubUrl": "https://github.com/inferusvv/react-native-unicorn-modals", + "githubUrl": "https://github.com/bezenson/react-native-unicorn-modals", "examples": [ "https://snack.expo.dev/@inferusvv/react-native-unicorn-modals", - "https://github.com/inferusvv/react-native-unicorn-modals/tree/main/example" + "https://github.com/bezenson/react-native-unicorn-modals/tree/main/example" ], "images": [ - "https://raw.githubusercontent.com/inferusvv/react-native-unicorn-modals/main/.github/images/demo.gif" + "https://raw.githubusercontent.com/bezenson/react-native-unicorn-modals/main/.github/images/demo.gif" ], "ios": true, "android": true, @@ -10405,19 +10403,18 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/baronha/ting", + "githubUrl": "https://github.com/NitrogenZLab/ting", "npmPkg": "@baronha/ting", - "examples": ["https://github.com/baronha/ting/tree/main/example"], - "images": ["https://github.com/baronha/ting/raw/main/resources/Ting.png"], + "examples": ["https://github.com/NitrogenZLab/ting/tree/main/example"], "ios": true, "android": true }, { - "githubUrl": "https://github.com/baronha/react-native-photo-editor", + "githubUrl": "https://github.com/NitrogenZLab/react-native-photo-editor", "npmPkg": "@baronha/react-native-photo-editor", - "examples": ["https://github.com/baronha/react-native-photo-editor/tree/master/example"], + "examples": ["https://github.com/NitrogenZLab/react-native-photo-editor/tree/master/example"], "images": [ - "https://github.com/baronha/react-native-photo-editor/raw/master/resources/banner1.jpg" + "https://raw.githubusercontent.com/NitrogenZLab/react-native-photo-editor/master/resources/banner1.jpg" ], "ios": true, "android": true @@ -10659,8 +10656,7 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/Hector-Chong/native-wechat", - "examples": ["https://native-wechat.hector.im/guide/getting-started.html"], + "githubUrl": "https://github.com/Hector-Zhuang/native-wechat", "ios": true, "android": true }, @@ -10913,23 +10909,27 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/AnkiPro/react-native-canvas-view", + "githubUrl": "https://github.com/NojiApp/react-native-canvas-view", "npmPkg": "@ankipro/react-native-canvas-view", - "examples": ["https://github.com/AnkiPro/react-native-canvas-view/tree/main/example"], - "images": ["https://github.com/AnkiPro/react-native-canvas-view/blob/main/assets/demo.png"], + "examples": ["https://github.com/NojiApp/react-native-canvas-view/tree/main/example"], + "images": [ + "https://raw.githubusercontent.com/NojiApp/react-native-canvas-view/main/assets/demo.png" + ], "ios": true }, { - "githubUrl": "https://github.com/AnkiPro/react-native-file-open", + "githubUrl": "https://github.com/NojiApp/react-native-file-open", "npmPkg": "@ankipro/react-native-file-open", - "examples": ["https://github.com/AnkiPro/react-native-file-open/tree/main/example"], + "examples": ["https://github.com/NojiApp/react-native-file-open/tree/main/example"], "ios": true }, { - "githubUrl": "https://github.com/AnkiPro/react-native-window-resize", + "githubUrl": "https://github.com/NojiApp/react-native-window-resize", "npmPkg": "@ankipro/react-native-window-resize", - "examples": ["https://github.com/AnkiPro/react-native-window-resize/tree/main/example"], - "images": ["https://github.com/AnkiPro/react-native-window-resize/raw/main/assets/example.gif"], + "examples": ["https://github.com/NojiApp/react-native-window-resize/tree/main/example"], + "images": [ + "https://raw.githubusercontent.com/NojiApp/react-native-window-resize/main/assets/example.gif" + ], "ios": true, "dev": true }, @@ -10956,9 +10956,9 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/ShivamRawat0l/react-native-loader-collection", + "githubUrl": "https://github.com/rn-elementary/react-native-loader-collection", "images": [ - "https://github.com/ShivamRawat0l/react-native-loader-collection/blob/main/demo/player_GJBbstqXvs.gif" + "https://raw.githubusercontent.com/rn-elementary/react-native-loader-collection/main/demo/player_GJBbstqXvs.gif" ], "ios": true, "android": true @@ -11275,9 +11275,9 @@ "expoGo": true }, { - "githubUrl": "https://github.com/callstack/react-native-windows-hello", + "githubUrl": "https://github.com/BartoszKlonowski/react-native-windows-hello", "images": [ - "https://raw.githubusercontent.com/callstack/react-native-windows-hello/main/.github/Resources/RNW-Hello-FullExample.gif" + "https://raw.githubusercontent.com/BartoszKlonowski/react-native-windows-hello/main/.github/Resources/RNW-Hello-FullExample.gif" ], "windows": true }, @@ -12492,14 +12492,14 @@ "newArchitectureNote": "This library is built on top of Nitro Modules, which only supports new architecture and it's not compatible with the old architecture." }, { - "githubUrl": "https://github.com/dream-sports-labs/react-native-fast-image", + "githubUrl": "https://github.com/dream-horizon-org/react-native-fast-image", "npmPkg": "@d11/react-native-fast-image", "examples": [ - "https://github.com/dream-sports-labs/react-native-fast-image/tree/main/ReactNativeFastImageExample" + "https://github.com/dream-horizon-org/react-native-fast-image/tree/main/ReactNativeFastImageExample" ], "images": [ - "https://raw.githubusercontent.com/dream-sports-labs/react-native-fast-image/refs/heads/main/docs/assets/scroll.gif", - "https://github.com/dream-sports-labs/react-native-fast-image/blob/main/docs/assets/priority.gif?raw=true" + "https://raw.githubusercontent.com/dream-horizon-org/react-native-fast-image/main/docs/assets/scroll.gif", + "https://raw.githubusercontent.com/dream-horizon-org/react-native-fast-image/main/docs/assets/priority.gif" ], "ios": true, "android": true @@ -12570,10 +12570,10 @@ "expoGo": true }, { - "githubUrl": "https://github.com/callstackincubator/react-native-bottom-tabs/tree/main/packages/react-native-bottom-tabs", + "githubUrl": "https://github.com/callstack/react-native-bottom-tabs/tree/main/packages/react-native-bottom-tabs", "examples": [ - "https://github.com/callstackincubator/react-native-bottom-tabs/tree/main/apps/example", - "https://github.com/callstackincubator/react-native-bottom-tabs/tree/main/packages/expo-template" + "https://github.com/callstack/react-native-bottom-tabs/tree/main/apps/example", + "https://github.com/callstack/react-native-bottom-tabs/tree/main/packages/expo-template" ], "ios": true, "android": true, @@ -12843,11 +12843,8 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/tamagui/tamagui/tree/master/code/ui/tamagui", + "githubUrl": "https://github.com/tamagui/tamagui/tree/main/code/ui/tamagui", "examples": ["https://tamagui.dev"], - "images": [ - "https://raw.githubusercontent.com/tamagui/tamagui/master/code/tamagui.dev/public/social.png" - ], "android": true, "ios": true, "web": true, @@ -12929,7 +12926,8 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/filipe-2/native-sass", + "githubUrl": "https://github.com/nativesass/nativesass", + "npmPkg": "native-sass", "ios": true, "android": true, "web": true, @@ -13458,7 +13456,7 @@ "newArchitecture": false }, { - "githubUrl": "https://github.com/project-chip/matter.js/tree/main/packages/react-native", + "githubUrl": "https://github.com/matter-js/matter.js/tree/main/packages/react-native", "npmPkg": "@matter/react-native", "ios": true, "android": true @@ -13555,10 +13553,7 @@ "configPlugin": true }, { - "githubUrl": "https://github.com/saulamsal/react-native-sheet-transitions", - "examples": [ - "https://github.com/saulamsal/react-native-sheet-transitions?tab=readme-ov-file#example-with-haptic-feedback" - ], + "githubUrl": "https://github.com/saulsharma/react-native-sheet-transitions", "images": [ "https://github.com/saulamsal/react-native-sheet-transitions/blob/main/assets/gifs/demo.gif" ], @@ -14101,9 +14096,9 @@ "web": true }, { - "githubUrl": "https://github.com/gitn00b1337/expo-widgets", + "githubUrl": "https://github.com/mike-stewart-dev/expo-widgets", "npmPkg": "@bittingz/expo-widgets", - "examples": ["https://github.com/gitn00b1337/expo-widgets/tree/main/example"], + "examples": ["https://github.com/mike-stewart-dev/expo-widgets/tree/main/example"], "ios": true, "android": true, "web": true, @@ -14533,9 +14528,9 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/google-gemini/generative-ai-js", + "githubUrl": "https://github.com/google-gemini/deprecated-generative-ai-js", "npmPkg": "@google/generative-ai", - "examples": ["https://github.com/google-gemini/generative-ai-js/tree/main/samples"], + "examples": ["https://github.com/google-gemini/deprecated-generative-ai-js/tree/main/samples"], "web": true, "expoGo": true, "unmaintained": true @@ -16873,9 +16868,9 @@ "android": true }, { - "githubUrl": "https://github.com/dream-sports-labs/d11-react-native-mqtt", + "githubUrl": "https://github.com/dream-horizon-org/d11-react-native-mqtt", "npmPkg": "@d11/react-native-mqtt", - "examples": ["https://github.com/dream-sports-labs/d11-react-native-mqtt/tree/main/example"], + "examples": ["https://github.com/dream-horizon-org/d11-react-native-mqtt/tree/main/example"], "ios": true, "android": true }, @@ -17172,7 +17167,7 @@ "newArchitecture": true }, { - "githubUrl": "https://github.com/software-mansion-labs/react-native-enriched", + "githubUrl": "https://github.com/software-mansion/react-native-enriched", "ios": true, "android": true, "newArchitecture": true @@ -17905,9 +17900,9 @@ "android": true }, { - "githubUrl": "https://github.com/corasan/react-native-mlx/tree/main/package", + "githubUrl": "https://github.com/corasan/react-native-nitro-mlx/tree/main/package", "npmPkg": "react-native-nitro-mlx", - "examples": ["https://github.com/corasan/react-native-mlx/tree/main/example"], + "examples": ["https://github.com/corasan/react-native-nitro-mlx/tree/main/example"], "ios": true }, { @@ -19226,5 +19221,10 @@ ], "ios": true, "android": true + }, + { + "githubUrl": "https://github.com/Hector-Zhuang/expo-native-wechat", + "ios": true, + "android": true } ] diff --git a/react-native-libraries.schema.json b/react-native-libraries.schema.json index c6719340c..584239aa8 100644 --- a/react-native-libraries.schema.json +++ b/react-native-libraries.schema.json @@ -119,7 +119,7 @@ "https://reactnative.dev/img/homepage/phones.png", "https://github.com/mattermost/react-native-paste-input/blob/master/example/gifs/iOSPasteInput.gif?raw=true" ], - "pattern": "^(http(s?):)(\\w|/|\\.|:|-|%|\\+|\\*)+\\.(?:jp(e?)g|gif|png|webp|JP(E?)G|GIF|PNG|WEBP)(\\?\\S*)?$" + "pattern": "^(http(s?):)(\\w|/|\\.|:|-|%|@|\\+|\\*)+\\.(?:jp(e?)g|gif|png|webp|JP(E?)G|GIF|PNG|WEBP)(\\?\\S*)?$" } }, "npmPkg": { diff --git a/scripts/check-resources.ts b/scripts/check-resources.ts index b2ded8f95..5853e5adb 100644 --- a/scripts/check-resources.ts +++ b/scripts/check-resources.ts @@ -5,21 +5,26 @@ import { type LibraryDataEntryType } from '~/types'; import libraries from '../react-native-libraries.json'; const CONCURRENCY = 8; +const GITHUB_URLS_ONLY = false; async function fetchUrl(url: string) { const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), 10_000); try { - const res = await fetch(url, { signal: controller.signal }); + const res = await fetch(url, { signal: controller.signal, redirect: 'manual' }); if (res.status !== 200) { - console.warn(`❌ ${url} → ${res.status}`); + if (res.status > 300 && res.status < 400) { + console.warn(`⚠️ ${url} → ${res.status} (${res.headers.get('location')})`); + } else { + console.error(`❌ ${url} → ${res.status}`); + } } } catch (err) { if (err instanceof DOMException) { - console.warn(`❌ ${url} failed to fetch:`, err.message); + console.error(`❌ ${url} failed to fetch:`, err.message); } else { - console.warn(`❌ ${url} failed to fetch!`); + console.error(`❌ ${url} failed to fetch!`); } } finally { clearTimeout(timeout); @@ -27,7 +32,11 @@ async function fetchUrl(url: string) { } async function runFetches(libraries: LibraryDataEntryType[]) { - const urls = libraries.flatMap(lib => [...(lib.examples ?? []), ...(lib.images ?? [])]); + const urls = libraries.flatMap(lib => + GITHUB_URLS_ONLY + ? [lib.githubUrl] + : [lib.githubUrl, ...(lib.examples ?? []), ...(lib.images ?? [])] + ); console.log(`⬇️ Fetching ${urls.length} URLs with concurrency of ${CONCURRENCY} requests`); diff --git a/scripts/validate-new-entries.ts b/scripts/validate-new-entries.ts index efa9396d7..45172f288 100644 --- a/scripts/validate-new-entries.ts +++ b/scripts/validate-new-entries.ts @@ -7,7 +7,7 @@ import libraries from '../react-native-libraries.json'; import { fetchGithubData } from './fetch-github-data'; import { fetchNpmDownloadData } from './fetch-npm-download-data'; -import { fillNpmName, hasMismatchedPackageData } from './helpers'; +import { fillNpmName, hasMismatchedPackageData, sleep } from './helpers'; async function makeBaseFileQuery() { const result = await fetch( @@ -27,75 +27,95 @@ console.log('🚩️ Detected changes in data entries, checking!'); const modifiedEntries = differenceWith(libraries, mainData, isEqual); -const checkResults = await Promise.all( - modifiedEntries.map(async entry => { - const entryWithNpmData = await fetchNpmDownloadData(fillNpmName(entry)); - - if (!entryWithNpmData.npm) { - console.error( - `Unable to fetch npm package data for ${entryWithNpmData.npmPkg} package! Please make sure that the package exist in npm registry.` - ); - console.error( - `For the new packages recently published for the first time, npm API can return non-existing package error. The resolution here is to wait up to 24h, and then re-trigger the CI workflow.` - ); - console.error( - `To check the current API response visit: https://api.npmjs.org/downloads/point/last-month/${entryWithNpmData.npmPkg}` - ); - return false; - } - - const entryWithGitHubData = await fetchGithubData(entryWithNpmData); - - if (!entryWithGitHubData.github) { - console.error( - `Unable to fetch data from ${entryWithGitHubData.githubUrl} repository! Make sure that repository is public, and URL is correct.` - ); - return false; - } - - if (entryWithGitHubData.github.isPrivate === true) { - console.error( - `Extracted 'package.json' from ${entryWithGitHubData.githubUrl} is marked as private! You might be linking to the monorepo/workspace root, instead of wanted package directory.` - ); - return false; - } - - if (!entryWithGitHubData.github.name) { - console.error( - `Extracted 'package.json' from ${entryWithGitHubData.githubUrl} does not contains package name! You might be linking to the monorepo/workspace root, instead of wanted package directory.` - ); - return false; - } - - if (hasMismatchedPackageData(entryWithGitHubData)) { - console.error( - `Package name extracted from 'package.json' at given GitHub repository URL differs with package name in the directory data!` - ); - console.error( - `- Supplied package name: ${entryWithGitHubData.npmPkg ?? entryWithGitHubData.githubUrl.split('/').at(-1)}` - ); - console.error( - `- Extracted package name: ${entryWithGitHubData.github.name ?? entryWithGitHubData.github.fullName.split('/').at(-1)}` - ); - console.error( - `If package is a part of monorepo, 'githubUrl' must point to directory where 'package.json' for a given package resides.` - ); - - return false; - } - - const invalidKeys = Object.keys(entry).filter(key => !VALID_ENTRY_KEYS.has(key)); - - if (invalidKeys.length > 0) { - console.error( - `Package entry for '${entryWithGitHubData.npmPkg}' contains invalid fields: ${invalidKeys.map(key => `'${key}'`).join(', ')}. Correct or remove the listed keys to fix the definition.` - ); - return false; - } - - return true; - }) -); +const BATCH_SIZE = 5; +const STAGGER_MS = 1000; +const BATCH_DELAY_MS = 3000; + +const checkResults = []; + +for (let i = 0; i < modifiedEntries.length; i += BATCH_SIZE) { + const batch = modifiedEntries.slice(i, i + BATCH_SIZE); + + const batchResults = await Promise.all( + batch.map(entry => + (async () => { + await sleep(STAGGER_MS); + + const entryWithNpmData = await fetchNpmDownloadData(fillNpmName(entry)); + + if (!entryWithNpmData.npm) { + console.error( + `Unable to fetch npm package data for ${entryWithNpmData.npmPkg} package! Please make sure that the package exist in npm registry.` + ); + console.error( + `For the new packages recently published for the first time, npm API can return non-existing package error. The resolution here is to wait up to 24h, and then re-trigger the CI workflow.` + ); + console.error( + `To check the current API response visit: https://api.npmjs.org/downloads/point/last-month/${entryWithNpmData.npmPkg}` + ); + return false; + } + + const entryWithGitHubData = await fetchGithubData(entryWithNpmData); + + if (!entryWithGitHubData.github) { + console.error( + `Unable to fetch data from ${entryWithGitHubData.githubUrl} repository! Make sure that repository is public, and URL is correct.` + ); + return false; + } + + if (entryWithGitHubData.github.isPrivate === true) { + console.error( + `Extracted 'package.json' from ${entryWithGitHubData.githubUrl} is marked as private! You might be linking to the monorepo/workspace root, instead of wanted package directory.` + ); + return false; + } + + if (!entryWithGitHubData.github.name) { + console.error( + `Extracted 'package.json' from ${entryWithGitHubData.githubUrl} does not contains package name! You might be linking to the monorepo/workspace root, instead of wanted package directory.` + ); + return false; + } + + if (hasMismatchedPackageData(entryWithGitHubData)) { + console.error( + `Package name extracted from 'package.json' at given GitHub repository URL differs with package name in the directory data!` + ); + console.error( + `- Supplied package name: ${entryWithGitHubData.npmPkg ?? entryWithGitHubData.githubUrl.split('/').at(-1)}` + ); + console.error( + `- Extracted package name: ${entryWithGitHubData.github.name ?? entryWithGitHubData.github.fullName.split('/').at(-1)}` + ); + console.error( + `If package is a part of monorepo, 'githubUrl' must point to directory where 'package.json' for a given package resides.` + ); + + return false; + } + + const invalidKeys = Object.keys(entry).filter(key => !VALID_ENTRY_KEYS.has(key)); + + if (invalidKeys.length > 0) { + console.error( + `Package entry for '${entryWithGitHubData.npmPkg}' contains invalid fields: ${invalidKeys.map(key => `'${key}'`).join(', ')}. Correct or remove the listed keys to fix the definition.` + ); + return false; + } + + return true; + })() + ) + ); + + checkResults.push(...batchResults); + + if (i + BATCH_SIZE < modifiedEntries.length) { + await sleep(BATCH_DELAY_MS); + } +} if (checkResults.some(result => !result)) { console.error('\n❌ There were errors spotted during new entries check!');