Skip to content

Commit 6f446da

Browse files
incorporate new eslint rules to forbid namespace imports
1 parent 7b7876e commit 6f446da

File tree

10 files changed

+542
-417
lines changed

10 files changed

+542
-417
lines changed

.eslintrc.changed.js

+27
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ module.exports = {
77
rules: {
88
'deprecation/deprecation': 'error',
99
'rulesdir/no-default-id-values': 'error',
10+
'no-restricted-syntax': [
11+
'error',
12+
{
13+
selector: 'ImportNamespaceSpecifier[parent.source.value=/^@libs/]',
14+
message: 'Namespace imports from @libs are not allowed. Use named imports instead. Example: import { method } from "@libs/module"',
15+
},
16+
{
17+
selector: 'ImportNamespaceSpecifier[parent.source.value=/^@userActions/]',
18+
message: 'Namespace imports from @userActions are not allowed. Use named imports instead. Example: import { action } from "@userActions/module"',
19+
},
20+
],
1021
},
1122
overrides: [
1223
{
@@ -24,5 +35,21 @@ module.exports = {
2435
'rulesdir/no-default-id-values': 'off',
2536
},
2637
},
38+
{
39+
files: ['**/libs/**/*.{ts,tsx}'],
40+
rules: {
41+
'no-restricted-syntax': [
42+
'error',
43+
{
44+
selector: 'ImportNamespaceSpecifier[parent.source.value=/^\\.\\./]',
45+
message: 'Namespace imports are not allowed. Use named imports instead. Example: import { method } from "../libs/module"',
46+
},
47+
{
48+
selector: 'ImportNamespaceSpecifier[parent.source.value=/^\\./]',
49+
message: 'Namespace imports are not allowed. Use named imports instead. Example: import { method } from "./libs/module"',
50+
},
51+
],
52+
},
53+
},
2754
],
2855
};

src/components/ReportActionItem/ReportPreview.tsx

+111-68
Large diffs are not rendered by default.

src/libs/PolicyUtils.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ import {isEmptyObject} from '@src/types/utils/EmptyObject';
3636
import {hasSynchronizationErrorMessage} from './actions/connections';
3737
import {getCurrentUserAccountID} from './actions/Report';
3838
import {getCategoryApproverRule} from './CategoryUtils';
39-
import * as Localize from './Localize';
39+
import {translateLocal} from './Localize';
4040
import Navigation from './Navigation/Navigation';
41-
import * as NetworkStore from './Network/NetworkStore';
41+
import {isOffline as isOfflineNetworkStore} from './Network/NetworkStore';
4242
import {getAccountIDsByLogins, getLoginsByAccountIDs, getPersonalDetailByEmail} from './PersonalDetailsUtils';
4343
import {getAllSortedTransactions, getCategory, getTag} from './TransactionUtils';
4444

@@ -668,7 +668,7 @@ function getPolicy(policyID: string | undefined, policies: OnyxCollection<Policy
668668
/** Return active policies where current user is an admin */
669669
function getActiveAdminWorkspaces(policies: OnyxCollection<Policy> | null, currentUserLogin: string | undefined): Policy[] {
670670
const activePolicies = getActivePolicies(policies, currentUserLogin);
671-
return activePolicies.filter((policy) => shouldShowPolicy(policy, NetworkStore.isOffline(), currentUserLogin) && isPolicyAdmin(policy, currentUserLogin));
671+
return activePolicies.filter((policy) => shouldShowPolicy(policy, isOfflineNetworkStore(), currentUserLogin) && isPolicyAdmin(policy, currentUserLogin));
672672
}
673673

674674
/** Whether the user can send invoice from the workspace */
@@ -888,7 +888,7 @@ function getNetSuiteApprovalAccountOptions(policy: Policy | undefined, selectedB
888888
const payableAccounts = policy?.connections?.netsuite.options.data.payableList;
889889
const defaultApprovalAccount: NetSuiteAccount = {
890890
id: CONST.NETSUITE_APPROVAL_ACCOUNT_DEFAULT,
891-
name: Localize.translateLocal('workspace.netsuite.advancedConfig.defaultApprovalAccount'),
891+
name: translateLocal('workspace.netsuite.advancedConfig.defaultApprovalAccount'),
892892
type: CONST.NETSUITE_ACCOUNT_TYPE.ACCOUNTS_PAYABLE,
893893
};
894894
const accountOptions = getFilteredApprovalAccountOptions([defaultApprovalAccount].concat(payableAccounts ?? []));
@@ -1161,11 +1161,11 @@ function getActivePolicy(): OnyxEntry<Policy> {
11611161
function getUserFriendlyWorkspaceType(workspaceType: ValueOf<typeof CONST.POLICY.TYPE>) {
11621162
switch (workspaceType) {
11631163
case CONST.POLICY.TYPE.CORPORATE:
1164-
return Localize.translateLocal('workspace.type.control');
1164+
return translateLocal('workspace.type.control');
11651165
case CONST.POLICY.TYPE.TEAM:
1166-
return Localize.translateLocal('workspace.type.collect');
1166+
return translateLocal('workspace.type.collect');
11671167
default:
1168-
return Localize.translateLocal('workspace.type.free');
1168+
return translateLocal('workspace.type.free');
11691169
}
11701170
}
11711171

0 commit comments

Comments
 (0)