@atlaskit/eslint-plugin-platform 2.7.2 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/cjs/index.js +14 -3
- package/dist/cjs/rules/feature-gating/valid-gate-name/index.js +60 -0
- package/dist/cjs/rules/import/no-barrel-entry-imports/index.js +871 -0
- package/dist/cjs/rules/import/no-barrel-entry-jest-mock/index.js +1384 -0
- package/dist/cjs/rules/import/no-conversation-assistant-barrel-imports/index.js +43 -0
- package/dist/cjs/rules/import/no-jest-mock-barrel-files/index.js +1401 -0
- package/dist/cjs/rules/import/no-relative-barrel-file-imports/index.js +777 -0
- package/dist/cjs/rules/import/shared/barrel-parsing.js +511 -0
- package/dist/cjs/rules/import/shared/file-system.js +186 -0
- package/dist/cjs/rules/import/shared/jest-utils.js +191 -0
- package/dist/cjs/rules/import/shared/package-registry.js +263 -0
- package/dist/cjs/rules/import/shared/package-resolution.js +185 -0
- package/dist/cjs/rules/import/shared/perf.js +89 -0
- package/dist/cjs/rules/import/shared/types.js +67 -0
- package/dist/es2019/index.js +14 -3
- package/dist/es2019/rules/feature-gating/valid-gate-name/index.js +52 -0
- package/dist/es2019/rules/import/no-barrel-entry-imports/index.js +801 -0
- package/dist/es2019/rules/import/no-barrel-entry-jest-mock/index.js +1113 -0
- package/dist/es2019/rules/import/no-conversation-assistant-barrel-imports/index.js +37 -0
- package/dist/es2019/rules/import/no-jest-mock-barrel-files/index.js +1179 -0
- package/dist/es2019/rules/import/no-relative-barrel-file-imports/index.js +738 -0
- package/dist/es2019/rules/import/shared/barrel-parsing.js +433 -0
- package/dist/es2019/rules/import/shared/file-system.js +174 -0
- package/dist/es2019/rules/import/shared/jest-utils.js +159 -0
- package/dist/es2019/rules/import/shared/package-registry.js +240 -0
- package/dist/es2019/rules/import/shared/package-resolution.js +161 -0
- package/dist/es2019/rules/import/shared/perf.js +83 -0
- package/dist/es2019/rules/import/shared/types.js +57 -0
- package/dist/esm/index.js +14 -3
- package/dist/esm/rules/feature-gating/valid-gate-name/index.js +53 -0
- package/dist/esm/rules/import/no-barrel-entry-imports/index.js +864 -0
- package/dist/esm/rules/import/no-barrel-entry-jest-mock/index.js +1375 -0
- package/dist/esm/rules/import/no-conversation-assistant-barrel-imports/index.js +37 -0
- package/dist/esm/rules/import/no-jest-mock-barrel-files/index.js +1391 -0
- package/dist/esm/rules/import/no-relative-barrel-file-imports/index.js +770 -0
- package/dist/esm/rules/import/shared/barrel-parsing.js +500 -0
- package/dist/esm/rules/import/shared/file-system.js +176 -0
- package/dist/esm/rules/import/shared/jest-utils.js +179 -0
- package/dist/esm/rules/import/shared/package-registry.js +256 -0
- package/dist/esm/rules/import/shared/package-resolution.js +175 -0
- package/dist/esm/rules/import/shared/perf.js +80 -0
- package/dist/esm/rules/import/shared/types.js +61 -0
- package/dist/types/index.d.ts +16 -2
- package/dist/types/rules/feature-gating/valid-gate-name/index.d.ts +3 -0
- package/dist/types/rules/import/no-barrel-entry-imports/index.d.ts +9 -0
- package/dist/types/rules/import/no-barrel-entry-jest-mock/index.d.ts +9 -0
- package/dist/types/rules/import/no-conversation-assistant-barrel-imports/index.d.ts +3 -0
- package/dist/types/rules/import/no-jest-mock-barrel-files/index.d.ts +22 -0
- package/dist/types/rules/import/no-relative-barrel-file-imports/index.d.ts +5 -0
- package/dist/types/rules/import/shared/barrel-parsing.d.ts +30 -0
- package/dist/types/rules/import/shared/file-system.d.ts +38 -0
- package/dist/types/rules/import/shared/jest-utils.d.ts +47 -0
- package/dist/types/rules/import/shared/package-registry.d.ts +26 -0
- package/dist/types/rules/import/shared/package-resolution.d.ts +38 -0
- package/dist/types/rules/import/shared/perf.d.ts +13 -0
- package/dist/types/rules/import/shared/types.d.ts +131 -0
- package/dist/types-ts4.5/index.d.ts +16 -2
- package/dist/types-ts4.5/rules/import/no-barrel-entry-imports/index.d.ts +9 -0
- package/dist/types-ts4.5/rules/import/no-barrel-entry-jest-mock/index.d.ts +9 -0
- package/dist/types-ts4.5/rules/import/no-jest-mock-barrel-files/index.d.ts +22 -0
- package/dist/types-ts4.5/rules/import/no-relative-barrel-file-imports/index.d.ts +5 -0
- package/dist/types-ts4.5/rules/import/shared/barrel-parsing.d.ts +30 -0
- package/dist/types-ts4.5/rules/import/shared/file-system.d.ts +38 -0
- package/dist/types-ts4.5/rules/import/shared/jest-utils.d.ts +47 -0
- package/dist/types-ts4.5/rules/import/shared/package-registry.d.ts +26 -0
- package/dist/types-ts4.5/rules/import/shared/package-resolution.d.ts +38 -0
- package/dist/types-ts4.5/rules/import/shared/perf.d.ts +13 -0
- package/dist/types-ts4.5/rules/import/shared/types.d.ts +131 -0
- package/package.json +4 -2
- package/dist/cjs/rules/ensure-native-and-af-exports-synced/index.js +0 -158
- package/dist/es2019/rules/ensure-native-and-af-exports-synced/index.js +0 -146
- package/dist/esm/rules/ensure-native-and-af-exports-synced/index.js +0 -151
- /package/dist/types-ts4.5/rules/{ensure-native-and-af-exports-synced → feature-gating/valid-gate-name}/index.d.ts +0 -0
- /package/dist/{types/rules/ensure-native-and-af-exports-synced → types-ts4.5/rules/import/no-conversation-assistant-barrel-imports}/index.d.ts +0 -0
package/dist/esm/index.js
CHANGED
|
@@ -16,7 +16,6 @@ import ensureNoPrivateDependencies from './rules/ensure-no-private-dependencies'
|
|
|
16
16
|
import expandBorderShorthand from './rules/compiled/expand-border-shorthand';
|
|
17
17
|
import noInvalidStorybookDecoratorUsage from './rules/no-invalid-storybook-decorator-usage';
|
|
18
18
|
import ensurePublishValid from './rules/ensure-publish-valid';
|
|
19
|
-
import ensureNativeAndAfExportsSynced from './rules/ensure-native-and-af-exports-synced';
|
|
20
19
|
import noModuleLevelEval from './rules/feature-gating/no-module-level-eval';
|
|
21
20
|
import noModuleLevelEvalNav4 from './rules/feature-gating/no-module-level-eval-nav4';
|
|
22
21
|
import staticFeatureFlags from './rules/feature-gating/static-feature-flags';
|
|
@@ -26,12 +25,18 @@ import preferFG from './rules/feature-gating/prefer-fg';
|
|
|
26
25
|
import noAlias from './rules/feature-gating/no-alias';
|
|
27
26
|
import useEntrypointsInExamples from './rules/use-entrypoints-in-examples';
|
|
28
27
|
import useRecommendedUtils from './rules/feature-gating/use-recommended-utils';
|
|
28
|
+
import validGateName from './rules/feature-gating/valid-gate-name';
|
|
29
29
|
import expandBackgroundShorthand from './rules/compiled/expand-background-shorthand';
|
|
30
30
|
import expandSpacingShorthand from './rules/compiled/expand-spacing-shorthand';
|
|
31
31
|
import noSparseCheckout from './rules/no-sparse-checkout';
|
|
32
32
|
import noDirectDocumentUsage from './rules/no-direct-document-usage';
|
|
33
33
|
import noSetImmediate from './rules/no-set-immediate';
|
|
34
34
|
import preferCryptoRandomUuid from './rules/prefer-crypto-random-uuid';
|
|
35
|
+
import noBarrelEntryImports from './rules/import/no-barrel-entry-imports';
|
|
36
|
+
import noBarrelEntryJestMock from './rules/import/no-barrel-entry-jest-mock';
|
|
37
|
+
import noJestMockBarrelFiles from './rules/import/no-jest-mock-barrel-files';
|
|
38
|
+
import noRelativeBarrelFileImports from './rules/import/no-relative-barrel-file-imports';
|
|
39
|
+
import noConversationAssistantBarrelImports from './rules/import/no-conversation-assistant-barrel-imports';
|
|
35
40
|
import { join, normalize } from 'node:path';
|
|
36
41
|
import { readFileSync } from 'node:fs';
|
|
37
42
|
var jiraRoot;
|
|
@@ -67,7 +72,6 @@ var rules = {
|
|
|
67
72
|
'no-pre-post-install-scripts': noPreAndPostInstallScripts,
|
|
68
73
|
'no-invalid-storybook-decorator-usage': noInvalidStorybookDecoratorUsage,
|
|
69
74
|
'ensure-publish-valid': ensurePublishValid,
|
|
70
|
-
'ensure-native-and-af-exports-synced': ensureNativeAndAfExportsSynced,
|
|
71
75
|
'no-module-level-eval': noModuleLevelEval,
|
|
72
76
|
'no-module-level-eval-nav4': noModuleLevelEvalNav4,
|
|
73
77
|
'static-feature-flags': staticFeatureFlags,
|
|
@@ -77,10 +81,16 @@ var rules = {
|
|
|
77
81
|
'no-alias': noAlias,
|
|
78
82
|
'use-entrypoints-in-examples': useEntrypointsInExamples,
|
|
79
83
|
'use-recommended-utils': useRecommendedUtils,
|
|
84
|
+
'valid-gate-name': validGateName,
|
|
80
85
|
'no-sparse-checkout': noSparseCheckout,
|
|
81
86
|
'no-direct-document-usage': noDirectDocumentUsage,
|
|
82
87
|
'no-set-immediate': noSetImmediate,
|
|
83
|
-
'prefer-crypto-random-uuid': preferCryptoRandomUuid
|
|
88
|
+
'prefer-crypto-random-uuid': preferCryptoRandomUuid,
|
|
89
|
+
'no-barrel-entry-imports': noBarrelEntryImports,
|
|
90
|
+
'no-barrel-entry-jest-mock': noBarrelEntryJestMock,
|
|
91
|
+
'no-jest-mock-barrel-files': noJestMockBarrelFiles,
|
|
92
|
+
'no-relative-barrel-file-imports': noRelativeBarrelFileImports,
|
|
93
|
+
'no-conversation-assistant-barrel-imports': noConversationAssistantBarrelImports
|
|
84
94
|
};
|
|
85
95
|
var commonConfig = {
|
|
86
96
|
'@atlaskit/platform/ensure-test-runner-arguments': 'error',
|
|
@@ -110,6 +120,7 @@ var recommendedRules = _objectSpread(_objectSpread({}, commonConfig), {}, {
|
|
|
110
120
|
'@atlaskit/platform/inline-usage': 'error',
|
|
111
121
|
'@atlaskit/platform/prefer-fg': 'error',
|
|
112
122
|
'@atlaskit/platform/no-alias': 'error',
|
|
123
|
+
'@atlaskit/platform/valid-gate-name': 'error',
|
|
113
124
|
// end: feature-gating rules
|
|
114
125
|
'@atlaskit/platform/ensure-feature-flag-registration': 'error'
|
|
115
126
|
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import { FEATURE_API_IMPORT_SOURCES } from '../../constants';
|
|
3
|
+
import { isIdentifierImportedFrom } from '../utils';
|
|
4
|
+
var IMPORT_SOURCES = new Set([].concat(_toConsumableArray(FEATURE_API_IMPORT_SOURCES), ['@atlassian/jira-feature-flagging-utils', '@atlassian/jira-feature-gate-component']));
|
|
5
|
+
var FUNCTION_NAMES = new Set(['ff', 'fg', 'getFeatureFlagValue', 'componentWithFF', 'componentWithFG', 'passGate', 'withGate', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp', 'mockExp', 'withExp', 'wasExperimentManuallyExposed']);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Valid gate names must only contain lowercase letters (a-z), numbers (0-9),
|
|
9
|
+
* underscores (_), hyphens (-), and dots (.).
|
|
10
|
+
* No spaces, capital letters, or other characters are allowed.
|
|
11
|
+
*/
|
|
12
|
+
var VALID_GATE_NAME_PATTERN = /^[a-z0-9_.-]+$/;
|
|
13
|
+
function isValidGateName(name) {
|
|
14
|
+
return VALID_GATE_NAME_PATTERN.test(name);
|
|
15
|
+
}
|
|
16
|
+
var rule = {
|
|
17
|
+
meta: {
|
|
18
|
+
type: 'problem',
|
|
19
|
+
docs: {
|
|
20
|
+
description: 'Ensure feature gate names contain only lowercase letters, numbers, underscores, and hyphens'
|
|
21
|
+
},
|
|
22
|
+
messages: {
|
|
23
|
+
invalidGateName: 'Feature gate name "{{name}}" is invalid. Gate names must contain only lowercase letters (a-z), numbers (0-9), underscores (_), hyphens (-), and dots (.).'
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
create: function create(context) {
|
|
27
|
+
return {
|
|
28
|
+
'CallExpression[callee.type="Identifier"][arguments.length>0][arguments.0.type="Literal"]': function CallExpressionCalleeTypeIdentifierArgumentsLength0Arguments0TypeLiteral(node) {
|
|
29
|
+
if (node.type !== 'CallExpression') {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (node.callee.type === 'Identifier' && (!FUNCTION_NAMES.has(node.callee.name) || !isIdentifierImportedFrom(node.callee.name, IMPORT_SOURCES, context, node))) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
var nameArgument = node.arguments[0];
|
|
36
|
+
if (nameArgument.type !== 'Literal' || typeof nameArgument.value !== 'string') {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
var gateName = nameArgument.value;
|
|
40
|
+
if (!isValidGateName(gateName)) {
|
|
41
|
+
context.report({
|
|
42
|
+
node: nameArgument,
|
|
43
|
+
messageId: 'invalidGateName',
|
|
44
|
+
data: {
|
|
45
|
+
name: gateName
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
export default rule;
|