@atlaskit/eslint-plugin-platform 2.7.0 → 2.7.2

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.
Files changed (158) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/index.js +4 -9
  3. package/dist/cjs/rules/constants.js +1 -1
  4. package/dist/cjs/rules/ensure-critical-dependency-resolutions/index.js +7 -7
  5. package/dist/cjs/rules/ensure-native-and-af-exports-synced/index.js +3 -0
  6. package/dist/cjs/rules/ensure-no-private-dependencies/index.js +48 -66
  7. package/dist/cjs/rules/feature-gating/inline-usage/index.js +14 -3
  8. package/dist/cjs/rules/feature-gating/no-alias/index.js +2 -2
  9. package/dist/cjs/rules/feature-gating/no-module-level-eval/index.js +1 -1
  10. package/dist/cjs/rules/feature-gating/no-module-level-eval-nav4/index.js +1 -1
  11. package/dist/cjs/rules/feature-gating/no-preconditioning/index.js +4 -1
  12. package/dist/cjs/rules/feature-gating/prefer-fg/index.js +1 -1
  13. package/dist/cjs/rules/feature-gating/static-feature-flags/index.js +2 -2
  14. package/dist/cjs/rules/feature-gating/use-recommended-utils/index.js +1 -1
  15. package/dist/cjs/rules/no-invalid-storybook-decorator-usage/index.js +1 -1
  16. package/dist/cjs/rules/no-sparse-checkout/index.js +1 -1
  17. package/dist/cjs/rules/prefer-crypto-random-uuid/index.js +87 -0
  18. package/dist/cjs/rules/use-entrypoints-in-examples/index.js +1 -1
  19. package/dist/cjs/rules/util/context-compat.js +4 -2
  20. package/dist/es2019/index.js +4 -9
  21. package/dist/es2019/rules/constants.js +1 -1
  22. package/dist/es2019/rules/ensure-critical-dependency-resolutions/index.js +7 -7
  23. package/dist/es2019/rules/ensure-native-and-af-exports-synced/index.js +3 -0
  24. package/dist/es2019/rules/ensure-no-private-dependencies/index.js +10 -9
  25. package/dist/es2019/rules/feature-gating/inline-usage/index.js +14 -3
  26. package/dist/es2019/rules/feature-gating/no-alias/index.js +2 -2
  27. package/dist/es2019/rules/feature-gating/no-module-level-eval/index.js +1 -1
  28. package/dist/es2019/rules/feature-gating/no-module-level-eval-nav4/index.js +1 -1
  29. package/dist/es2019/rules/feature-gating/no-preconditioning/index.js +4 -1
  30. package/dist/es2019/rules/feature-gating/prefer-fg/index.js +1 -1
  31. package/dist/es2019/rules/feature-gating/static-feature-flags/index.js +2 -2
  32. package/dist/es2019/rules/feature-gating/use-recommended-utils/index.js +1 -1
  33. package/dist/es2019/rules/no-invalid-storybook-decorator-usage/index.js +1 -1
  34. package/dist/es2019/rules/no-sparse-checkout/index.js +1 -1
  35. package/dist/es2019/rules/prefer-crypto-random-uuid/index.js +81 -0
  36. package/dist/es2019/rules/use-entrypoints-in-examples/index.js +1 -1
  37. package/dist/es2019/rules/util/context-compat.js +4 -2
  38. package/dist/esm/index.js +4 -9
  39. package/dist/esm/rules/constants.js +1 -1
  40. package/dist/esm/rules/ensure-critical-dependency-resolutions/index.js +7 -7
  41. package/dist/esm/rules/ensure-native-and-af-exports-synced/index.js +3 -0
  42. package/dist/esm/rules/ensure-no-private-dependencies/index.js +48 -65
  43. package/dist/esm/rules/feature-gating/inline-usage/index.js +14 -3
  44. package/dist/esm/rules/feature-gating/no-alias/index.js +2 -2
  45. package/dist/esm/rules/feature-gating/no-module-level-eval/index.js +1 -1
  46. package/dist/esm/rules/feature-gating/no-module-level-eval-nav4/index.js +1 -1
  47. package/dist/esm/rules/feature-gating/no-preconditioning/index.js +4 -1
  48. package/dist/esm/rules/feature-gating/prefer-fg/index.js +1 -1
  49. package/dist/esm/rules/feature-gating/static-feature-flags/index.js +2 -2
  50. package/dist/esm/rules/feature-gating/use-recommended-utils/index.js +1 -1
  51. package/dist/esm/rules/no-invalid-storybook-decorator-usage/index.js +1 -1
  52. package/dist/esm/rules/no-sparse-checkout/index.js +1 -1
  53. package/dist/esm/rules/prefer-crypto-random-uuid/index.js +81 -0
  54. package/dist/esm/rules/use-entrypoints-in-examples/index.js +1 -1
  55. package/dist/esm/rules/util/context-compat.js +4 -2
  56. package/dist/types/index.d.ts +6 -20
  57. package/dist/types/rules/util/handle-ast-object.d.ts +1 -1
  58. package/dist/types-ts4.5/index.d.ts +6 -32
  59. package/dist/types-ts4.5/rules/util/handle-ast-object.d.ts +1 -1
  60. package/package.json +2 -5
  61. package/afm-cc/tsconfig.json +0 -24
  62. package/afm-jira/tsconfig.json +0 -24
  63. package/build/tsconfig.json +0 -17
  64. package/dist/cjs/rules/ensure-feature-flag-prefix/index.js +0 -75
  65. package/dist/cjs/rules/ensure-valid-platform-yarn-protocol-usage/index.js +0 -79
  66. package/dist/es2019/rules/ensure-feature-flag-prefix/index.js +0 -65
  67. package/dist/es2019/rules/ensure-valid-platform-yarn-protocol-usage/index.js +0 -62
  68. package/dist/esm/rules/ensure-feature-flag-prefix/index.js +0 -69
  69. package/dist/esm/rules/ensure-valid-platform-yarn-protocol-usage/index.js +0 -75
  70. package/dist/types/rules/ensure-feature-flag-prefix/index.d.ts +0 -3
  71. package/dist/types/rules/ensure-valid-platform-yarn-protocol-usage/index.d.ts +0 -3
  72. package/src/__tests__/utils/_tester.tsx +0 -26
  73. package/src/index.tsx +0 -254
  74. package/src/rules/compiled/README.md +0 -3
  75. package/src/rules/compiled/expand-background-shorthand/README.md +0 -23
  76. package/src/rules/compiled/expand-background-shorthand/__tests__/rule.test.ts +0 -160
  77. package/src/rules/compiled/expand-background-shorthand/index.tsx +0 -43
  78. package/src/rules/compiled/expand-border-shorthand/README.md +0 -51
  79. package/src/rules/compiled/expand-border-shorthand/__tests__/rule.test.ts +0 -211
  80. package/src/rules/compiled/expand-border-shorthand/index.ts +0 -103
  81. package/src/rules/compiled/expand-spacing-shorthand/README.md +0 -38
  82. package/src/rules/compiled/expand-spacing-shorthand/__tests__/rule.test.ts +0 -448
  83. package/src/rules/compiled/expand-spacing-shorthand/index.ts +0 -240
  84. package/src/rules/constants.tsx +0 -20
  85. package/src/rules/ensure-atlassian-team/__tests__/unit/rule.test.ts +0 -24
  86. package/src/rules/ensure-atlassian-team/index.ts +0 -51
  87. package/src/rules/ensure-critical-dependency-resolutions/__test__/unit/rule.test.tsx +0 -200
  88. package/src/rules/ensure-critical-dependency-resolutions/index.tsx +0 -172
  89. package/src/rules/ensure-feature-flag-prefix/__tests__/unit/rule.test.tsx +0 -65
  90. package/src/rules/ensure-feature-flag-prefix/index.tsx +0 -81
  91. package/src/rules/ensure-feature-flag-registration/__tests__/unit/rule.test.tsx +0 -115
  92. package/src/rules/ensure-feature-flag-registration/index.tsx +0 -106
  93. package/src/rules/ensure-native-and-af-exports-synced/__tests__/unit/rule.test.tsx +0 -199
  94. package/src/rules/ensure-native-and-af-exports-synced/index.tsx +0 -188
  95. package/src/rules/ensure-no-private-dependencies/__tests__/unit/rule.test.ts +0 -212
  96. package/src/rules/ensure-no-private-dependencies/index.ts +0 -64
  97. package/src/rules/ensure-publish-valid/__tests__/unit/rule.test.ts +0 -39
  98. package/src/rules/ensure-publish-valid/index.ts +0 -81
  99. package/src/rules/ensure-test-runner-arguments/__tests__/unit/rule.test.tsx +0 -298
  100. package/src/rules/ensure-test-runner-arguments/index.tsx +0 -121
  101. package/src/rules/ensure-test-runner-nested-count/__tests__/unit/rule.test.tsx +0 -308
  102. package/src/rules/ensure-test-runner-nested-count/index.tsx +0 -82
  103. package/src/rules/ensure-valid-bin-values/__tests__/unit/rule.test.ts +0 -159
  104. package/src/rules/ensure-valid-bin-values/index.ts +0 -70
  105. package/src/rules/ensure-valid-platform-yarn-protocol-usage/__tests__/unit/rule.test.ts +0 -147
  106. package/src/rules/ensure-valid-platform-yarn-protocol-usage/index.ts +0 -67
  107. package/src/rules/feature-gating/README.md +0 -8
  108. package/src/rules/feature-gating/inline-usage/README.md +0 -53
  109. package/src/rules/feature-gating/inline-usage/__tests__/rule.test.tsx +0 -106
  110. package/src/rules/feature-gating/inline-usage/index.tsx +0 -135
  111. package/src/rules/feature-gating/no-alias/README.md +0 -29
  112. package/src/rules/feature-gating/no-alias/__tests__/rule.test.tsx +0 -76
  113. package/src/rules/feature-gating/no-alias/index.tsx +0 -80
  114. package/src/rules/feature-gating/no-module-level-eval/README.md +0 -53
  115. package/src/rules/feature-gating/no-module-level-eval/__tests__/test.tsx +0 -133
  116. package/src/rules/feature-gating/no-module-level-eval/index.tsx +0 -54
  117. package/src/rules/feature-gating/no-module-level-eval-nav4/README.md +0 -8
  118. package/src/rules/feature-gating/no-module-level-eval-nav4/__tests__/test.tsx +0 -130
  119. package/src/rules/feature-gating/no-module-level-eval-nav4/index.tsx +0 -73
  120. package/src/rules/feature-gating/no-preconditioning/README.md +0 -69
  121. package/src/rules/feature-gating/no-preconditioning/__tests__/rule.test.tsx +0 -164
  122. package/src/rules/feature-gating/no-preconditioning/index.tsx +0 -138
  123. package/src/rules/feature-gating/prefer-fg/README.md +0 -3
  124. package/src/rules/feature-gating/prefer-fg/__tests__/rule.test.tsx +0 -83
  125. package/src/rules/feature-gating/prefer-fg/index.tsx +0 -110
  126. package/src/rules/feature-gating/static-feature-flags/README.md +0 -3
  127. package/src/rules/feature-gating/static-feature-flags/__tests__/test.tsx +0 -135
  128. package/src/rules/feature-gating/static-feature-flags/index.tsx +0 -103
  129. package/src/rules/feature-gating/use-recommended-utils/README.md +0 -67
  130. package/src/rules/feature-gating/use-recommended-utils/__tests__/rule.test.tsx +0 -78
  131. package/src/rules/feature-gating/use-recommended-utils/index.tsx +0 -57
  132. package/src/rules/feature-gating/utils.tsx +0 -48
  133. package/src/rules/no-direct-document-usage/index.tsx +0 -111
  134. package/src/rules/no-duplicate-dependencies/__tests__/unit/rule.test.ts +0 -116
  135. package/src/rules/no-duplicate-dependencies/index.ts +0 -79
  136. package/src/rules/no-invalid-feature-flag-usage/__tests__/unit/rule.test.tsx +0 -69
  137. package/src/rules/no-invalid-feature-flag-usage/index.tsx +0 -128
  138. package/src/rules/no-invalid-storybook-decorator-usage/__tests__/unit/rule.test.tsx +0 -18
  139. package/src/rules/no-invalid-storybook-decorator-usage/index.tsx +0 -39
  140. package/src/rules/no-pre-post-installs/__tests__/unit/rule.test.ts +0 -41
  141. package/src/rules/no-pre-post-installs/index.ts +0 -35
  142. package/src/rules/no-set-immediate/index.tsx +0 -43
  143. package/src/rules/no-sparse-checkout/__tests__/unit/rule.test.tsx +0 -48
  144. package/src/rules/no-sparse-checkout/index.tsx +0 -54
  145. package/src/rules/use-entrypoints-in-examples/README.md +0 -27
  146. package/src/rules/use-entrypoints-in-examples/__tests__/rule.test.tsx +0 -34
  147. package/src/rules/use-entrypoints-in-examples/index.tsx +0 -43
  148. package/src/rules/util/__tests__/context-compat.test.ts +0 -122
  149. package/src/rules/util/compiled-utils.ts +0 -27
  150. package/src/rules/util/context-compat.ts +0 -41
  151. package/src/rules/util/file-exclusions.ts +0 -39
  152. package/src/rules/util/handle-ast-object.ts +0 -33
  153. package/src/rules/util/registration-utils.ts +0 -59
  154. package/tsconfig.app.json +0 -43
  155. package/tsconfig.dev.json +0 -40
  156. package/tsconfig.json +0 -23
  157. /package/dist/{types-ts4.5/rules/ensure-valid-platform-yarn-protocol-usage → types/rules/prefer-crypto-random-uuid}/index.d.ts +0 -0
  158. /package/dist/types-ts4.5/rules/{ensure-feature-flag-prefix → prefer-crypto-random-uuid}/index.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/eslint-plugin-platform
