@atlaskit/eslint-plugin-volt-strict-mode 0.1.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 (64) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +13 -0
  3. package/README.md +16 -0
  4. package/dist/cjs/index.codegen.js +61 -0
  5. package/dist/cjs/index.js +38 -0
  6. package/dist/cjs/presets/all-flat.codegen.js +22 -0
  7. package/dist/cjs/presets/all.codegen.js +20 -0
  8. package/dist/cjs/presets/recommended-flat.codegen.js +22 -0
  9. package/dist/cjs/presets/recommended.codegen.js +20 -0
  10. package/dist/cjs/rules/external-rules.js +11 -0
  11. package/dist/cjs/rules/index.codegen.js +19 -0
  12. package/dist/cjs/rules/no-multiple-exports/index.js +112 -0
  13. package/dist/cjs/rules/no-re-exports/index.js +119 -0
  14. package/dist/cjs/rules/utils/create-rule.js +13 -0
  15. package/dist/cjs/rules/utils/scope-utils.js +28 -0
  16. package/dist/es2019/index.codegen.js +55 -0
  17. package/dist/es2019/index.js +1 -0
  18. package/dist/es2019/presets/all-flat.codegen.js +16 -0
  19. package/dist/es2019/presets/all.codegen.js +14 -0
  20. package/dist/es2019/presets/recommended-flat.codegen.js +16 -0
  21. package/dist/es2019/presets/recommended.codegen.js +14 -0
  22. package/dist/es2019/rules/external-rules.js +5 -0
  23. package/dist/es2019/rules/index.codegen.js +12 -0
  24. package/dist/es2019/rules/no-multiple-exports/index.js +76 -0
  25. package/dist/es2019/rules/no-re-exports/index.js +92 -0
  26. package/dist/es2019/rules/utils/create-rule.js +6 -0
  27. package/dist/es2019/rules/utils/scope-utils.js +17 -0
  28. package/dist/esm/index.codegen.js +52 -0
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/presets/all-flat.codegen.js +16 -0
  31. package/dist/esm/presets/all.codegen.js +14 -0
  32. package/dist/esm/presets/recommended-flat.codegen.js +16 -0
  33. package/dist/esm/presets/recommended.codegen.js +14 -0
  34. package/dist/esm/rules/external-rules.js +5 -0
  35. package/dist/esm/rules/index.codegen.js +12 -0
  36. package/dist/esm/rules/no-multiple-exports/index.js +106 -0
  37. package/dist/esm/rules/no-re-exports/index.js +113 -0
  38. package/dist/esm/rules/utils/create-rule.js +6 -0
  39. package/dist/esm/rules/utils/scope-utils.js +21 -0
  40. package/dist/types/index.codegen.d.ts +11 -0
  41. package/dist/types/index.d.ts +1 -0
  42. package/dist/types/presets/all-flat.codegen.d.ts +8 -0
  43. package/dist/types/presets/all.codegen.d.ts +8 -0
  44. package/dist/types/presets/recommended-flat.codegen.d.ts +8 -0
  45. package/dist/types/presets/recommended.codegen.d.ts +8 -0
  46. package/dist/types/rules/external-rules.d.ts +13 -0
  47. package/dist/types/rules/index.codegen.d.ts +7 -0
  48. package/dist/types/rules/no-multiple-exports/index.d.ts +2 -0
  49. package/dist/types/rules/no-re-exports/index.d.ts +2 -0
  50. package/dist/types/rules/utils/create-rule.d.ts +4 -0
  51. package/dist/types/rules/utils/scope-utils.d.ts +6 -0
  52. package/dist/types-ts4.5/index.codegen.d.ts +11 -0
  53. package/dist/types-ts4.5/index.d.ts +1 -0
  54. package/dist/types-ts4.5/presets/all-flat.codegen.d.ts +8 -0
  55. package/dist/types-ts4.5/presets/all.codegen.d.ts +8 -0
  56. package/dist/types-ts4.5/presets/recommended-flat.codegen.d.ts +8 -0
  57. package/dist/types-ts4.5/presets/recommended.codegen.d.ts +8 -0
  58. package/dist/types-ts4.5/rules/external-rules.d.ts +13 -0
  59. package/dist/types-ts4.5/rules/index.codegen.d.ts +7 -0
  60. package/dist/types-ts4.5/rules/no-multiple-exports/index.d.ts +2 -0
  61. package/dist/types-ts4.5/rules/no-re-exports/index.d.ts +2 -0
  62. package/dist/types-ts4.5/rules/utils/create-rule.d.ts +4 -0
  63. package/dist/types-ts4.5/rules/utils/scope-utils.d.ts +6 -0
  64. package/package.json +68 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # @atlaskit/eslint-plugin-volt-strict-mode
