Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ import {
ButtonIcon,
ButtonIconSize,
IconSize,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import { strings } from '../../../../../../../locales/i18n';
import { AvatarSize } from '../../../../../../component-library/components/Avatars/Avatar';
import { useNetworkName } from '../../../../../Views/confirmations/hooks/useNetworkName';
Expand Down
3 changes: 1 addition & 2 deletions app/components/UI/Earn/hooks/useEarnToasts.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ import {
ToastVariants,
} from '../../../../component-library/components/Toast/Toast.types';
import { useAppThemeFromContext } from '../../../../util/theme';
import { Spinner } from '@metamask/design-system-react-native/spinner';
import {
import { Spinner ,
IconSize as ReactNativeDsIconSize,
Text,
TextColor,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,10 @@ jest.mock('../../../../../component-library/components/Icons/Icon', () => ({
IconColor: { Error: 'Error', Warning: 'Warning', Success: 'Success' },
}));

jest.mock('@metamask/design-system-react-native/spinner', () => ({
Spinner: () => null,
}));

jest.mock('@metamask/design-system-react-native', () => ({
IconColor: { PrimaryDefault: 'PrimaryDefault' },
IconSize: { Md: 'Md' },
Spinner: () => null,
}));

jest.mock('../../../../../../locales/i18n', () => ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import {
import {
IconColor as ReactNativeDsIconColor,
IconSize as ReactNativeDsIconSize,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
Comment thread
cursor[bot] marked this conversation as resolved.
import { useStyles } from '../../../../../component-library/hooks';
import Text, {
TextVariant,
Expand Down
3 changes: 1 addition & 2 deletions app/components/UI/Perps/hooks/usePerpsToasts.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import {
IconSize as ReactNativeDsIconSize,
Text,
TextVariant,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import { useNavigation } from '@react-navigation/native';
import {
playNotification,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import {
Box,
IconColor as ReactNativeDsIconColor,
IconSize as ReactNativeDsIconSize,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import {
TransactionMeta,
TransactionStatus,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import {
BoxJustifyContent,
Text,
TextColor,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import { useTailwind } from '@metamask/design-system-twrnc-preset';
import images from 'images/image-icons';
import React, { useCallback, useEffect } from 'react';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import {
Box,
IconColor as ReactNativeDsIconColor,
IconSize as ReactNativeDsIconSize,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import { useNavigation } from '@react-navigation/native';
import { useQueryClient } from '@tanstack/react-query';
import React, { useCallback, useMemo } from 'react';
Expand Down
3 changes: 1 addition & 2 deletions app/components/UI/Ramp/utils/v2OrderToast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import { StyleSheet, View } from 'react-native';
import {
IconColor as ReactNativeDsIconColor,
IconSize as ReactNativeDsIconSize,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import { lightTheme } from '@metamask/design-tokens';
import { strings } from '../../../../../locales/i18n';
import { IconName } from '../../../../component-library/components/Icons/Icon';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import React, { useCallback } from 'react';
import { Pressable, TouchableOpacity } from 'react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
import { useTailwind } from '@metamask/design-system-twrnc-preset';
import {
import { Spinner ,
Box,
Text,
TextVariant,
Expand All @@ -15,6 +13,7 @@ import {
AvatarTokenSize,
IconColor,
} from '@metamask/design-system-react-native';
import { useTailwind } from '@metamask/design-system-twrnc-preset';
import SensitiveText, {
SensitiveTextLength,
} from '../../../../../component-library/components/Texts/SensitiveText';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ import {
Text,
TextColor,
TextVariant,
} from '@metamask/design-system-react-native';
import { Spinner } from '@metamask/design-system-react-native/spinner';
Spinner } from '@metamask/design-system-react-native';
import { useTailwind } from '@metamask/design-system-twrnc-preset';

import PaymentMethodIcon from '../../../../../UI/Ramp/Aggregator/components/PaymentMethodIcon';
Expand Down
48 changes: 48 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,53 @@ const ReactCompilerConfig = {
target: '18',
};

// Hermes (RN's bytecode compiler) does not accept dynamic `import()` syntax —
// even inside dead code branches — and aborts with "Invalid expression
// encountered", producing a `.app` with no JS bundle.
//
// Some shared controllers (e.g. PerpsController) and third-party packages
// (e.g. lilconfig) intentionally use `import(/* webpackIgnore: true */ x)` for
// webpack code splitting. Those constructs only make sense for webpack-based
// builds (extension); on Metro/Hermes they're parser-fatal.
//
// This visitor rewrites every `import(x)` call to
// `Promise.resolve().then(() => require(x))`, mirroring what
// babel-plugin-dynamic-import-node does, so Hermes never sees raw `import()`.
// Inlined to avoid pulling in another dependency.
//
// eslint-disable-next-line import-x/no-commonjs
const dynamicImportToRequire = ({ types: t }) => ({
name: 'transform-dynamic-import-to-require',
visitor: {
Import(path) {
const callExpr = path.parentPath;
if (!callExpr.isCallExpression()) {
return;
}
const arg = callExpr.node.arguments[0];
if (!arg) {
return;
}
const requireCall = t.callExpression(t.identifier('require'), [arg]);
const arrowFn = t.arrowFunctionExpression([], requireCall);
const replacement = t.callExpression(
t.memberExpression(
t.callExpression(
t.memberExpression(
t.identifier('Promise'),
t.identifier('resolve'),
),
[],
),
t.identifier('then'),
),
[arrowFn],
);
callExpr.replaceWith(replacement);
},
},
});

// eslint-disable-next-line import-x/no-commonjs
module.exports = {
ignore: [
Expand Down Expand Up @@ -32,6 +79,7 @@ module.exports = {
},
],
'transform-inline-environment-variables',
dynamicImportToRequire,
[
'module-resolver',
{
Expand Down
Loading