From 33531c0c354a39c3026d20695e7860178676451a Mon Sep 17 00:00:00 2001 From: richardo2016x Date: Thu, 14 Nov 2024 18:27:31 +0800 Subject: [PATCH 1/2] perf: some skills. --- apps/mobile/babel.config.js | 9 +++++++++ apps/mobile/package.json | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/apps/mobile/babel.config.js b/apps/mobile/babel.config.js index 0d8078348..e67818f25 100644 --- a/apps/mobile/babel.config.js +++ b/apps/mobile/babel.config.js @@ -17,6 +17,15 @@ module.exports = { ], ], plugins: [ + ['lodash'], + [ + 'import', + { + libraryName: 'ahooks', + camel2DashComponentName: false, + camel2UnderlineComponentName: false, + }, + ], [ 'transform-define', { diff --git a/apps/mobile/package.json b/apps/mobile/package.json index c49fc143c..9d632c629 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -21,6 +21,8 @@ "lint": "eslint ./src --ext .js,.jsx,.ts,.tsx", "lint:commit:fix": "eslint ./src --quiet --fix --ext .js,.jsx,.ts,.tsx --max-warnings=-1", "lint:fix": "eslint ./src --fix --ext .js,.jsx,.ts,.tsx", + "perf:view:android": "react-native-bundle-visualizer --platform=android", + "perf:view:ios": "react-native-bundle-visualizer --platform=ios", "prepare-archive": "yarn build:deps && yarn build-inpage", "restart": "yarn start --reset-cache", "start": "yarn ensure-git-hooks && yarn build:deps && yarn build-inpage && react-native start", @@ -200,6 +202,8 @@ "@types/react-test-renderer": "^18.0.0", "@types/uuid": "^9.0.7", "babel-jest": "^27.5.1", + "babel-plugin-import": "^1.13.8", + "babel-plugin-lodash": "^3.3.4", "babel-plugin-module-resolver": "^5.0.0", "babel-plugin-transform-define": "^2.1.4", "babel-plugin-transform-remove-console": "^6.9.4", @@ -213,6 +217,7 @@ "qrcode": "^1.5.3", "react-devtools": "^4.28.5", "react-native-asset": "^2.1.1", + "react-native-bundle-visualizer": "^3.1.3", "react-native-svg-transformer": "^1.1.0", "react-native-version": "^4.0.0", "react-test-renderer": "18.2.0", From 1f8758bec11bf2633b2e06605ab44f8b8d06b9b6 Mon Sep 17 00:00:00 2001 From: richardo2016x Date: Fri, 15 Nov 2024 17:08:37 +0800 Subject: [PATCH 2/2] feat: some perf improvement. --- apps/mobile/ReactotronConfig.js | 15 +- apps/mobile/android/app/build.gradle | 2 +- .../android/app/src/main/res/font/sf_pro.xml | 15 -- apps/mobile/android/settings.gradle | 4 +- apps/mobile/src/App.tsx | 4 +- .../src/core/bridges/EntryScriptWeb3.ts | 33 ++- .../bridges/builtInScripts/loadVConsole.ts | 9 - apps/mobile/src/hooks/useBootstrap.ts | 28 +-- apps/mobile/src/hooks/useLock.ts | 9 +- yarn.lock | 222 +++++++++++++++++- 10 files changed, 267 insertions(+), 74 deletions(-) delete mode 100644 apps/mobile/android/app/src/main/res/font/sf_pro.xml diff --git a/apps/mobile/ReactotronConfig.js b/apps/mobile/ReactotronConfig.js index 3042ff307..a9eaf3a40 100644 --- a/apps/mobile/ReactotronConfig.js +++ b/apps/mobile/ReactotronConfig.js @@ -1,18 +1,17 @@ import { NativeModules } from 'react-native'; -import Reactotron from "reactotron-react-native"; -import { AsyncStorage } from "@react-native-async-storage/async-storage"; +import Reactotron from 'reactotron-react-native'; +import { AsyncStorage } from '@react-native-async-storage/async-storage'; let scriptHostname; -if (__DEV__) { - const scriptURL = NativeModules.SourceCode.scriptURL; - scriptHostname = scriptURL.split('://')[1].split(':')[0]; - console.debug('[ReactotronConfig] scriptHostname %s', scriptHostname) -} + +const scriptURL = NativeModules.SourceCode.scriptURL; +scriptHostname = scriptURL.split('://')[1].split(':')[0]; +console.debug('[ReactotronConfig] scriptHostname %s', scriptHostname); Reactotron.setAsyncStorageHandler(AsyncStorage) // controls connection & communication settings .configure({ - name: "Rabby Mobile", + name: 'Rabby Mobile', host: scriptHostname, }) // add all built-in react native plugins diff --git a/apps/mobile/android/app/build.gradle b/apps/mobile/android/app/build.gradle index 78d98230c..ac3100335 100644 --- a/apps/mobile/android/app/build.gradle +++ b/apps/mobile/android/app/build.gradle @@ -192,7 +192,7 @@ dependencies { implementation jscFlavor } - implementation project(':react-native-splash-screen') + // implementation project(':react-native-splash-screen') // implementation project(':isudaji_react-native-install-apk') } diff --git a/apps/mobile/android/app/src/main/res/font/sf_pro.xml b/apps/mobile/android/app/src/main/res/font/sf_pro.xml deleted file mode 100644 index c734dad9f..000000000 --- a/apps/mobile/android/app/src/main/res/font/sf_pro.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - diff --git a/apps/mobile/android/settings.gradle b/apps/mobile/android/settings.gradle index 60af56d56..1b19523e2 100644 --- a/apps/mobile/android/settings.gradle +++ b/apps/mobile/android/settings.gradle @@ -3,8 +3,8 @@ apply from: file("../node_modules/@react-native-community/cli-platform-android/n include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') -include ':react-native-splash-screen' -project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android') +// include ':react-native-splash-screen' +// project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android') // include ':isudaji_react-native-install-apk' // project(':isudaji_react-native-install-apk').projectDir = new File(rootProject.projectDir, '../node_modules/@isudaji/react-native-install-apk/android') diff --git a/apps/mobile/src/App.tsx b/apps/mobile/src/App.tsx index f3e7fc971..83e647cf0 100644 --- a/apps/mobile/src/App.tsx +++ b/apps/mobile/src/App.tsx @@ -45,7 +45,7 @@ type AppProps = { rabbitCode: string }; function MainScreen({ rabbitCode }: AppProps) { const { isAppUnlocked } = useInitializeAppOnTop(); - const { couldRender, securityChainOnTop } = useBootstrapApp({ rabbitCode }); + const { securityChainOnTop } = useBootstrapApp({ rabbitCode }); const { binaryTheme } = useAppTheme({ isAppTop: true }); useSetupServiceStub(); @@ -73,7 +73,7 @@ function MainScreen({ rabbitCode }: AppProps) { return ( - {couldRender && } + ); diff --git a/apps/mobile/src/core/bridges/EntryScriptWeb3.ts b/apps/mobile/src/core/bridges/EntryScriptWeb3.ts index dd0166a9a..a58d63c74 100644 --- a/apps/mobile/src/core/bridges/EntryScriptWeb3.ts +++ b/apps/mobile/src/core/bridges/EntryScriptWeb3.ts @@ -1,29 +1,24 @@ import { Platform } from 'react-native'; import RNFS from 'react-native-fs'; -const EntryScriptWeb3 = { - entryScriptWeb3: null as string | null, +class EntryScriptWeb3Cls { + #entryScriptWeb3Promise = null as Promise | null; + // Cache InpageBridgeWeb3 so that it is immediately available async init() { - this.entryScriptWeb3 = + this.#entryScriptWeb3Promise = Platform.OS === 'ios' - ? await RNFS.readFile( - `${RNFS.MainBundlePath}/InpageBridgeWeb3.js`, - 'utf8', - ) - : await RNFS.readFileAssets('custom/InpageBridgeWeb3.js'); - - return this.entryScriptWeb3; - }, - async get() { - // Return from cache - if (this.entryScriptWeb3) { - return this.entryScriptWeb3; - } + ? RNFS.readFile(`${RNFS.MainBundlePath}/InpageBridgeWeb3.js`, 'utf8') + : RNFS.readFileAssets('custom/InpageBridgeWeb3.js'); + return this.#entryScriptWeb3Promise; + } + getPromise() { // If for some reason it is not available, get it again - return await this.init(); - }, -}; + return this.#entryScriptWeb3Promise; + } +} + +const EntryScriptWeb3 = new EntryScriptWeb3Cls(); export default EntryScriptWeb3; diff --git a/apps/mobile/src/core/bridges/builtInScripts/loadVConsole.ts b/apps/mobile/src/core/bridges/builtInScripts/loadVConsole.ts index fcd852baf..70c70659f 100644 --- a/apps/mobile/src/core/bridges/builtInScripts/loadVConsole.ts +++ b/apps/mobile/src/core/bridges/builtInScripts/loadVConsole.ts @@ -33,15 +33,6 @@ export const EntryScriptVConsole = { ].join('\n'); return this.entryScriptVConsole; }, - async get() { - // Return from cache - if (this.entryScriptVConsole) { - return this.entryScriptVConsole; - } - - // If for some reason it is not available, get it again - return await this.init(); - }, }; /** diff --git a/apps/mobile/src/hooks/useBootstrap.ts b/apps/mobile/src/hooks/useBootstrap.ts index 8dbc5a348..3a836228a 100644 --- a/apps/mobile/src/hooks/useBootstrap.ts +++ b/apps/mobile/src/hooks/useBootstrap.ts @@ -112,7 +112,7 @@ export function useJavaScriptBeforeContentLoaded(options?: { const { isTop } = options || {}; React.useEffect(() => { - if (!isTop || entryScripts.inPageWeb3) return; + if (!isTop || EntryScriptWeb3.getPromise()) return; Promise.allSettled([ EntryScriptWeb3.init(), @@ -142,6 +142,7 @@ export function useJavaScriptBeforeContentLoaded(options?: { }, [entryScripts.inPageWeb3, entryScripts.vConsole]); return { + couldRender, entryScriptWeb3Loaded: [ couldRender, !!entryScripts.inPageWeb3, @@ -160,12 +161,6 @@ const hideSplashScreen = () => { splashScreenVisibleRef.current = false; }; -// export function useHideSplash() { -// React.useEffect(() => { -// hideSplashScreen(); -// }, []); -// } - /** * @description only call this hook on the top level component */ @@ -186,25 +181,26 @@ export function useBootstrapApp({ rabbitCode }: { rabbitCode: string }) { const { getTriedUnlock } = useTryUnlockAppWithBuiltinOnTop(); React.useEffect(() => { - Promise.allSettled([ - getTriedUnlock(), - loadSecurityChain({ rabbitCode }), - fetchBiometrics(), - ]) - .then(async ([_unlockResult, _securityChain]) => { + Promise.allSettled([getTriedUnlock()]) + .then(async ([_unlockResult]) => { + console.debug('useBootstrapApp::finish', _unlockResult); setBootstrap({ couldRender: true }); }) .catch(err => { - console.error('useBootstrapApp::', err); + console.error('useBootstrapApp::error', err); setBootstrap({ couldRender: true }); }) .finally(() => { setTimeout(hideSplashScreen, 1000); }); - }, [getTriedUnlock, setBootstrap, fetchBiometrics, rabbitCode]); + }, [getTriedUnlock, setBootstrap]); + + React.useEffect(() => { + fetchBiometrics(); + }, [fetchBiometrics]); return { couldRender, - securityChainOnTop: couldRender ? loadSecurityChain({ rabbitCode }) : null, + securityChainOnTop: loadSecurityChain({ rabbitCode }), }; } diff --git a/apps/mobile/src/hooks/useLock.ts b/apps/mobile/src/hooks/useLock.ts index ec09fdd9f..ef1ef423d 100644 --- a/apps/mobile/src/hooks/useLock.ts +++ b/apps/mobile/src/hooks/useLock.ts @@ -57,7 +57,10 @@ export function usePasswordStatus() { } const tryAutoUnlockPromiseRef = { - current: apisLock.tryAutoUnlockRabbyMobileWithUpdateUnlockTime(), + // current: apisLock.tryAutoUnlockRabbyMobileWithUpdateUnlockTime(), + current: null as ReturnType< + typeof apisLock.tryAutoUnlockRabbyMobileWithUpdateUnlockTime + > | null, }; /** @@ -67,6 +70,10 @@ export function useTryUnlockAppWithBuiltinOnTop() { const { setAppLock } = useAppUnlocked(); const getTriedUnlock = React.useCallback(async () => { + if (!tryAutoUnlockPromiseRef.current) { + tryAutoUnlockPromiseRef.current = + apisLock.tryAutoUnlockRabbyMobileWithUpdateUnlockTime(); + } return tryAutoUnlockPromiseRef.current.then(async result => { setAppLock({ appUnlocked: keyringService.isUnlocked(), diff --git a/yarn.lock b/yarn.lock index 3b0895b89..fd68e9cc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,6 +85,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.25.9": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 + languageName: node + linkType: hard + "@babel/code-frame@npm:~7.10.4": version: 7.10.4 resolution: "@babel/code-frame@npm:7.10.4" @@ -162,6 +173,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.25.9": + version: 7.26.2 + resolution: "@babel/generator@npm:7.26.2" + dependencies: + "@babel/parser": ^7.26.2 + "@babel/types": ^7.26.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^3.0.2 + checksum: 6ff850b7d6082619f8c2f518d993cf7254cfbaa20b026282cbef5c9b2197686d076a432b18e36c4d1a42721c016df4f77a8f62c67600775d9683621d534b91b4 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.15.4, @babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Fhelper-annotate-as-pure%2F-%2Fhelper-annotate-as-pure-7.22.5.tgz" @@ -329,6 +353,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.0.0-beta.49": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" + dependencies: + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.23.3": version: 7.23.3 resolution: "@babel/helper-module-transforms@npm:7.23.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Fhelper-module-transforms%2F-%2Fhelper-module-transforms-7.23.3.tgz" @@ -466,6 +500,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Fhelper-validator-identifier%2F-%2Fhelper-validator-identifier-7.22.20.tgz" @@ -480,6 +521,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Fhelper-validator-option%2F-%2Fhelper-validator-option-7.23.5.tgz" @@ -552,6 +600,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/parser@npm:7.26.2" + dependencies: + "@babel/types": ^7.26.0 + bin: + parser: ./bin/babel-parser.js + checksum: c88b5ea0adf357ef909cdc2c31e284a154943edc59f63f6e8a4c20bf773a1b2f3d8c2205e59c09ca7cdad91e7466300114548876529277a80651b6436a48d5d9 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Fplugin-bugfix-safari-id-destructuring-collision-in-function-expression%2F-%2Fplugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz" @@ -1939,6 +1998,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" + dependencies: + "@babel/code-frame": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.7, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.2": version: 7.23.7 resolution: "@babel/traverse@npm:7.23.7::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Ftraverse%2F-%2Ftraverse-7.23.7.tgz" @@ -1972,6 +2042,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" + dependencies: + "@babel/code-frame": ^7.25.9 + "@babel/generator": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/template": ^7.25.9 + "@babel/types": ^7.25.9 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 901d325662ff1dd9bc51de00862e01055fa6bc374f5297d7e3731f2f0e268bbb1d2141f53fa82860aa308ee44afdcf186a948f16c83153927925804b95a9594d + languageName: node + linkType: hard + "@babel/types@npm:7.19.0": version: 7.19.0 resolution: "@babel/types@npm:7.19.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2F%40babel%2Ftypes%2F-%2Ftypes-7.19.0.tgz" @@ -1994,6 +2079,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" + dependencies: + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d + languageName: node + linkType: hard + "@babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.6": version: 7.25.6 resolution: "@babel/types@npm:7.25.6" @@ -12044,6 +12139,15 @@ __metadata: languageName: node linkType: hard +"babel-plugin-import@npm:^1.13.8": + version: 1.13.8 + resolution: "babel-plugin-import@npm:1.13.8" + dependencies: + "@babel/helper-module-imports": ^7.0.0 + checksum: ae14a1bc7d8f1c8b1095e7c72abeb0ecda4a400d5374aeedf8be373098fe7468880b6bfb8a96177cec38e450b8782459e22b4afc5b3a88cee1a7598ca46c3509 + languageName: node + linkType: hard + "babel-plugin-istanbul@npm:^6.0.0, babel-plugin-istanbul@npm:^6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fbabel-plugin-istanbul%2F-%2Fbabel-plugin-istanbul-6.1.1.tgz" @@ -12093,6 +12197,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-lodash@npm:^3.3.4": + version: 3.3.4 + resolution: "babel-plugin-lodash@npm:3.3.4" + dependencies: + "@babel/helper-module-imports": ^7.0.0-beta.49 + "@babel/types": ^7.0.0-beta.49 + glob: ^7.1.1 + lodash: ^4.17.10 + require-package-name: ^2.0.1 + checksum: 044a4261e689b7058cdcbd4a37e5229797e652534a889a553e7d3cff87cf72283e4a68d3be4c3c305c96214f77f2e09ca376c68c45923aeb0de14514b0fb27d3 + languageName: node + linkType: hard + "babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fbabel-plugin-macros%2F-%2Fbabel-plugin-macros-3.1.0.tgz" @@ -15888,6 +16005,17 @@ __metadata: languageName: node linkType: hard +"ejs@npm:^3.1.5": + version: 3.1.10 + resolution: "ejs@npm:3.1.10" + dependencies: + jake: ^10.8.5 + bin: + ejs: bin/cli.js + checksum: ce90637e9c7538663ae023b8a7a380b2ef7cc4096de70be85abf5a3b9641912dde65353211d05e24d56b1f242d71185c6d00e02cb8860701d571786d92c71f05 + languageName: node + linkType: hard + "ejs@npm:^3.1.6": version: 3.1.9 resolution: "ejs@npm:3.1.9::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fejs%2F-%2Fejs-3.1.9.tgz" @@ -16336,6 +16464,13 @@ __metadata: languageName: node linkType: hard +"escape-html@npm:^1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fescape-html%2F-%2Fescape-html-1.0.3.tgz" @@ -22829,6 +22964,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c + languageName: node + linkType: hard + "jsesc@npm:~0.5.0": version: 0.5.0 resolution: "jsesc@npm:0.5.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fjsesc%2F-%2Fjsesc-0.5.0.tgz" @@ -23658,7 +23802,14 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:4.x, lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:4.17.21, lodash@npm:^4.17.10": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"lodash@npm:4.x, lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Flodash%2F-%2Flodash-4.17.21.tgz" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -25893,6 +26044,16 @@ __metadata: languageName: node linkType: hard +"open@npm:^7.3.1": + version: 7.4.2 + resolution: "open@npm:7.4.2" + dependencies: + is-docker: ^2.0.0 + is-wsl: ^2.1.1 + checksum: 3333900ec0e420d64c23b831bc3467e57031461d843c801f569b2204a1acc3cd7b3ec3c7897afc9dde86491dfa289708eb92bba164093d8bd88fb2c231843c91 + languageName: node + linkType: hard + "open@npm:^7.4.2": version: 7.4.2 resolution: "open@npm:7.4.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fopen%2F-%2Fopen-7.4.2.tgz" @@ -28222,6 +28383,8 @@ __metadata: "@walletconnect/sign-client": latest ahooks: ^3.7.8 babel-jest: ^27.5.1 + babel-plugin-import: ^1.13.8 + babel-plugin-lodash: ^3.3.4 babel-plugin-module-resolver: ^5.0.0 babel-plugin-transform-define: ^2.1.4 babel-plugin-transform-remove-console: ^6.9.4 @@ -28269,6 +28432,7 @@ __metadata: react-native-asset: ^2.1.1 react-native-ble-manager: 8 react-native-ble-plx: 3.1.2 + react-native-bundle-visualizer: ^3.1.3 react-native-cloud-storage: ^1.4.1 react-native-collapsible-tab-view: ^6.2.1 react-native-crypto-js: ^1.0.0 @@ -28744,6 +28908,22 @@ __metadata: languageName: node linkType: hard +"react-native-bundle-visualizer@npm:^3.1.3": + version: 3.1.3 + resolution: "react-native-bundle-visualizer@npm:3.1.3" + dependencies: + chalk: ^4.1.2 + execa: ^5.1.1 + fs-extra: ^10.0.0 + minimist: ^1.2.5 + open: ^8.4.0 + source-map-explorer: ^2.5.3 + bin: + react-native-bundle-visualizer: src/react-native-bundle-visualizer.js + checksum: 571d8d62160fd9abe9547c6772bcdcd9b4270732abb1274d6dc6aa0551c1cb9da7b85b1c2f51519c15937d0b83316c1c01407d6b20cbef324ce7eadfe3b40c7f + languageName: node + linkType: hard + "react-native-cloud-storage@npm:^1.4.1": version: 1.4.1 resolution: "react-native-cloud-storage@npm:1.4.1" @@ -31330,6 +31510,29 @@ __metadata: languageName: node linkType: hard +"source-map-explorer@npm:^2.5.3": + version: 2.5.3 + resolution: "source-map-explorer@npm:2.5.3" + dependencies: + btoa: ^1.2.1 + chalk: ^4.1.0 + convert-source-map: ^1.7.0 + ejs: ^3.1.5 + escape-html: ^1.0.3 + glob: ^7.1.6 + gzip-size: ^6.0.0 + lodash: ^4.17.20 + open: ^7.3.1 + source-map: ^0.7.4 + temp: ^0.9.4 + yargs: ^16.2.0 + bin: + sme: bin/cli.js + source-map-explorer: bin/cli.js + checksum: 1d4e619d7eb224f38a3dadfb20eb34a56cfc29bd237b4815b60257e7fe5ee9f791fda3e0bba91318e0f2beffec5cca573abb8b5030a95f305ce4abee93296065 + languageName: node + linkType: hard + "source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fsource-map-js%2F-%2Fsource-map-js-1.0.2.tgz" @@ -31418,6 +31621,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.7.4": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + languageName: node + linkType: hard + "source-map@npm:^0.8.0-beta.0": version: 0.8.0-beta.0 resolution: "source-map@npm:0.8.0-beta.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fsource-map%2F-%2Fsource-map-0.8.0-beta.0.tgz" @@ -32624,6 +32834,16 @@ __metadata: languageName: node linkType: hard +"temp@npm:^0.9.4": + version: 0.9.4 + resolution: "temp@npm:0.9.4" + dependencies: + mkdirp: ^0.5.1 + rimraf: ~2.6.2 + checksum: 8709d4d63278bd309ca0e49e80a268308dea543a949e71acd427b3314cd9417da9a2cc73425dd9c21c6780334dbffd67e05e7be5aaa73e9affe8479afc6f20e3 + languageName: node + linkType: hard + "tempy@npm:^0.6.0": version: 0.6.0 resolution: "tempy@npm:0.6.0::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Ftempy%2F-%2Ftempy-0.6.0.tgz"