2
2
 
3
+ ## 2.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e64156876a79c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e64156876a79c) -
8
+ Update documentation from Stash to Bitbucket
9
+
10
+ ## 2.7.1
11
+
12
+ ### Patch Changes
13
+
14
+ - [`098cfbb01dc36`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/098cfbb01dc36) -
15
+ Add missing npmignore files to remove unnecessary files from published package
16
+
3
17
  ## 2.7.0
4
18
 
5
19
  ### Minor Changes
package/dist/cjs/index.js CHANGED
@@ -14,9 +14,7 @@ var _ensureTestRunnerNestedCount = _interopRequireDefault(require("./rules/ensur
14
14
  var _ensureAtlassianTeam = _interopRequireDefault(require("./rules/ensure-atlassian-team"));
15
15
  var _noDuplicateDependencies = _interopRequireDefault(require("./rules/no-duplicate-dependencies"));
16
16
  var _noInvalidFeatureFlagUsage = _interopRequireDefault(require("./rules/no-invalid-feature-flag-usage"));
17
- var _ensureFeatureFlagPrefix = _interopRequireDefault(require("./rules/ensure-feature-flag-prefix"));
18
17
  var _ensureCriticalDependencyResolutions = _interopRequireDefault(require("./rules/ensure-critical-dependency-resolutions"));
19
- var _ensureValidPlatformYarnProtocolUsage = _interopRequireDefault(require("./rules/ensure-valid-platform-yarn-protocol-usage"));
20
18
  var _ensureValidBinValues = _interopRequireDefault(require("./rules/ensure-valid-bin-values"));
21
19
  var _ensureNoPrivateDependencies = _interopRequireDefault(require("./rules/ensure-no-private-dependencies"));
22
20
  var _expandBorderShorthand = _interopRequireDefault(require("./rules/compiled/expand-border-shorthand"));
@@ -37,6 +35,7 @@ var _expandSpacingShorthand = _interopRequireDefault(require("./rules/compiled/e
37
35
  var _noSparseCheckout = _interopRequireDefault(require("./rules/no-sparse-checkout"));
38
36
  var _noDirectDocumentUsage = _interopRequireDefault(require("./rules/no-direct-document-usage"));
39
37
  var _noSetImmediate = _interopRequireDefault(require("./rules/no-set-immediate"));
38
+ var _preferCryptoRandomUuid = _interopRequireDefault(require("./rules/prefer-crypto-random-uuid"));
40
39
  var _nodePath = require("node:path");
41
40
  var _nodeFs = require("node:fs");
42
41
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -60,12 +59,10 @@ try {
60
59
  var packageJson = require('@atlaskit/eslint-plugin-platform/package.json');
61
60
  var rules = exports.rules = {
62
61
  'ensure-feature-flag-registration': _ensureFeatureFlagRegistration.default,
63
- 'ensure-feature-flag-prefix': _ensureFeatureFlagPrefix.default,
64
62
  'ensure-test-runner-arguments': _ensureTestRunnerArguments.default,
65
63
  'ensure-test-runner-nested-count': _ensureTestRunnerNestedCount.default,
66
64
  'ensure-atlassian-team': _ensureAtlassianTeam.default,
67
65
  'ensure-critical-dependency-resolutions': _ensureCriticalDependencyResolutions.default,
68
- 'ensure-valid-platform-yarn-protocol-usage': _ensureValidPlatformYarnProtocolUsage.default,
69
66
  'ensure-valid-bin-values': _ensureValidBinValues.default,
70
67
  'ensure-no-private-dependencies': _ensureNoPrivateDependencies.default,
71
68
  'expand-border-shorthand': _expandBorderShorthand.default,
@@ -88,7 +85,8 @@ var rules = exports.rules = {
88
85
  'use-recommended-utils': _useRecommendedUtils.default,
89
86
  'no-sparse-checkout': _noSparseCheckout.default,
90
87
  'no-direct-document-usage': _noDirectDocumentUsage.default,
91
- 'no-set-immediate': _noSetImmediate.default
88
+ 'no-set-immediate': _noSetImmediate.default,
89
+ 'prefer-crypto-random-uuid': _preferCryptoRandomUuid.default
92
90
  };
93
91
  var commonConfig = {
94
92
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
@@ -119,10 +117,7 @@ var recommendedRules = _objectSpread(_objectSpread({}, commonConfig), {}, {
119
117
  '@atlaskit/platform/prefer-fg': 'error',
120
118
  '@atlaskit/platform/no-alias': 'error',
121
119
  // end: feature-gating rules
122
- '@atlaskit/platform/ensure-feature-flag-registration': 'error',
123
- '@atlaskit/platform/ensure-feature-flag-prefix': ['warn', {
124
- allowedPrefixes: ['platform.', 'platform_']
125
- }]
120
+ '@atlaskit/platform/ensure-feature-flag-registration': 'error'
126
121
  });
127
122
  var jiraRules = commonConfig;
128
123
  var jsonPrefix = '/* eslint-disable quote-props, comma-dangle, quotes, semi, eol-last, @typescript-eslint/semi, no-template-curly-in-string */ module.exports = ';
@@ -6,6 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.FEATURE_UTILS_IMPORT_SOURCES = exports.FEATURE_MOCKS_IMPORT_SOURCES = exports.FEATURE_API_IMPORT_SOURCES = void 0;
7
7
  // List of libraries that we maintain or have worked on
8
8
  // - eg `@atlaskit/feature-gate-js-client` shouldn't be included in here
9
- var FEATURE_API_IMPORT_SOURCES = exports.FEATURE_API_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging', '@atlassian/jira-feature-flagging-using-meta', '@atlassian/jira-feature-gating', '@atlassian/jira-feature-experiments', '@atlaskit/platform-feature-flags']);
9
+ var FEATURE_API_IMPORT_SOURCES = exports.FEATURE_API_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging', '@atlassian/jira-feature-flagging-using-meta', '@atlassian/jira-feature-gating', '@atlassian/jira-feature-experiments', '@atlaskit/platform-feature-flags', '@atlassian/repo-feature-flags-statsig']);
10
10
  var FEATURE_MOCKS_IMPORT_SOURCES = exports.FEATURE_MOCKS_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging-mocks', '@atlassian/jira-feature-gates-test-mocks', '@atlassian/jira-feature-gates-storybook-mocks']);
11
11
  var FEATURE_UTILS_IMPORT_SOURCES = exports.FEATURE_UTILS_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging-utils', '@atlassian/jira-feature-gate-component']);
@@ -14,13 +14,13 @@ var _handleAstObject = require("../util/handle-ast-object");
14
14
  // In matchMinorVersion, we will check if the versions in resolutions fall in the right ranges.
15
15
  //
16
16
  var DESIRED_PKG_VERSIONS = {
17
- typescript: ['5.4'],
18
- tslib: ['2.6'],
19
- '@types/react': ['16.14', '18.2'],
20
- 'react-relay': ['npm:atl-react-relay@0.0.0-main-5980a913'],
21
- 'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-5980a913'],
22
- 'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-5980a913'],
23
- 'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-5980a913']
17
+ typescript: ['5.4', '5.9'],
18
+ tslib: ['2.6', '2.8'],
19
+ '@types/react': ['16.14', '18.2', '18.3'],
20
+ 'react-relay': ['npm:atl-react-relay@0.0.0-main-39e79f66'],
21
+ 'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-39e79f66'],
22
+ 'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-39e79f66'],
23
+ 'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-39e79f66']
24
24
  };
25
25
  var matchMinorVersion = function matchMinorVersion(desiredVersion, versionInResolutions) {
26
26
  var firstChar = versionInResolutions[0];
@@ -21,6 +21,9 @@ var exportsValidationExceptions = {
21
21
  },
22
22
  '@atlaskit/storybook-addon-design-system': {
23
23
  ignoredAfExportKeys: ['.']
24
+ },
25
+ '@atlassian/react-async': {
26
+ ignoredAfExportKeys: ['./mock']
24
27
  }
25
28
  };
26
29
  var rule = {
@@ -1,23 +1,18 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.default = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
7
  var _handleAstObject = require("../util/handle-ast-object");
11
8
  var _getPackages = require("@manypkg/get-packages");
12
9
  var _findRoot = require("@manypkg/find-root");
13
10
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
14
11
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
15
12
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // eslint-disable-next-line import/no-extraneous-dependencies
16
- var root = (0, _findRoot.findRootSync)(process.cwd());
17
- var pkgs = (0, _getPackages.getPackagesSync)(root).packages;
18
- var pkgMap = new Map(pkgs.map(function (pkg) {
19
- return [pkg.packageJson.name, pkg];
20
- }));
13
+ var root;
14
+ var pkgs;
15
+ var pkgMap;
21
16
  var rule = {
22
17
  meta: {
23
18
  type: 'problem',
@@ -31,70 +26,57 @@ var rule = {
31
26
  }
32
27
  },
33
28
  create: function create(context) {
29
+ if (!context.filename.endsWith('package.json')) {
30
+ return {};
31
+ }
32
+ root !== null && root !== void 0 ? root : root = (0, _findRoot.findRootSync)(process.cwd());
33
+ pkgs !== null && pkgs !== void 0 ? pkgs : pkgs = (0, _getPackages.getPackagesSync)(root).packages;
34
+ pkgMap !== null && pkgMap !== void 0 ? pkgMap : pkgMap = new Map(pkgs.map(function (pkg) {
35
+ return [pkg.packageJson.name, pkg];
36
+ }));
34
37
  return {
35
- ObjectExpression: function () {
36
- var _ObjectExpression = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(node) {
37
- var isPrivatePkg, dependencies, peerDependencies, _i, _arr, obj, _iterator, _step, p, key, _pkgMap$get, isPrivateDependency;
38
- return _regenerator.default.wrap(function _callee$(_context) {
39
- while (1) switch (_context.prev = _context.next) {
40
- case 0:
41
- if (!(!context.filename.endsWith('package.json') || node.type !== 'ObjectExpression')) {
42
- _context.next = 2;
43
- break;
44
- }
45
- return _context.abrupt("return");
46
- case 2:
47
- // Private dependencies can be used in private packages
48
- isPrivatePkg = (0, _handleAstObject.getObjectPropertyAsLiteral)(node, 'private') === true;
49
- if (!(isPrivatePkg === true)) {
50
- _context.next = 5;
51
- break;
52
- }
53
- return _context.abrupt("return");
54
- case 5:
55
- // Check for private dependencies in dependencies and peerDependencies
56
- // Note: devDependencies are not checked here as they don't end up in consumer lockfiles
57
- dependencies = (0, _handleAstObject.getObjectPropertyAsObject)(node, 'dependencies');
58
- peerDependencies = (0, _handleAstObject.getObjectPropertyAsObject)(node, 'peerDependencies');
59
- for (_i = 0, _arr = [dependencies, peerDependencies]; _i < _arr.length; _i++) {
60
- obj = _arr[_i];
61
- _iterator = _createForOfIteratorHelper((obj === null || obj === void 0 ? void 0 : obj.properties) || []);
62
- try {
63
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
64
- p = _step.value;
65
- if (p.type === 'Property' && p.key.type === 'Literal') {
66
- key = p.key.value;
67
- if (typeof key === 'string' && pkgMap.has(key)) {
68
- isPrivateDependency = ((_pkgMap$get = pkgMap.get(key)) === null || _pkgMap$get === void 0 ? void 0 : _pkgMap$get.packageJson.private) === true;
69
- if (isPrivateDependency) {
70
- context.report({
71
- node: node,
72
- messageId: 'invalidPrivateDependency',
73
- data: {
74
- pkgName: key
75
- }
76
- });
77
- }
78
- }
38
+ ObjectExpression: function ObjectExpression(node) {
39
+ // Private dependencies can be used in private packages
40
+ var isPrivatePkg = (0, _handleAstObject.getObjectPropertyAsLiteral)(node, 'private') === true;
41
+ if (isPrivatePkg === true) {
42
+ return;
43
+ }
44
+
45
+ // Check for private dependencies in dependencies and peerDependencies
46
+ // Note: devDependencies are not checked here as they don't end up in consumer lockfiles
47
+ var dependencies = (0, _handleAstObject.getObjectPropertyAsObject)(node, 'dependencies');
48
+ var peerDependencies = (0, _handleAstObject.getObjectPropertyAsObject)(node, 'peerDependencies');
49
+ for (var _i = 0, _arr = [dependencies, peerDependencies]; _i < _arr.length; _i++) {
50
+ var obj = _arr[_i];
51
+ var _iterator = _createForOfIteratorHelper((obj === null || obj === void 0 ? void 0 : obj.properties) || []),
52
+ _step;
53
+ try {
54
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
55
+ var p = _step.value;
56
+ if (p.type === 'Property' && p.key.type === 'Literal') {
57
+ var key = p.key.value;
58
+ if (typeof key === 'string' && pkgMap.has(key)) {
59
+ var _pkgMap$get;
60
+ var isPrivateDependency = ((_pkgMap$get = pkgMap.get(key)) === null || _pkgMap$get === void 0 ? void 0 : _pkgMap$get.packageJson.private) === true;
61
+ if (isPrivateDependency) {
62
+ context.report({
63
+ node: node,
64
+ messageId: 'invalidPrivateDependency',
65
+ data: {
66
+ pkgName: key
79
67
  }
80
- }
81
- } catch (err) {
82
- _iterator.e(err);
83
- } finally {
84
- _iterator.f();
68
+ });
85
69
  }
86
70
  }
87
- case 8:
88
- case "end":
89
- return _context.stop();
71
+ }
90
72
  }
91
- }, _callee);
92
- }));
93
- function ObjectExpression(_x) {
94
- return _ObjectExpression.apply(this, arguments);
73
+ } catch (err) {
74
+ _iterator.e(err);
75
+ } finally {
76
+ _iterator.f();
77
+ }
95
78
  }
96
- return ObjectExpression;
97
- }()
79
+ }
98
80
  };
99
81
  }
100
82
  };
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _utils = require("../utils");
10
- var FUNCTION_NAMES = new Set(['ff', 'fg', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp']);
11
- var STATSIG_ONLY_FUNCTION_NAMES = new Set(['fg', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp']);
10
+ var FUNCTION_NAMES = new Set(['checkGate', 'ff', 'fg', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp']);
11
+ var STATSIG_ONLY_FUNCTION_NAMES = new Set(['checkGate', 'fg', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp']);
12
12
  var _findDefinitionDeclaration = function findDefinitionDeclaration(node) {
13
13
  return node.type === 'VariableDeclaration' || node.type === 'FunctionDeclaration' ? node : _findDefinitionDeclaration(node.parent);
14
14
  };
@@ -37,6 +37,12 @@ var validateBinaryExpression = function validateBinaryExpression(node, context)
37
37
  }
38
38
  }
39
39
  };
40
+ var validateAwaitExpression = function validateAwaitExpression(node, context) {
41
+ if (node.argument.type === 'CallExpression') {
42
+ return validateCallExpression(node.argument, context);
43
+ }
44
+ return false;
45
+ };
40
46
  var validateReturnExpression = function validateReturnExpression(_ref, context) {
41
47
  var body = _ref.body;
42
48
  if (body.length !== 1) {
@@ -48,6 +54,8 @@ var validateReturnExpression = function validateReturnExpression(_ref, context)
48
54
  var argument = statement.argument;
49
55
  if (argument && argument.type === 'CallExpression') {
50
56
  validateCallExpression(argument, context);
57
+ } else if (argument && argument.type === 'AwaitExpression') {
58
+ validateAwaitExpression(argument, context);
51
59
  } else if (argument && argument.type === 'BinaryExpression') {
52
60
  validateBinaryExpression(argument, context);
53
61
  }
@@ -58,6 +66,9 @@ var validateFunctionBody = function validateFunctionBody(body, context) {
58
66
  case 'CallExpression':
59
67
  validateCallExpression(body, context);
60
68
  break;
69
+ case 'AwaitExpression':
70
+ validateAwaitExpression(body, context);
71
+ break;
61
72
  case 'BinaryExpression':
62
73
  validateBinaryExpression(body, context);
63
74
  break;
@@ -72,7 +83,7 @@ var rule = {
72
83
  type: 'problem',
73
84
  docs: {
74
85
  description: 'Ensure feature flags/gates and experiments are inlined so that they can be statically analyzable.',
75
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/inline-usage/README.md'
86
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/inline-usage/README.md'
76
87
  },
77
88
  schema: [{
78
89
  enum: ['ssOnly']
@@ -12,7 +12,7 @@ var IMPORT_SOURCES = new Set([].concat((0, _toConsumableArray2.default)(_constan
12
12
  var rule = {
13
13
  meta: {
14
14
  docs: {
15
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/no-alias/README.md',
15
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/no-alias/README.md',
16
16
  description: 'Disallow aliasing of feature flag utils to ensure feature flag usage is statically analyzable'
17
17
  },
18
18
  messages: {
@@ -29,7 +29,7 @@ var rule = {
29
29
  return;
30
30
  }
31
31
  (_node$specifiers = node.specifiers) === null || _node$specifiers === void 0 || _node$specifiers.forEach(function (specifier) {
32
- if (specifier.type === 'ImportSpecifier') {
32
+ if (specifier.type === 'ImportSpecifier' && 'name' in specifier.imported) {
33
33
  var imported = specifier.imported,
34
34
  local = specifier.local;
35
35
  if (imported.name !== local.name) {
@@ -24,7 +24,7 @@ var rule = {
24
24
  meta: {
25
25
  docs: {
26
26
  description: 'Disallow feature flag usage at module level',
27
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/no-module-level-eval/README.md'
27
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/no-module-level-eval/README.md'
28
28
  },
29
29
  messages: {
30
30
  noModuleLevelEval: 'Do not evaluate feature flags in the module level, it will always resolve to false when server side rendered or when flags are loaded async.'
@@ -35,7 +35,7 @@ var rule = {
35
35
  meta: {
36
36
  docs: {
37
37
  description: 'Disallow getWillShowNav4 or isVisualRefreshEnabled usage at module level',
38
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/no-module-level-eval-nav4/README.md'
38
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/no-module-level-eval-nav4/README.md'
39
39
  },
40
40
  messages: {
41
41
  noModuleLevelEval: 'Do not evaluate getWillShowNav4 or isVisualRefreshEnabled at module level. This causes complications with SSR. If feature flagging components in `jira` use `componentWithCondition` from `@atlassian/jira-feature-flagging-utils`.'
@@ -16,6 +16,9 @@ var _getGateType = function getGateType(node, context) {
16
16
  if (type === 'BinaryExpression') {
17
17
  return _getGateType(node.left, context) || _getGateType(node.right, context);
18
18
  }
19
+ if (type === 'AwaitExpression') {
20
+ return _getGateType(node.argument, context);
21
+ }
19
22
  if (node.type === 'CallExpression') {
20
23
  var callee = node.callee;
21
24
  var isFeatureGate = type === 'CallExpression' && callee.type === 'Identifier' && (
@@ -52,7 +55,7 @@ var rule = {
52
55
  meta: {
53
56
  docs: {
54
57
  description: 'Inform on how to use gates and experiments in logical expressions',
55
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/no-preconditioning/README.md'
58
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/no-preconditioning/README.md'
56
59
  },
57
60
  messages: {
58
61
  useConfig: 'Do not precondition gates or experiments with another gate. Configure this in Statsig instead to reduce unnecessary code, simplify cleanup and to ensure accurate exposures in Statsig.',
@@ -54,7 +54,7 @@ var validateUsage = function validateUsage(node, utilName, context, changeMap) {
54
54
  var rule = {
55
55
  meta: {
56
56
  docs: {
57
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/prefer-fg/README.md',
57
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/prefer-fg/README.md',
58
58
  description: 'Keep usages of boolean feature flags consistent'
59
59
  },
60
60
  fixable: 'code',
@@ -11,13 +11,13 @@ var _utils = require("../utils");
11
11
  var IMPORT_SOURCES = new Set([].concat((0, _toConsumableArray2.default)(_constants.FEATURE_API_IMPORT_SOURCES), ['@atlassian/jira-feature-flagging-utils', '@atlassian/jira-feature-gate-component', '@atlassian/jira-feature-gates-test-mocks', '@atlassian/jira-feature-gates-storybook-mocks']));
12
12
 
13
13
  // Any functions not in this list should be skipped for performance.
14
- var FUNCTION_NAMES = new Set(['ff', 'fg', 'getFeatureFlagValue', 'getMultivariateFeatureFlag', 'componentWithFF', 'componentWithFG', 'passGate', 'withGate', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp', 'mockExp', 'withExp', 'wasExperimentManuallyExposed']);
14
+ var FUNCTION_NAMES = new Set(['ff', 'fg', 'getFeatureFlagValue', 'componentWithFF', 'componentWithFG', 'passGate', 'withGate', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp', 'mockExp', 'withExp', 'wasExperimentManuallyExposed']);
15
15
  var STATSIG_ONLY_FUNCTION_NAMES = new Set(['fg', 'componentWithFG', 'passGate', 'withGate', 'expVal', 'expValEquals', 'UNSAFE_noExposureExp', 'mockExp', 'withExp', 'wasExperimentManuallyExposed']);
16
16
  var rule = {
17
17
  meta: {
18
18
  type: 'problem',
19
19
  docs: {
20
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/static-feature-flags/README.md',
20
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/static-feature-flags/README.md',
21
21
  description: 'Ensure feature flags or gates are static string literals'
22
22
  },
23
23
  fixable: 'code',
@@ -9,7 +9,7 @@ var BANNED_IMPORTS_SET = new Set(['@atlaskit/feature-gate-js-client']);
9
9
  var rule = {
10
10
  meta: {
11
11
  docs: {
12
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/use-recommended-utils/README.md',
12
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/use-recommended-utils/README.md',
13
13
  description: 'Prefer using the feature flag abstraction over direct statsig library.'
14
14
  },
15
15
  messages: {
@@ -8,7 +8,7 @@ exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  // eslint-disable-next-line import/no-extraneous-dependencies
10
10
 
11
- var STORYBOOK_DECORATOR_IDENTIFIER = 'withPlatformFeatureFlags';
11
+ var STORYBOOK_DECORATOR_IDENTIFIER = 'withPlatformFeatureGates';
12
12
  var rule = {
13
13
  meta: {
14
14
  hasSuggestions: false,
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  // We will be removing sparse checkout from pipelines in CI completely due to the load it causes on BBC.
8
8
  // We will be incrementally removing sparse-checkout from the files below as it is probably unnecessasry.
9
9
  // If you must add an exception below, please go through the chopper process before doing so
10
- var sparseCheckoutExceptions = ['bitbucket-pipelines/pipelines/custom/run-issue-automat.ts', 'bitbucket-pipelines/pipelines/custom/marketplace/utils.ts', 'bitbucket-pipelines/pipelines/custom/confluence/utils/index.ts', 'bitbucket-pipelines/pipelines/custom/afm-tools/upload-afm-dependency-graph-cache.ts', 'bitbucket-pipelines/pipelines/custom/afm-tools/default-afm-tools.ts', 'bitbucket-pipelines/pipelines/custom/marketplace/utils.ts', 'bitbucket-pipelines/pipelines/custom/afm-git-hooks.ts', 'bitbucket-pipelines/pipelines/custom/update-codeowners-and-teams-gen.ts', 'bitbucket-pipelines/pipelines/custom/run-issue-automat.ts'];
10
+ var sparseCheckoutExceptions = ['pipeline-definitions/pipelines/custom/run-issue-automat.ts', 'pipeline-definitions/pipelines/custom/marketplace/utils.ts', 'pipeline-definitions/pipelines/custom/confluence/utils/index.ts', 'pipeline-definitions/pipelines/custom/afm-tools/upload-afm-dependency-graph-cache.ts', 'pipeline-definitions/pipelines/custom/afm-tools/default-afm-tools.ts', 'pipeline-definitions/pipelines/custom/marketplace/utils.ts', 'pipeline-definitions/pipelines/custom/afm-git-hooks.ts', 'pipeline-definitions/pipelines/custom/update-codeowners-and-teams-gen.ts', 'pipeline-definitions/pipelines/custom/run-issue-automat.ts'];
11
11
  var rule = {
12
12
  meta: {
13
13
  docs: {
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ // eslint-disable-next-line import/no-extraneous-dependencies
8
+
9
+ var rule = {
10
+ meta: {
11
+ type: 'problem',
12
+ // Problem type = can be error
13
+ docs: {
14
+ description: 'Prefer crypto.randomUUID() over uuid library. The uuid package causes Jest mocking issues.',
15
+ recommended: true
16
+ },
17
+ fixable: 'code',
18
+ // Enables --fix
19
+ messages: {
20
+ preferCryptoRandomUUID: 'Use crypto.randomUUID() instead of the uuid library. Run `eslint --fix` to auto-migrate.'
21
+ }
22
+ },
23
+ create: function create(context) {
24
+ var uuidImports = new Map(); // Track imported names
25
+
26
+ return {
27
+ ImportDeclaration: function ImportDeclaration(node) {
28
+ if (node.type !== 'ImportDeclaration') {
29
+ return;
30
+ }
31
+ var source = node.source.value;
32
+ if (typeof source === 'string' && (source === 'uuid' || /^uuid\/v[14]$/.test(source))) {
33
+ // Track imported name (e.g., uuid, v4, etc.)
34
+ var specifier = node.specifiers[0];
35
+ if (specifier) {
36
+ uuidImports.set(specifier.local.name, node);
37
+ }
38
+ context.report({
39
+ node: node,
40
+ messageId: 'preferCryptoRandomUUID',
41
+ fix: function fix(fixer) {
42
+ // Remove the import - usages will be fixed separately
43
+ return fixer.remove(node);
44
+ }
45
+ });
46
+ }
47
+ },
48
+ CallExpression: function CallExpression(node) {
49
+ var _node$arguments$;
50
+ if (node.type !== 'CallExpression') {
51
+ return;
52
+ }
53
+
54
+ // Handle direct uuid() or v4() calls
55
+ if (node.callee.type === 'Identifier') {
56
+ var calleeName = node.callee.name;
57
+ if (uuidImports.has(calleeName)) {
58
+ context.report({
59
+ node: node,
60
+ messageId: 'preferCryptoRandomUUID',
61
+ fix: function fix(fixer) {
62
+ // Replace uuid() with crypto.randomUUID()
63
+ return fixer.replaceText(node.callee, 'crypto.randomUUID');
64
+ }
65
+ });
66
+ }
67
+ }
68
+
69
+ // Handle require('uuid')
70
+ if (node.callee.type === 'Identifier' && node.callee.name === 'require' && ((_node$arguments$ = node.arguments[0]) === null || _node$arguments$ === void 0 ? void 0 : _node$arguments$.type) === 'Literal') {
71
+ var arg = node.arguments[0].value;
72
+ if (typeof arg === 'string' && (arg === 'uuid' || /^uuid\/v[14]$/.test(arg))) {
73
+ context.report({
74
+ node: node,
75
+ messageId: 'preferCryptoRandomUUID'
76
+ // require() needs manual refactoring
77
+ });
78
+ }
79
+ }
80
+ },
81
+ 'Program:exit': function ProgramExit() {
82
+ uuidImports.clear();
83
+ }
84
+ };
85
+ }
86
+ };
87
+ var _default = exports.default = rule;
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  var rule = {
8
8
  meta: {
9
9
  docs: {
10
- url: 'https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/browse/platform/packages/platform/eslint-plugin/src/rules/use-entrypoints-in-examples/README.md',
10
+ url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/platform/eslint-plugin/src/rules/use-entrypoints-in-examples/README.md',
11
11
  description: 'Encourage usage of package entrypoints in examples.'
12
12
  },
13
13
  messages: {
@@ -30,7 +30,7 @@ var getSourceCode = exports.getSourceCode = function getSourceCode(context) {
30
30
  */
31
31
  var getScope = exports.getScope = function getScope(context, node) {
32
32
  var _getSourceCode$getSco, _getSourceCode, _getSourceCode$getSco2;
33
- return (_getSourceCode$getSco = (_getSourceCode = getSourceCode(context)) === null || _getSourceCode === void 0 || (_getSourceCode$getSco2 = _getSourceCode.getScope) === null || _getSourceCode$getSco2 === void 0 ? void 0 : _getSourceCode$getSco2.call(_getSourceCode, node)) !== null && _getSourceCode$getSco !== void 0 ? _getSourceCode$getSco : context.getScope();
33
+ return (_getSourceCode$getSco = (_getSourceCode = getSourceCode(context)) === null || _getSourceCode === void 0 || (_getSourceCode$getSco2 = _getSourceCode.getScope) === null || _getSourceCode$getSco2 === void 0 ? void 0 : _getSourceCode$getSco2.call(_getSourceCode, node)) !== null && _getSourceCode$getSco !== void 0 ? _getSourceCode$getSco : context.getScope(node);
34
34
  };
35
35
 
36
36
  /**
@@ -43,5 +43,7 @@ var getScope = exports.getScope = function getScope(context, node) {
43
43
  */
44
44
  var getAncestors = exports.getAncestors = function getAncestors(context, node) {
45
45
  var _getSourceCode$getAnc, _getSourceCode2, _getSourceCode2$getAn;
46
- return (_getSourceCode$getAnc = (_getSourceCode2 = getSourceCode(context)) === null || _getSourceCode2 === void 0 || (_getSourceCode2$getAn = _getSourceCode2.getAncestors) === null || _getSourceCode2$getAn === void 0 ? void 0 : _getSourceCode2$getAn.call(_getSourceCode2, node)) !== null && _getSourceCode$getAnc !== void 0 ? _getSourceCode$getAnc : context.getAncestors();
46
+ return (_getSourceCode$getAnc = (_getSourceCode2 = getSourceCode(context)) === null || _getSourceCode2 === void 0 || (_getSourceCode2$getAn = _getSourceCode2.getAncestors) === null || _getSourceCode2$getAn === void 0 ? void 0 : _getSourceCode2$getAn.call(_getSourceCode2, node)) !== null && _getSourceCode$getAnc !== void 0 ? _getSourceCode$getAnc :
47
+ // this is needed for jira's eslint update, as otherwise there is type errors only in jira typechecking
48
+ context.getAncestors(node);
47
49
  };
@@ -7,9 +7,7 @@ import ensureTestRunnerNestedCount from './rules/ensure-test-runner-nested-count
7
7
  import ensureAtlassianTeam from './rules/ensure-atlassian-team';
8
8
  import noDuplicateDependencies from './rules/no-duplicate-dependencies';
9
9
  import noInvalidFeatureFlagUsage from './rules/no-invalid-feature-flag-usage';
10
- import ensureFeatureFlagPrefix from './rules/ensure-feature-flag-prefix';
11
10
  import ensureCriticalDependencyResolutions from './rules/ensure-critical-dependency-resolutions';
12
- import ensureValidPlatformYarnProtocolUsage from './rules/ensure-valid-platform-yarn-protocol-usage';
13
11
  import ensureValidBinValues from './rules/ensure-valid-bin-values';
14
12
  import ensureNoPrivateDependencies from './rules/ensure-no-private-dependencies';
15
13
  import expandBorderShorthand from './rules/compiled/expand-border-shorthand';
@@ -30,6 +28,7 @@ import expandSpacingShorthand from './rules/compiled/expand-spacing-shorthand';
30
28
  import noSparseCheckout from './rules/no-sparse-checkout';
31
29
  import noDirectDocumentUsage from './rules/no-direct-document-usage';
32
30
  import noSetImmediate from './rules/no-set-immediate';
31
+ import preferCryptoRandomUuid from './rules/prefer-crypto-random-uuid';
33
32
  import { join, normalize } from 'node:path';
34
33
  import { readFileSync } from 'node:fs';
35
34
  let jiraRoot;
@@ -51,12 +50,10 @@ try {
51
50
  const packageJson = require('@atlaskit/eslint-plugin-platform/package.json');
52
51
  const rules = {
53
52
  'ensure-feature-flag-registration': ensureFeatureFlagRegistration,
54
- 'ensure-feature-flag-prefix': ensureFeatureFlagPrefix,
55
53
  'ensure-test-runner-arguments': ensureTestRunnerArguments,
56
54
  'ensure-test-runner-nested-count': ensureTestRunnerNestedCount,
57
55
  'ensure-atlassian-team': ensureAtlassianTeam,
58
56
  'ensure-critical-dependency-resolutions': ensureCriticalDependencyResolutions,
59
- 'ensure-valid-platform-yarn-protocol-usage': ensureValidPlatformYarnProtocolUsage,
60
57
  'ensure-valid-bin-values': ensureValidBinValues,
61
58
  'ensure-no-private-dependencies': ensureNoPrivateDependencies,
62
59
  'expand-border-shorthand': expandBorderShorthand,
@@ -79,7 +76,8 @@ const rules = {
79
76
  'use-recommended-utils': useRecommendedUtils,
80
77
  'no-sparse-checkout': noSparseCheckout,
81
78
  'no-direct-document-usage': noDirectDocumentUsage,
82
- 'no-set-immediate': noSetImmediate
79
+ 'no-set-immediate': noSetImmediate,
80
+ 'prefer-crypto-random-uuid': preferCryptoRandomUuid
83
81
  };
84
82
  const commonConfig = {
85
83
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
@@ -111,10 +109,7 @@ const recommendedRules = {
111
109
  '@atlaskit/platform/prefer-fg': 'error',
112
110
  '@atlaskit/platform/no-alias': 'error',
113
111
  // end: feature-gating rules
114
- '@atlaskit/platform/ensure-feature-flag-registration': 'error',
115
- '@atlaskit/platform/ensure-feature-flag-prefix': ['warn', {
116
- allowedPrefixes: ['platform.', 'platform_']
117
- }]
112
+ '@atlaskit/platform/ensure-feature-flag-registration': 'error'
118
113
  };
119
114
  const jiraRules = commonConfig;
120
115
  const jsonPrefix = '/* eslint-disable quote-props, comma-dangle, quotes, semi, eol-last, @typescript-eslint/semi, no-template-curly-in-string */ module.exports = ';
@@ -1,5 +1,5 @@
1
1
  // List of libraries that we maintain or have worked on
2
2
  // - eg `@atlaskit/feature-gate-js-client` shouldn't be included in here
3
- export const FEATURE_API_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging', '@atlassian/jira-feature-flagging-using-meta', '@atlassian/jira-feature-gating', '@atlassian/jira-feature-experiments', '@atlaskit/platform-feature-flags']);
3
+ export const FEATURE_API_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging', '@atlassian/jira-feature-flagging-using-meta', '@atlassian/jira-feature-gating', '@atlassian/jira-feature-experiments', '@atlaskit/platform-feature-flags', '@atlassian/repo-feature-flags-statsig']);
4
4
  export const FEATURE_MOCKS_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging-mocks', '@atlassian/jira-feature-gates-test-mocks', '@atlassian/jira-feature-gates-storybook-mocks']);
5
5
  export const FEATURE_UTILS_IMPORT_SOURCES = new Set(['@atlassian/jira-feature-flagging-utils', '@atlassian/jira-feature-gate-component']);