@atlaskit/eslint-plugin-platform 2.8.0 → 2.9.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/index.js +6 -1
  3. package/dist/cjs/rules/ensure-use-sync-external-store-server-snapshot/index.js +41 -0
  4. package/dist/cjs/rules/import/no-barrel-entry-imports/index.js +475 -67
  5. package/dist/cjs/rules/import/no-barrel-entry-jest-mock/index.js +387 -112
  6. package/dist/cjs/rules/import/no-jest-mock-barrel-files/index.js +3 -2
  7. package/dist/cjs/rules/import/no-relative-barrel-file-imports/index.js +7 -3
  8. package/dist/cjs/rules/import/shared/jest-utils.js +62 -9
  9. package/dist/cjs/rules/import/shared/package-resolution.js +156 -23
  10. package/dist/cjs/rules/visit-example-type-import-required/index.js +409 -0
  11. package/dist/es2019/index.js +6 -1
  12. package/dist/es2019/rules/ensure-use-sync-external-store-server-snapshot/index.js +43 -0
  13. package/dist/es2019/rules/import/no-barrel-entry-imports/index.js +372 -15
  14. package/dist/es2019/rules/import/no-barrel-entry-jest-mock/index.js +245 -17
  15. package/dist/es2019/rules/import/no-jest-mock-barrel-files/index.js +3 -2
  16. package/dist/es2019/rules/import/no-relative-barrel-file-imports/index.js +7 -3
  17. package/dist/es2019/rules/import/shared/jest-utils.js +44 -0
  18. package/dist/es2019/rules/import/shared/package-resolution.js +97 -5
  19. package/dist/es2019/rules/visit-example-type-import-required/index.js +375 -0
  20. package/dist/esm/index.js +6 -1
  21. package/dist/esm/rules/ensure-use-sync-external-store-server-snapshot/index.js +35 -0
  22. package/dist/esm/rules/import/no-barrel-entry-imports/index.js +475 -67
  23. package/dist/esm/rules/import/no-barrel-entry-jest-mock/index.js +388 -113
  24. package/dist/esm/rules/import/no-jest-mock-barrel-files/index.js +3 -2
  25. package/dist/esm/rules/import/no-relative-barrel-file-imports/index.js +7 -3
  26. package/dist/esm/rules/import/shared/jest-utils.js +61 -9
  27. package/dist/esm/rules/import/shared/package-resolution.js +156 -25
  28. package/dist/esm/rules/visit-example-type-import-required/index.js +402 -0
  29. package/dist/types/index.d.ts +12 -0
  30. package/dist/types/rules/ensure-use-sync-external-store-server-snapshot/index.d.ts +3 -0
  31. package/dist/types/rules/import/shared/jest-utils.d.ts +8 -0
  32. package/dist/types/rules/import/shared/package-resolution.d.ts +22 -2
  33. package/dist/types/rules/visit-example-type-import-required/index.d.ts +4 -0
  34. package/dist/types-ts4.5/index.d.ts +12 -0
  35. package/dist/types-ts4.5/rules/ensure-use-sync-external-store-server-snapshot/index.d.ts +3 -0
  36. package/dist/types-ts4.5/rules/import/shared/jest-utils.d.ts +8 -0
  37. package/dist/types-ts4.5/rules/import/shared/package-resolution.d.ts +22 -2
  38. package/dist/types-ts4.5/rules/visit-example-type-import-required/index.d.ts +4 -0
  39. package/package.json +3 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/eslint-plugin-platform
2
2
 
3
+ ## 2.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`50be0b9fcf83d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/50be0b9fcf83d) -
8
+ Added new ESLint rule `ensure-use-sync-external-store-server-snapshot` that enforces all
9
+ `useSyncExternalStore` calls include the third argument (`getServerSnapshot`) for SSR
10
+ compatibility. The rule is enabled as an error in all platform, jira, and confluence configs.
11
+
3
12
  ## 2.8.0
4
13
 
5
14
  ### Minor Changes