2
+
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`77e318cfe5e32`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/77e318cfe5e32) -
8
+ Initial release of the Volt Strict Mode lint rule package
package/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2021-Present Atlassian Pty Ltd
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # Volt Strict Mode ESLint Plugin
2
+
3
+ Rules and presets for Atlassian UI Volt Strict Mode. Prefer extending the recommended config rather
4
+ than hand-picking rules.
5
+
6
+ ## Rules
7
+
8
+ <!-- START_RULE_TABLE_CODEGEN -->
9
+ <!-- @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen -->
10
+
11
+ | Rule | Description | Recommended | Fixable | Suggestions |
12
+ | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------- | ----------- |
13
+ | <a href="./src/rules/no-multiple-exports/README.md">no-multiple-exports</a> | Allows at most one runtime export per module so each file maps to a single bundler unit; `export type` / `export interface` are exempt. | Yes | | |
14
+ | <a href="./src/rules/no-re-exports/README.md">no-re-exports</a> | Disallows re-exporting symbols from other modules (barrel patterns and import-then-export indirection) so consumers and bundlers do not chase extra layers. | Yes | | |
15
+
16
+ <!-- END_RULE_TABLE_CODEGEN -->
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.plugin = exports.meta = exports.default = exports.configs = void 0;
8
+ Object.defineProperty(exports, "rules", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _index.rules;
12
+ }
13
+ });
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _allFlat = _interopRequireDefault(require("./presets/all-flat.codegen"));
16
+ var _all = _interopRequireDefault(require("./presets/all.codegen"));
17
+ var _recommendedFlat = _interopRequireDefault(require("./presets/recommended-flat.codegen"));
18
+ var _recommended = _interopRequireDefault(require("./presets/recommended.codegen"));
19
+ var _index = require("./rules/index.codegen");
20
+ 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; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
22
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
23
+ * @codegen <<SignedSource::0be9c67bbfd4ce4c1b2be3144d11047a>>
24
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
25
+ */
26
+ // this uses require because not all node versions this package supports use the same import assertions/attributes
27
+ // eslint-disable-next-line import/no-extraneous-dependencies
28
+ var pkgJson = require('@atlaskit/eslint-plugin-volt-strict-mode/package.json');
29
+ var version = pkgJson.version,
30
+ name = pkgJson.name;
31
+ var plugin = exports.plugin = {
32
+ meta: {
33
+ name: name,
34
+ version: version
35
+ },
36
+ rules: _index.rules,
37
+ // flat configs need to be done like this so they can get a reference to the plugin.
38
+ // see here: https://eslint.org/docs/latest/extend/plugins#configs-in-plugins
39
+ // they cannot use `Object.assign` because it will not work with the getter
40
+ configs: {
41
+ all: _all.default,
42
+ 'flat/all': _objectSpread(_objectSpread({}, _allFlat.default), {}, {
43
+ plugins: _objectSpread(_objectSpread({}, _allFlat.default.plugins), {}, {
44
+ get '@atlaskit/volt-strict-mode'() {
45
+ return plugin;
46
+ }
47
+ })
48
+ }),
49
+ recommended: _recommended.default,
50
+ 'flat/recommended': _objectSpread(_objectSpread({}, _recommendedFlat.default), {}, {
51
+ plugins: _objectSpread(_objectSpread({}, _recommendedFlat.default.plugins), {}, {
52
+ get '@atlaskit/volt-strict-mode'() {
53
+ return plugin;
54
+ }
55
+ })
56
+ })
57
+ }
58
+ };
59
+ var configs = exports.configs = plugin.configs;
60
+ var meta = exports.meta = plugin.meta;
61
+ var _default = exports.default = plugin;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "configs", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _index.configs;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "default", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _index.default;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "meta", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _index.meta;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "plugin", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _index.plugin;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "rules", {
32
+ enumerable: true,
33
+ get: function get() {
34
+ return _index.rules;
35
+ }
36
+ });
37
+ var _index = _interopRequireWildcard(require("./index.codegen"));
38
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
+ * @codegen <<SignedSource::286ead5ccc36610e29396f5c5a6b0598>>
10
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
11
+ */
12
+
13
+ var config = {
14
+ plugins: {
15
+ // NOTE: The reference to this plugin is inserted dynamically while creating the plugin in `index.codegen.tsx`
16
+ },
17
+ rules: {
18
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
19
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
20
+ }
21
+ };
22
+ var _default = exports.default = config;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
+ * @codegen <<SignedSource::646577def73c3f3d33196deeb4eba182>>
10
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
11
+ */
12
+
13
+ var config = {
14
+ plugins: ['@atlaskit/volt-strict-mode'],
15
+ rules: {
16
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
17
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
18
+ }
19
+ };
20
+ var _default = exports.default = config;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
+ * @codegen <<SignedSource::286ead5ccc36610e29396f5c5a6b0598>>
10
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
11
+ */
12
+
13
+ var config = {
14
+ plugins: {
15
+ // NOTE: The reference to this plugin is inserted dynamically while creating the plugin in `index.codegen.tsx`
16
+ },
17
+ rules: {
18
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
19
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
20
+ }
21
+ };
22
+ var _default = exports.default = config;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
+ * @codegen <<SignedSource::646577def73c3f3d33196deeb4eba182>>
10
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
11
+ */
12
+
13
+ var config = {
14
+ plugins: ['@atlaskit/volt-strict-mode'],
15
+ rules: {
16
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
17
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
18
+ }
19
+ };
20
+ var _default = exports.default = config;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.externalRules = void 0;
7
+ /**
8
+ * External rules must be scoped, have a display name, and external urls.
9
+ */
10
+
11
+ var externalRules = exports.externalRules = [];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.rules = void 0;
8
+ var _noMultipleExports = _interopRequireDefault(require("./no-multiple-exports"));
9
+ var _noReExports = _interopRequireDefault(require("./no-re-exports"));
10
+ /**
11
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
12
+ * @codegen <<SignedSource::a7f413162bb38e390f5fa7e4e037dd95>>
13
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
14
+ */
15
+
16
+ var rules = exports.rules = {
17
+ 'no-multiple-exports': _noMultipleExports.default,
18
+ 'no-re-exports': _noReExports.default
19
+ };
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rule = exports.default = void 0;
7
+ var _utils = require("@typescript-eslint/utils");
8
+ var _createRule = require("../utils/create-rule");
9
+ 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; } } }; }
10
+ 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; } }
11
+ 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; }
12
+ var rule = exports.rule = (0, _createRule.createLintRule)({
13
+ meta: {
14
+ name: 'no-multiple-exports',
15
+ docs: {
16
+ description: 'Allows at most one runtime export per module so each file maps to a single bundler unit; `export type` / `export interface` are exempt.',
17
+ recommended: true,
18
+ severity: 'warn'
19
+ },
20
+ messages: {
21
+ 'no-multiple-exports': 'Volt Strict Mode allows only one runtime export per file. Split additional exports into separate modules. `export type` / `export interface` for types are exempt.'
22
+ },
23
+ type: 'problem'
24
+ },
25
+ create: function create(context) {
26
+ return {
27
+ Program: function Program(node) {
28
+ var parts = [];
29
+ var _iterator = _createForOfIteratorHelper(node.body),
30
+ _step;
31
+ try {
32
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
33
+ var stmt = _step.value;
34
+ if (stmt.type === _utils.AST_NODE_TYPES.ExportDefaultDeclaration) {
35
+ parts.push(stmt);
36
+ continue;
37
+ }
38
+ if (stmt.type !== _utils.AST_NODE_TYPES.ExportNamedDeclaration) {
39
+ continue;
40
+ }
41
+ var named = stmt;
42
+
43
+ // Re-exports from another module are handled by `no-re-exports`.
44
+ if (named.source != null) {
45
+ continue;
46
+ }
47
+ if (named.exportKind === 'type') {
48
+ continue;
49
+ }
50
+ if (named.declaration) {
51
+ var decl = named.declaration;
52
+ if (decl.type === _utils.AST_NODE_TYPES.TSInterfaceDeclaration || decl.type === _utils.AST_NODE_TYPES.TSTypeAliasDeclaration) {
53
+ continue;
54
+ }
55
+ if (decl.type === _utils.AST_NODE_TYPES.VariableDeclaration) {
56
+ var _iterator2 = _createForOfIteratorHelper(decl.declarations),
57
+ _step2;
58
+ try {
59
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
60
+ var declarator = _step2.value;
61
+ parts.push(declarator);
62
+ }
63
+ } catch (err) {
64
+ _iterator2.e(err);
65
+ } finally {
66
+ _iterator2.f();
67
+ }
68
+ } else {
69
+ parts.push(decl);
70
+ }
71
+ continue;
72
+ }
73
+ var _iterator3 = _createForOfIteratorHelper(named.specifiers),
74
+ _step3;
75
+ try {
76
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
77
+ var spec = _step3.value;
78
+ if (spec.type !== _utils.AST_NODE_TYPES.ExportSpecifier) {
79
+ continue;
80
+ }
81
+ var exportSpec = spec;
82
+ if (exportSpec.exportKind === 'type') {
83
+ continue;
84
+ }
85
+ parts.push(exportSpec);
86
+ }
87
+ } catch (err) {
88
+ _iterator3.e(err);
89
+ } finally {
90
+ _iterator3.f();
91
+ }
92
+ }
93
+ } catch (err) {
94
+ _iterator.e(err);
95
+ } finally {
96
+ _iterator.f();
97
+ }
98
+ if (parts.length <= 1) {
99
+ return;
100
+ }
101
+ for (var i = 1; i < parts.length; i++) {
102
+ var part = parts[i];
103
+ context.report({
104
+ node: part,
105
+ messageId: 'no-multiple-exports'
106
+ });
107
+ }
108
+ }
109
+ };
110
+ }
111
+ });
112
+ var _default = exports.default = rule;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rule = exports.default = void 0;
7
+ var _utils = require("@typescript-eslint/utils");
8
+ var _contextCompat = require("@atlaskit/eslint-utils/context-compat");
9
+ var _createRule = require("../utils/create-rule");
10
+ var _scopeUtils = require("../utils/scope-utils");
11
+ 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; } } }; }
12
+ 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; } }
13
+ 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; }
14
+ function unwrapToIdentifier(expression) {
15
+ if (expression.type === _utils.AST_NODE_TYPES.Identifier) {
16
+ return expression;
17
+ }
18
+ if (expression.type === _utils.AST_NODE_TYPES.TSAsExpression) {
19
+ return unwrapToIdentifier(expression.expression);
20
+ }
21
+ if (expression.type === _utils.AST_NODE_TYPES.TSSatisfiesExpression) {
22
+ return unwrapToIdentifier(expression.expression);
23
+ }
24
+ return null;
25
+ }
26
+ var rule = exports.rule = (0, _createRule.createLintRule)({
27
+ meta: {
28
+ name: 'no-re-exports',
29
+ docs: {
30
+ description: 'Disallows re-exporting symbols from other modules (barrel patterns and import-then-export indirection) so consumers and bundlers do not chase extra layers.',
31
+ recommended: true,
32
+ severity: 'warn'
33
+ },
34
+ messages: {
35
+ 'no-re-exports': 'Do not re-export from other modules or re-expose imports. Import from the original module at the call site instead.'
36
+ },
37
+ type: 'problem'
38
+ },
39
+ create: function create(context) {
40
+ function report(node) {
41
+ context.report({
42
+ node: node,
43
+ messageId: 'no-re-exports'
44
+ });
45
+ }
46
+ function reportIfImportedIdentifier(id) {
47
+ var variable = (0, _scopeUtils.lookupVariable)((0, _contextCompat.getScope)(context, id), id.name);
48
+ if (variable && (0, _scopeUtils.isImportBinding)(variable)) {
49
+ report(id);
50
+ }
51
+ }
52
+ return {
53
+ ExportAllDeclaration: function ExportAllDeclaration(node) {
54
+ report(node);
55
+ },
56
+ ExportNamedDeclaration: function ExportNamedDeclaration(node) {
57
+ var named = node;
58
+ if (named.source != null) {
59
+ report(node);
60
+ return;
61
+ }
62
+ if (named.exportKind === 'type') {
63
+ return;
64
+ }
65
+ var _iterator = _createForOfIteratorHelper(named.specifiers),
66
+ _step;
67
+ try {
68
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
69
+ var spec = _step.value;
70
+ if (spec.type === _utils.AST_NODE_TYPES.ExportSpecifier) {
71
+ var exportSpec = spec;
72
+ if (exportSpec.exportKind === 'type') {
73
+ continue;
74
+ }
75
+ var local = exportSpec.local;
76
+ if (local.type === _utils.AST_NODE_TYPES.Identifier) {
77
+ reportIfImportedIdentifier(local);
78
+ }
79
+ }
80
+ }
81
+ } catch (err) {
82
+ _iterator.e(err);
83
+ } finally {
84
+ _iterator.f();
85
+ }
86
+ var decl = named.declaration;
87
+ if (!decl || decl.type !== _utils.AST_NODE_TYPES.VariableDeclaration) {
88
+ return;
89
+ }
90
+ var _iterator2 = _createForOfIteratorHelper(decl.declarations),
91
+ _step2;
92
+ try {
93
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
94
+ var declarator = _step2.value;
95
+ if (!declarator.init) {
96
+ continue;
97
+ }
98
+ var id = unwrapToIdentifier(declarator.init);
99
+ if (id) {
100
+ reportIfImportedIdentifier(id);
101
+ }
102
+ }
103
+ } catch (err) {
104
+ _iterator2.e(err);
105
+ } finally {
106
+ _iterator2.f();
107
+ }
108
+ },
109
+ ExportDefaultDeclaration: function ExportDefaultDeclaration(node) {
110
+ var exportDefault = node;
111
+ var arg = exportDefault.declaration;
112
+ if (arg.type === _utils.AST_NODE_TYPES.Identifier) {
113
+ reportIfImportedIdentifier(arg);
114
+ }
115
+ }
116
+ };
117
+ }
118
+ });
119
+ var _default = exports.default = rule;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createLintRule = void 0;
7
+ exports.getRuleUrl = getRuleUrl;
8
+ var _createRule = require("@atlaskit/eslint-utils/create-rule");
9
+ var createLintRule = exports.createLintRule = (0, _createRule.getCreateLintRule)(getRuleUrl);
10
+ function getRuleUrl(ruleName) {
11
+ var name = (0, _createRule.getPathSafeName)(ruleName);
12
+ return "https://atlassian.design/components/eslint-plugin-volt-strict-mode/".concat(name, "/usage");
13
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isImportBinding = isImportBinding;
7
+ exports.lookupVariable = lookupVariable;
8
+ /**
9
+ * Walks the scope chain and returns the first variable bound to `name`, if any.
10
+ */
11
+ function lookupVariable(scope, name) {
12
+ var current = scope;
13
+ while (current) {
14
+ var found = current.variables.find(function (v) {
15
+ return v.name === name;
16
+ });
17
+ if (found) {
18
+ return found;
19
+ }
20
+ current = current.upper;
21
+ }
22
+ return null;
23
+ }
24
+ function isImportBinding(variable) {
25
+ return variable.defs.some(function (d) {
26
+ return d.type === 'ImportBinding';
27
+ });
28
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
+ * @codegen <<SignedSource::0be9c67bbfd4ce4c1b2be3144d11047a>>
4
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
5
+ */
6
+
7
+ import allFlat from './presets/all-flat.codegen';
8
+ import all from './presets/all.codegen';
9
+ import recommendedFlat from './presets/recommended-flat.codegen';
10
+ import recommended from './presets/recommended.codegen';
11
+ import { rules } from './rules/index.codegen';
12
+
13
+ // this uses require because not all node versions this package supports use the same import assertions/attributes
14
+ // eslint-disable-next-line import/no-extraneous-dependencies
15
+ const pkgJson = require('@atlaskit/eslint-plugin-volt-strict-mode/package.json');
16
+ const {
17
+ version,
18
+ name
19
+ } = pkgJson;
20
+ export const plugin = {
21
+ meta: {
22
+ name,
23
+ version
24
+ },
25
+ rules,
26
+ // flat configs need to be done like this so they can get a reference to the plugin.
27
+ // see here: https://eslint.org/docs/latest/extend/plugins#configs-in-plugins
28
+ // they cannot use `Object.assign` because it will not work with the getter
29
+ configs: {
30
+ all,
31
+ 'flat/all': {
32
+ ...allFlat,
33
+ plugins: {
34
+ ...allFlat.plugins,
35
+ get '@atlaskit/volt-strict-mode'() {
36
+ return plugin;
37
+ }
38
+ }
39
+ },
40
+ recommended,
41
+ 'flat/recommended': {
42
+ ...recommendedFlat,
43
+ plugins: {
44
+ ...recommendedFlat.plugins,
45
+ get '@atlaskit/volt-strict-mode'() {
46
+ return plugin;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ };
52
+ export { rules } from './rules/index.codegen';
53
+ export const configs = plugin.configs;
54
+ export const meta = plugin.meta;
55
+ export default plugin;
@@ -0,0 +1 @@
1
+ export { meta, rules, plugin, configs, default } from './index.codegen';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
+ * @codegen <<SignedSource::286ead5ccc36610e29396f5c5a6b0598>>
4
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
5
+ */
6
+
7
+ const config = {
8
+ plugins: {
9
+ // NOTE: The reference to this plugin is inserted dynamically while creating the plugin in `index.codegen.tsx`
10
+ },
11
+ rules: {
12
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
13
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
14
+ }
15
+ };
16
+ export default config;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
+ * @codegen <<SignedSource::646577def73c3f3d33196deeb4eba182>>
4
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
5
+ */
6
+
7
+ const config = {
8
+ plugins: ['@atlaskit/volt-strict-mode'],
9
+ rules: {
10
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
11
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
12
+ }
13
+ };
14
+ export default config;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
+ * @codegen <<SignedSource::286ead5ccc36610e29396f5c5a6b0598>>
4
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
5
+ */
6
+
7
+ const config = {
8
+ plugins: {
9
+ // NOTE: The reference to this plugin is inserted dynamically while creating the plugin in `index.codegen.tsx`
10
+ },
11
+ rules: {
12
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
13
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
14
+ }
15
+ };
16
+ export default config;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
+ * @codegen <<SignedSource::646577def73c3f3d33196deeb4eba182>>
4
+ * @codegenCommand yarn workspace @atlaskit/eslint-plugin-volt-strict-mode codegen
5
+ */
6
+
7
+ const config = {
8
+ plugins: ['@atlaskit/volt-strict-mode'],
9
+ rules: {
10
+ '@atlaskit/volt-strict-mode/no-multiple-exports': 'warn',
11
+ '@atlaskit/volt-strict-mode/no-re-exports': 'warn'
12
+ }
13
+ };
14
+ export default config;