package/dist/cjs/index.js CHANGED
@@ -41,6 +41,8 @@ var _noBarrelEntryJestMock = _interopRequireDefault(require("./rules/import/no-b
41
41
  var _noJestMockBarrelFiles = _interopRequireDefault(require("./rules/import/no-jest-mock-barrel-files"));
42
42
  var _noRelativeBarrelFileImports = _interopRequireDefault(require("./rules/import/no-relative-barrel-file-imports"));
43
43
  var _noConversationAssistantBarrelImports = _interopRequireDefault(require("./rules/import/no-conversation-assistant-barrel-imports"));
44
+ var _visitExampleTypeImportRequired = _interopRequireDefault(require("./rules/visit-example-type-import-required"));
45
+ var _ensureUseSyncExternalStoreServerSnapshot = _interopRequireDefault(require("./rules/ensure-use-sync-external-store-server-snapshot"));
44
46
  var _nodePath = require("node:path");
45
47
  var _nodeFs = require("node:fs");
46
48
  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; }
@@ -96,11 +98,14 @@ var rules = exports.rules = {
96
98
  'no-barrel-entry-jest-mock': _noBarrelEntryJestMock.default,
97
99
  'no-jest-mock-barrel-files': _noJestMockBarrelFiles.default,
98
100
  'no-relative-barrel-file-imports': _noRelativeBarrelFileImports.default,
99
- 'no-conversation-assistant-barrel-imports': _noConversationAssistantBarrelImports.default
101
+ 'no-conversation-assistant-barrel-imports': _noConversationAssistantBarrelImports.default,
102
+ 'visit-example-type-import-required': _visitExampleTypeImportRequired.default,
103
+ 'ensure-use-sync-external-store-server-snapshot': _ensureUseSyncExternalStoreServerSnapshot.default
100
104
  };
101
105
  var commonConfig = {
102
106
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
103
107
  '@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
108
+ '@atlaskit/platform/ensure-use-sync-external-store-server-snapshot': 'error',
104
109
  '@atlaskit/platform/no-invalid-feature-flag-usage': 'error',
105
110
  '@atlaskit/platform/no-invalid-storybook-decorator-usage': 'error',
106
111
  '@atlaskit/platform/ensure-atlassian-team': 'error',
@@ -0,0 +1,41 @@
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 FUNCTION_NAME = 'useSyncExternalStore';
10
+ var rule = {
11
+ meta: {
12
+ type: 'problem',
13
+ docs: {
14
+ description: "Enforce that ".concat(FUNCTION_NAME, " is called with a third argument (getServerSnapshot) for SSR compatibility"),
15
+ recommended: true
16
+ },
17
+ messages: {
18
+ missingServerSnapshot: "'".concat(FUNCTION_NAME, "' must be called with a third argument (getServerSnapshot). Without it, React will throw during server-side rendering.\n\nIf your component relies on browser-only APIs (e.g. localStorage, WebRTC, WebGL) and must not render on the server, pass `() => null` (or another stable fallback) as the third argument \u2014 this is the correct way to opt out of SSR, not an omission.\n\nPrefer higher-level APIs that wrap ").concat(FUNCTION_NAME, " where available, as they handle SSR concerns for you.\n\nSee the React docs for usage guidance: https://react.dev/reference/react/useSyncExternalStore")
19
+ }
20
+ },
21
+ create: function create(context) {
22
+ return {
23
+ CallExpression: function CallExpression(node) {
24
+ var callee = node.callee,
25
+ args = node.arguments;
26
+ var isDirectCall = callee.type === 'Identifier' && callee.name === FUNCTION_NAME;
27
+ var isMemberCall = callee.type === 'MemberExpression' && callee.property.type === 'Identifier' && callee.property.name === FUNCTION_NAME;
28
+ if (!isDirectCall && !isMemberCall) {
29
+ return;
30
+ }
31
+ if (args.length < 3) {
32
+ context.report({
33
+ node: node,
34
+ messageId: 'missingServerSnapshot'
35
+ });
36
+ }
37
+ }
38
+ };
39
+ }
40
+ };
41
+ var _default = exports.default = rule;