@atlaskit/eslint-plugin-platform 0.7.2 → 0.7.4
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 +16 -0
- package/dist/cjs/index.js +4 -3
- package/dist/cjs/rules/ensure-critical-dependency-resolutions/index.js +4 -4
- package/dist/cjs/rules/ensure-native-and-af-exports-synced/index.js +3 -3
- package/dist/cjs/rules/no-duplicate-dependencies/index.js +3 -3
- package/dist/cjs/rules/no-module-level-eval-nav4/index.js +56 -0
- package/dist/cjs/rules/utils.js +3 -3
- package/dist/es2019/index.js +4 -3
- package/dist/es2019/rules/ensure-critical-dependency-resolutions/index.js +4 -4
- package/dist/es2019/rules/ensure-native-and-af-exports-synced/index.js +3 -3
- package/dist/es2019/rules/no-module-level-eval-nav4/index.js +50 -0
- package/dist/esm/index.js +4 -3
- package/dist/esm/rules/ensure-critical-dependency-resolutions/index.js +4 -4
- package/dist/esm/rules/ensure-native-and-af-exports-synced/index.js +3 -3
- package/dist/esm/rules/no-duplicate-dependencies/index.js +3 -3
- package/dist/esm/rules/no-module-level-eval-nav4/index.js +50 -0
- package/dist/esm/rules/utils.js +3 -3
- package/dist/types/index.d.ts +2 -1
- package/dist/types-ts4.5/index.d.ts +2 -1
- package/index.js +1 -19
- package/package.json +8 -7
- package/src/index.tsx +7 -3
- package/src/rules/ensure-critical-dependency-resolutions/__test__/unit/rule.test.tsx +14 -14
- package/src/rules/ensure-critical-dependency-resolutions/index.tsx +4 -4
- package/src/rules/ensure-native-and-af-exports-synced/index.tsx +3 -3
- package/src/rules/no-module-level-eval-nav4/README.md +8 -0
- package/src/rules/no-module-level-eval-nav4/__tests__/test.tsx +130 -0
- package/src/rules/no-module-level-eval-nav4/index.tsx +67 -0
- package/tsconfig.app.json +5 -1
- package/dist/cjs/rules/ensure-valid-emotion-css-prop/index.js +0 -91
- package/dist/es2019/rules/ensure-valid-emotion-css-prop/index.js +0 -87
- package/dist/esm/rules/ensure-valid-emotion-css-prop/index.js +0 -85
- package/src/rules/ensure-valid-emotion-css-prop/__tests__/unit/rule.test.ts +0 -142
- package/src/rules/ensure-valid-emotion-css-prop/index.ts +0 -96
- /package/dist/types/rules/{ensure-valid-emotion-css-prop → no-module-level-eval-nav4}/index.d.ts +0 -0
- /package/dist/types-ts4.5/rules/{ensure-valid-emotion-css-prop → no-module-level-eval-nav4}/index.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/eslint-plugin-platform
|
|
2
2
|
|
|
3
|
+
## 0.7.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#141306](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/141306)
|
|
8
|
+
[`afce5e7baf293`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/afce5e7baf293) -
|
|
9
|
+
Addition of feature-flags/no-module-level-eval-nav4 eslint rule
|
|
10
|
+
|
|
11
|
+
## 0.7.3
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#122050](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/122050)
|
|
16
|
+
[`db22dc84c34c3`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/db22dc84c34c3) -
|
|
17
|
+
Moves away from the use of ts-node to esbuild-register for local consumption
|
|
18
|
+
|
|
3
19
|
## 0.7.2
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -15,11 +15,11 @@ var _noDuplicateDependencies = _interopRequireDefault(require("./rules/no-duplic
|
|
|
15
15
|
var _noInvalidFeatureFlagUsage = _interopRequireDefault(require("./rules/no-invalid-feature-flag-usage"));
|
|
16
16
|
var _ensureFeatureFlagPrefix = _interopRequireDefault(require("./rules/ensure-feature-flag-prefix"));
|
|
17
17
|
var _ensureCriticalDependencyResolutions = _interopRequireDefault(require("./rules/ensure-critical-dependency-resolutions"));
|
|
18
|
-
var _ensureValidEmotionCssProp = _interopRequireDefault(require("./rules/ensure-valid-emotion-css-prop"));
|
|
19
18
|
var _noInvalidStorybookDecoratorUsage = _interopRequireDefault(require("./rules/no-invalid-storybook-decorator-usage"));
|
|
20
19
|
var _ensurePublishValid = _interopRequireDefault(require("./rules/ensure-publish-valid"));
|
|
21
20
|
var _ensureNativeAndAfExportsSynced = _interopRequireDefault(require("./rules/ensure-native-and-af-exports-synced"));
|
|
22
21
|
var _noModuleLevelEval = _interopRequireDefault(require("./rules/no-module-level-eval"));
|
|
22
|
+
var _noModuleLevelEvalNav = _interopRequireDefault(require("./rules/no-module-level-eval-nav4"));
|
|
23
23
|
var _staticFeatureFlags = _interopRequireDefault(require("./rules/static-feature-flags"));
|
|
24
24
|
var _noPreconditioning = _interopRequireDefault(require("./rules/no-preconditioning"));
|
|
25
25
|
var _inlineUsage = _interopRequireDefault(require("./rules/inline-usage"));
|
|
@@ -35,7 +35,6 @@ var rules = exports.rules = {
|
|
|
35
35
|
'ensure-test-runner-nested-count': _ensureTestRunnerNestedCount.default,
|
|
36
36
|
'ensure-atlassian-team': _ensureAtlassianTeam.default,
|
|
37
37
|
'ensure-critical-dependency-resolutions': _ensureCriticalDependencyResolutions.default,
|
|
38
|
-
'ensure-valid-emotion-css-prop': _ensureValidEmotionCssProp.default,
|
|
39
38
|
'no-duplicate-dependencies': _noDuplicateDependencies.default,
|
|
40
39
|
'no-invalid-feature-flag-usage': _noInvalidFeatureFlagUsage.default,
|
|
41
40
|
'no-pre-post-install-scripts': _noPrePostInstalls.default,
|
|
@@ -43,6 +42,7 @@ var rules = exports.rules = {
|
|
|
43
42
|
'ensure-publish-valid': _ensurePublishValid.default,
|
|
44
43
|
'ensure-native-and-af-exports-synced': _ensureNativeAndAfExportsSynced.default,
|
|
45
44
|
'no-module-level-eval': _noModuleLevelEval.default,
|
|
45
|
+
'no-module-level-eval-nav4': _noModuleLevelEvalNav.default,
|
|
46
46
|
'static-feature-flags': _staticFeatureFlags.default,
|
|
47
47
|
'no-preconditioning': _noPreconditioning.default,
|
|
48
48
|
'inline-usage': _inlineUsage.default,
|
|
@@ -56,7 +56,7 @@ var configs = exports.configs = {
|
|
|
56
56
|
rules: {
|
|
57
57
|
'@atlaskit/platform/ensure-feature-flag-registration': 'error',
|
|
58
58
|
'@atlaskit/platform/ensure-feature-flag-prefix': ['warn', {
|
|
59
|
-
allowedPrefixes: ['platform.']
|
|
59
|
+
allowedPrefixes: ['platform.', 'platform_']
|
|
60
60
|
}],
|
|
61
61
|
'@atlaskit/platform/ensure-test-runner-arguments': 'error',
|
|
62
62
|
'@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
|
|
@@ -64,6 +64,7 @@ var configs = exports.configs = {
|
|
|
64
64
|
'@atlaskit/platform/no-invalid-storybook-decorator-usage': 'error',
|
|
65
65
|
'@atlaskit/platform/ensure-atlassian-team': 'error',
|
|
66
66
|
'@atlaskit/platform/no-module-level-eval': 'error',
|
|
67
|
+
'@atlaskit/platform/no-module-level-eval-nav4': 'error',
|
|
67
68
|
'@atlaskit/platform/static-feature-flags': 'error',
|
|
68
69
|
'@atlaskit/platform/no-preconditioning': 'error',
|
|
69
70
|
'@atlaskit/platform/inline-usage': 'error',
|
|
@@ -17,10 +17,10 @@ var DESIRED_PKG_VERSIONS = {
|
|
|
17
17
|
typescript: ['5.4'],
|
|
18
18
|
tslib: ['2.6'],
|
|
19
19
|
'@types/react': ['16.14', '18.2'],
|
|
20
|
-
'react-relay': ['npm:atl-react-relay@0.0.0-main-
|
|
21
|
-
'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-
|
|
22
|
-
'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-
|
|
23
|
-
'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-
|
|
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']
|
|
24
24
|
};
|
|
25
25
|
var matchMinorVersion = function matchMinorVersion(desiredVersion, versionInResolutions) {
|
|
26
26
|
var firstChar = versionInResolutions[0];
|
|
@@ -13,11 +13,11 @@ var _registrationUtils = require("../util/registration-utils");
|
|
|
13
13
|
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; }
|
|
14
14
|
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; }
|
|
15
15
|
var exportsValidationExceptions = {
|
|
16
|
-
'@atlassian/sizemap': {
|
|
17
|
-
ignoredAfExportKeys: ['.', './lmdb-cache-manager']
|
|
18
|
-
},
|
|
19
16
|
'@atlaskit/tokens': {
|
|
20
17
|
ignoredAfExportKeys: ['./babel-plugin']
|
|
18
|
+
},
|
|
19
|
+
'@atlaskit/storybook-addon-design-system': {
|
|
20
|
+
ignoredAfExportKeys: ['.']
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
var rule = {
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
function _createForOfIteratorHelper(
|
|
10
|
-
function _unsupportedIterableToArray(
|
|
11
|
-
function _arrayLikeToArray(
|
|
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
12
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
13
13
|
|
|
14
14
|
var rule = {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var featureLibraryFunctions = new Set([
|
|
8
|
+
/*
|
|
9
|
+
* STOP!
|
|
10
|
+
*
|
|
11
|
+
* Your code should call the API functions directly!
|
|
12
|
+
* But, we are temporarily adding these methods to prevent SSR builds from breaking
|
|
13
|
+
* while we work out a solution for the features to be evaluated inline.
|
|
14
|
+
* Do not add anything here without the permission of #help-jfp-squads
|
|
15
|
+
*
|
|
16
|
+
* Slack thread: https://atlassian.slack.com/archives/CFGLH1ZS8/p1726449739284819
|
|
17
|
+
*/
|
|
18
|
+
'isVisualRefreshEnabled', 'getWillShowNav4']);
|
|
19
|
+
var isInFunctionLevel = function isInFunctionLevel(context) {
|
|
20
|
+
var scope = context.getScope();
|
|
21
|
+
while (((_scope = scope) === null || _scope === void 0 ? void 0 : _scope.type) !== 'module' && ((_scope2 = scope) === null || _scope2 === void 0 ? void 0 : _scope2.type) !== 'global') {
|
|
22
|
+
var _scope, _scope2;
|
|
23
|
+
if (scope.type === 'function') {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
if (scope.type === 'class-field-initializer') {
|
|
27
|
+
return !scope.block.parent.static;
|
|
28
|
+
}
|
|
29
|
+
scope = scope.upper;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
};
|
|
33
|
+
var rule = {
|
|
34
|
+
meta: {
|
|
35
|
+
docs: {
|
|
36
|
+
description: 'Disallow getWillShowNav4 or isVisualRefreshEnabled usage at module level',
|
|
37
|
+
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
|
+
},
|
|
39
|
+
messages: {
|
|
40
|
+
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`.'
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
create: function create(context) {
|
|
44
|
+
return {
|
|
45
|
+
'CallExpression[callee.type="Identifier"]': function CallExpressionCalleeTypeIdentifier(node) {
|
|
46
|
+
if (node.type === 'CallExpression' && node.callee.type === 'Identifier' && featureLibraryFunctions.has(node.callee.name) && !isInFunctionLevel(context)) {
|
|
47
|
+
context.report({
|
|
48
|
+
messageId: 'noModuleLevelEval',
|
|
49
|
+
node: node
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
var _default = exports.default = rule;
|
package/dist/cjs/rules/utils.js
CHANGED
|
@@ -7,9 +7,9 @@ exports.getDef = getDef;
|
|
|
7
7
|
exports.isAPIimport = isAPIimport;
|
|
8
8
|
exports.isIdentifierImportedFrom = isIdentifierImportedFrom;
|
|
9
9
|
var _constants = require("./constants");
|
|
10
|
-
function _createForOfIteratorHelper(
|
|
11
|
-
function _unsupportedIterableToArray(
|
|
12
|
-
function _arrayLikeToArray(
|
|
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; } } }; }
|
|
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; } }
|
|
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; }
|
|
13
13
|
function isIdentifierImportedFrom(identifierName, sources, context) {
|
|
14
14
|
if (sources.size > 0) {
|
|
15
15
|
var _context$getScope$ref, _context$getScope$ref2;
|
package/dist/es2019/index.js
CHANGED
|
@@ -9,11 +9,11 @@ import noDuplicateDependencies from './rules/no-duplicate-dependencies';
|
|
|
9
9
|
import noInvalidFeatureFlagUsage from './rules/no-invalid-feature-flag-usage';
|
|
10
10
|
import ensureFeatureFlagPrefix from './rules/ensure-feature-flag-prefix';
|
|
11
11
|
import ensureCriticalDependencyResolutions from './rules/ensure-critical-dependency-resolutions';
|
|
12
|
-
import ensureValidEmotionCssProp from './rules/ensure-valid-emotion-css-prop';
|
|
13
12
|
import noInvalidStorybookDecoratorUsage from './rules/no-invalid-storybook-decorator-usage';
|
|
14
13
|
import ensurePublishValid from './rules/ensure-publish-valid';
|
|
15
14
|
import ensureNativeAndAfExportsSynced from './rules/ensure-native-and-af-exports-synced';
|
|
16
15
|
import noModuleLevelEval from './rules/no-module-level-eval';
|
|
16
|
+
import noModuleLevelEvalNav4 from './rules/no-module-level-eval-nav4';
|
|
17
17
|
import staticFeatureFlags from './rules/static-feature-flags';
|
|
18
18
|
import noPreconditioning from './rules/no-preconditioning';
|
|
19
19
|
import inlineUsage from './rules/inline-usage';
|
|
@@ -27,7 +27,6 @@ export const rules = {
|
|
|
27
27
|
'ensure-test-runner-nested-count': ensureTestRunnerNestedCount,
|
|
28
28
|
'ensure-atlassian-team': ensureAtlassianTeam,
|
|
29
29
|
'ensure-critical-dependency-resolutions': ensureCriticalDependencyResolutions,
|
|
30
|
-
'ensure-valid-emotion-css-prop': ensureValidEmotionCssProp,
|
|
31
30
|
'no-duplicate-dependencies': noDuplicateDependencies,
|
|
32
31
|
'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage,
|
|
33
32
|
'no-pre-post-install-scripts': noPreAndPostInstallScripts,
|
|
@@ -35,6 +34,7 @@ export const rules = {
|
|
|
35
34
|
'ensure-publish-valid': ensurePublishValid,
|
|
36
35
|
'ensure-native-and-af-exports-synced': ensureNativeAndAfExportsSynced,
|
|
37
36
|
'no-module-level-eval': noModuleLevelEval,
|
|
37
|
+
'no-module-level-eval-nav4': noModuleLevelEvalNav4,
|
|
38
38
|
'static-feature-flags': staticFeatureFlags,
|
|
39
39
|
'no-preconditioning': noPreconditioning,
|
|
40
40
|
'inline-usage': inlineUsage,
|
|
@@ -48,7 +48,7 @@ export const configs = {
|
|
|
48
48
|
rules: {
|
|
49
49
|
'@atlaskit/platform/ensure-feature-flag-registration': 'error',
|
|
50
50
|
'@atlaskit/platform/ensure-feature-flag-prefix': ['warn', {
|
|
51
|
-
allowedPrefixes: ['platform.']
|
|
51
|
+
allowedPrefixes: ['platform.', 'platform_']
|
|
52
52
|
}],
|
|
53
53
|
'@atlaskit/platform/ensure-test-runner-arguments': 'error',
|
|
54
54
|
'@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
|
|
@@ -56,6 +56,7 @@ export const configs = {
|
|
|
56
56
|
'@atlaskit/platform/no-invalid-storybook-decorator-usage': 'error',
|
|
57
57
|
'@atlaskit/platform/ensure-atlassian-team': 'error',
|
|
58
58
|
'@atlaskit/platform/no-module-level-eval': 'error',
|
|
59
|
+
'@atlaskit/platform/no-module-level-eval-nav4': 'error',
|
|
59
60
|
'@atlaskit/platform/static-feature-flags': 'error',
|
|
60
61
|
'@atlaskit/platform/no-preconditioning': 'error',
|
|
61
62
|
'@atlaskit/platform/inline-usage': 'error',
|
|
@@ -10,10 +10,10 @@ const DESIRED_PKG_VERSIONS = {
|
|
|
10
10
|
typescript: ['5.4'],
|
|
11
11
|
tslib: ['2.6'],
|
|
12
12
|
'@types/react': ['16.14', '18.2'],
|
|
13
|
-
'react-relay': ['npm:atl-react-relay@0.0.0-main-
|
|
14
|
-
'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-
|
|
15
|
-
'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-
|
|
16
|
-
'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-
|
|
13
|
+
'react-relay': ['npm:atl-react-relay@0.0.0-main-5980a913'],
|
|
14
|
+
'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-5980a913'],
|
|
15
|
+
'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-5980a913'],
|
|
16
|
+
'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-5980a913']
|
|
17
17
|
};
|
|
18
18
|
const matchMinorVersion = (desiredVersion, versionInResolutions) => {
|
|
19
19
|
const firstChar = versionInResolutions[0];
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { getMetadataForFilename } from '../util/registration-utils';
|
|
3
3
|
const exportsValidationExceptions = {
|
|
4
|
-
'@atlassian/sizemap': {
|
|
5
|
-
ignoredAfExportKeys: ['.', './lmdb-cache-manager']
|
|
6
|
-
},
|
|
7
4
|
'@atlaskit/tokens': {
|
|
8
5
|
ignoredAfExportKeys: ['./babel-plugin']
|
|
6
|
+
},
|
|
7
|
+
'@atlaskit/storybook-addon-design-system': {
|
|
8
|
+
ignoredAfExportKeys: ['.']
|
|
9
9
|
}
|
|
10
10
|
};
|
|
11
11
|
const rule = {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const featureLibraryFunctions = new Set([
|
|
2
|
+
/*
|
|
3
|
+
* STOP!
|
|
4
|
+
*
|
|
5
|
+
* Your code should call the API functions directly!
|
|
6
|
+
* But, we are temporarily adding these methods to prevent SSR builds from breaking
|
|
7
|
+
* while we work out a solution for the features to be evaluated inline.
|
|
8
|
+
* Do not add anything here without the permission of #help-jfp-squads
|
|
9
|
+
*
|
|
10
|
+
* Slack thread: https://atlassian.slack.com/archives/CFGLH1ZS8/p1726449739284819
|
|
11
|
+
*/
|
|
12
|
+
'isVisualRefreshEnabled', 'getWillShowNav4']);
|
|
13
|
+
const isInFunctionLevel = context => {
|
|
14
|
+
let scope = context.getScope();
|
|
15
|
+
while (((_scope = scope) === null || _scope === void 0 ? void 0 : _scope.type) !== 'module' && ((_scope2 = scope) === null || _scope2 === void 0 ? void 0 : _scope2.type) !== 'global') {
|
|
16
|
+
var _scope, _scope2;
|
|
17
|
+
if (scope.type === 'function') {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if (scope.type === 'class-field-initializer') {
|
|
21
|
+
return !scope.block.parent.static;
|
|
22
|
+
}
|
|
23
|
+
scope = scope.upper;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
};
|
|
27
|
+
const rule = {
|
|
28
|
+
meta: {
|
|
29
|
+
docs: {
|
|
30
|
+
description: 'Disallow getWillShowNav4 or isVisualRefreshEnabled usage at module level',
|
|
31
|
+
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'
|
|
32
|
+
},
|
|
33
|
+
messages: {
|
|
34
|
+
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`.'
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
create(context) {
|
|
38
|
+
return {
|
|
39
|
+
'CallExpression[callee.type="Identifier"]': node => {
|
|
40
|
+
if (node.type === 'CallExpression' && node.callee.type === 'Identifier' && featureLibraryFunctions.has(node.callee.name) && !isInFunctionLevel(context)) {
|
|
41
|
+
context.report({
|
|
42
|
+
messageId: 'noModuleLevelEval',
|
|
43
|
+
node
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
export default rule;
|
package/dist/esm/index.js
CHANGED
|
@@ -12,11 +12,11 @@ import noDuplicateDependencies from './rules/no-duplicate-dependencies';
|
|
|
12
12
|
import noInvalidFeatureFlagUsage from './rules/no-invalid-feature-flag-usage';
|
|
13
13
|
import ensureFeatureFlagPrefix from './rules/ensure-feature-flag-prefix';
|
|
14
14
|
import ensureCriticalDependencyResolutions from './rules/ensure-critical-dependency-resolutions';
|
|
15
|
-
import ensureValidEmotionCssProp from './rules/ensure-valid-emotion-css-prop';
|
|
16
15
|
import noInvalidStorybookDecoratorUsage from './rules/no-invalid-storybook-decorator-usage';
|
|
17
16
|
import ensurePublishValid from './rules/ensure-publish-valid';
|
|
18
17
|
import ensureNativeAndAfExportsSynced from './rules/ensure-native-and-af-exports-synced';
|
|
19
18
|
import noModuleLevelEval from './rules/no-module-level-eval';
|
|
19
|
+
import noModuleLevelEvalNav4 from './rules/no-module-level-eval-nav4';
|
|
20
20
|
import staticFeatureFlags from './rules/static-feature-flags';
|
|
21
21
|
import noPreconditioning from './rules/no-preconditioning';
|
|
22
22
|
import inlineUsage from './rules/inline-usage';
|
|
@@ -30,7 +30,6 @@ export var rules = {
|
|
|
30
30
|
'ensure-test-runner-nested-count': ensureTestRunnerNestedCount,
|
|
31
31
|
'ensure-atlassian-team': ensureAtlassianTeam,
|
|
32
32
|
'ensure-critical-dependency-resolutions': ensureCriticalDependencyResolutions,
|
|
33
|
-
'ensure-valid-emotion-css-prop': ensureValidEmotionCssProp,
|
|
34
33
|
'no-duplicate-dependencies': noDuplicateDependencies,
|
|
35
34
|
'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage,
|
|
36
35
|
'no-pre-post-install-scripts': noPreAndPostInstallScripts,
|
|
@@ -38,6 +37,7 @@ export var rules = {
|
|
|
38
37
|
'ensure-publish-valid': ensurePublishValid,
|
|
39
38
|
'ensure-native-and-af-exports-synced': ensureNativeAndAfExportsSynced,
|
|
40
39
|
'no-module-level-eval': noModuleLevelEval,
|
|
40
|
+
'no-module-level-eval-nav4': noModuleLevelEvalNav4,
|
|
41
41
|
'static-feature-flags': staticFeatureFlags,
|
|
42
42
|
'no-preconditioning': noPreconditioning,
|
|
43
43
|
'inline-usage': inlineUsage,
|
|
@@ -51,7 +51,7 @@ export var configs = {
|
|
|
51
51
|
rules: {
|
|
52
52
|
'@atlaskit/platform/ensure-feature-flag-registration': 'error',
|
|
53
53
|
'@atlaskit/platform/ensure-feature-flag-prefix': ['warn', {
|
|
54
|
-
allowedPrefixes: ['platform.']
|
|
54
|
+
allowedPrefixes: ['platform.', 'platform_']
|
|
55
55
|
}],
|
|
56
56
|
'@atlaskit/platform/ensure-test-runner-arguments': 'error',
|
|
57
57
|
'@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
|
|
@@ -59,6 +59,7 @@ export var configs = {
|
|
|
59
59
|
'@atlaskit/platform/no-invalid-storybook-decorator-usage': 'error',
|
|
60
60
|
'@atlaskit/platform/ensure-atlassian-team': 'error',
|
|
61
61
|
'@atlaskit/platform/no-module-level-eval': 'error',
|
|
62
|
+
'@atlaskit/platform/no-module-level-eval-nav4': 'error',
|
|
62
63
|
'@atlaskit/platform/static-feature-flags': 'error',
|
|
63
64
|
'@atlaskit/platform/no-preconditioning': 'error',
|
|
64
65
|
'@atlaskit/platform/inline-usage': 'error',
|
|
@@ -11,10 +11,10 @@ var DESIRED_PKG_VERSIONS = {
|
|
|
11
11
|
typescript: ['5.4'],
|
|
12
12
|
tslib: ['2.6'],
|
|
13
13
|
'@types/react': ['16.14', '18.2'],
|
|
14
|
-
'react-relay': ['npm:atl-react-relay@0.0.0-main-
|
|
15
|
-
'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-
|
|
16
|
-
'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-
|
|
17
|
-
'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-
|
|
14
|
+
'react-relay': ['npm:atl-react-relay@0.0.0-main-5980a913'],
|
|
15
|
+
'relay-compiler': ['npm:atl-relay-compiler@0.0.0-main-5980a913'],
|
|
16
|
+
'relay-runtime': ['npm:atl-relay-runtime@0.0.0-main-5980a913'],
|
|
17
|
+
'relay-test-utils': ['npm:atl-relay-test-utils@0.0.0-main-5980a913']
|
|
18
18
|
};
|
|
19
19
|
var matchMinorVersion = function matchMinorVersion(desiredVersion, versionInResolutions) {
|
|
20
20
|
var firstChar = versionInResolutions[0];
|
|
@@ -6,11 +6,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { getMetadataForFilename } from '../util/registration-utils';
|
|
8
8
|
var exportsValidationExceptions = {
|
|
9
|
-
'@atlassian/sizemap': {
|
|
10
|
-
ignoredAfExportKeys: ['.', './lmdb-cache-manager']
|
|
11
|
-
},
|
|
12
9
|
'@atlaskit/tokens': {
|
|
13
10
|
ignoredAfExportKeys: ['./babel-plugin']
|
|
11
|
+
},
|
|
12
|
+
'@atlaskit/storybook-addon-design-system': {
|
|
13
|
+
ignoredAfExportKeys: ['.']
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
var rule = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
function _createForOfIteratorHelper(
|
|
3
|
-
function _unsupportedIterableToArray(
|
|
4
|
-
function _arrayLikeToArray(
|
|
2
|
+
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; } } }; }
|
|
3
|
+
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; } }
|
|
4
|
+
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; }
|
|
5
5
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
6
6
|
|
|
7
7
|
var rule = {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var featureLibraryFunctions = new Set([
|
|
2
|
+
/*
|
|
3
|
+
* STOP!
|
|
4
|
+
*
|
|
5
|
+
* Your code should call the API functions directly!
|
|
6
|
+
* But, we are temporarily adding these methods to prevent SSR builds from breaking
|
|
7
|
+
* while we work out a solution for the features to be evaluated inline.
|
|
8
|
+
* Do not add anything here without the permission of #help-jfp-squads
|
|
9
|
+
*
|
|
10
|
+
* Slack thread: https://atlassian.slack.com/archives/CFGLH1ZS8/p1726449739284819
|
|
11
|
+
*/
|
|
12
|
+
'isVisualRefreshEnabled', 'getWillShowNav4']);
|
|
13
|
+
var isInFunctionLevel = function isInFunctionLevel(context) {
|
|
14
|
+
var scope = context.getScope();
|
|
15
|
+
while (((_scope = scope) === null || _scope === void 0 ? void 0 : _scope.type) !== 'module' && ((_scope2 = scope) === null || _scope2 === void 0 ? void 0 : _scope2.type) !== 'global') {
|
|
16
|
+
var _scope, _scope2;
|
|
17
|
+
if (scope.type === 'function') {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if (scope.type === 'class-field-initializer') {
|
|
21
|
+
return !scope.block.parent.static;
|
|
22
|
+
}
|
|
23
|
+
scope = scope.upper;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
};
|
|
27
|
+
var rule = {
|
|
28
|
+
meta: {
|
|
29
|
+
docs: {
|
|
30
|
+
description: 'Disallow getWillShowNav4 or isVisualRefreshEnabled usage at module level',
|
|
31
|
+
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'
|
|
32
|
+
},
|
|
33
|
+
messages: {
|
|
34
|
+
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`.'
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
create: function create(context) {
|
|
38
|
+
return {
|
|
39
|
+
'CallExpression[callee.type="Identifier"]': function CallExpressionCalleeTypeIdentifier(node) {
|
|
40
|
+
if (node.type === 'CallExpression' && node.callee.type === 'Identifier' && featureLibraryFunctions.has(node.callee.name) && !isInFunctionLevel(context)) {
|
|
41
|
+
context.report({
|
|
42
|
+
messageId: 'noModuleLevelEval',
|
|
43
|
+
node: node
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
export default rule;
|
package/dist/esm/rules/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function _createForOfIteratorHelper(
|
|
2
|
-
function _unsupportedIterableToArray(
|
|
3
|
-
function _arrayLikeToArray(
|
|
1
|
+
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; } } }; }
|
|
2
|
+
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; } }
|
|
3
|
+
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; }
|
|
4
4
|
import { FEATURE_API_IMPORT_SOURCES } from './constants';
|
|
5
5
|
export function isIdentifierImportedFrom(identifierName, sources, context) {
|
|
6
6
|
if (sources.size > 0) {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export declare const rules: {
|
|
|
6
6
|
'ensure-test-runner-nested-count': import("eslint").Rule.RuleModule;
|
|
7
7
|
'ensure-atlassian-team': import("eslint").Rule.RuleModule;
|
|
8
8
|
'ensure-critical-dependency-resolutions': import("eslint").Rule.RuleModule;
|
|
9
|
-
'ensure-valid-emotion-css-prop': import("eslint").Rule.RuleModule;
|
|
10
9
|
'no-duplicate-dependencies': import("eslint").Rule.RuleModule;
|
|
11
10
|
'no-invalid-feature-flag-usage': import("eslint").Rule.RuleModule;
|
|
12
11
|
'no-pre-post-install-scripts': import("eslint").Rule.RuleModule;
|
|
@@ -14,6 +13,7 @@ export declare const rules: {
|
|
|
14
13
|
'ensure-publish-valid': import("eslint").Rule.RuleModule;
|
|
15
14
|
'ensure-native-and-af-exports-synced': import("eslint").Rule.RuleModule;
|
|
16
15
|
'no-module-level-eval': import("eslint").Rule.RuleModule;
|
|
16
|
+
'no-module-level-eval-nav4': import("eslint").Rule.RuleModule;
|
|
17
17
|
'static-feature-flags': import("eslint").Rule.RuleModule;
|
|
18
18
|
'no-preconditioning': import("eslint").Rule.RuleModule;
|
|
19
19
|
'inline-usage': import("eslint").Rule.RuleModule;
|
|
@@ -35,6 +35,7 @@ export declare const configs: {
|
|
|
35
35
|
'@atlaskit/platform/no-invalid-storybook-decorator-usage': string;
|
|
36
36
|
'@atlaskit/platform/ensure-atlassian-team': string;
|
|
37
37
|
'@atlaskit/platform/no-module-level-eval': string;
|
|
38
|
+
'@atlaskit/platform/no-module-level-eval-nav4': string;
|
|
38
39
|
'@atlaskit/platform/static-feature-flags': string;
|
|
39
40
|
'@atlaskit/platform/no-preconditioning': string;
|
|
40
41
|
'@atlaskit/platform/inline-usage': string;
|
|
@@ -6,7 +6,6 @@ export declare const rules: {
|
|
|
6
6
|
'ensure-test-runner-nested-count': import("eslint").Rule.RuleModule;
|
|
7
7
|
'ensure-atlassian-team': import("eslint").Rule.RuleModule;
|
|
8
8
|
'ensure-critical-dependency-resolutions': import("eslint").Rule.RuleModule;
|
|
9
|
-
'ensure-valid-emotion-css-prop': import("eslint").Rule.RuleModule;
|
|
10
9
|
'no-duplicate-dependencies': import("eslint").Rule.RuleModule;
|
|
11
10
|
'no-invalid-feature-flag-usage': import("eslint").Rule.RuleModule;
|
|
12
11
|
'no-pre-post-install-scripts': import("eslint").Rule.RuleModule;
|
|
@@ -14,6 +13,7 @@ export declare const rules: {
|
|
|
14
13
|
'ensure-publish-valid': import("eslint").Rule.RuleModule;
|
|
15
14
|
'ensure-native-and-af-exports-synced': import("eslint").Rule.RuleModule;
|
|
16
15
|
'no-module-level-eval': import("eslint").Rule.RuleModule;
|
|
16
|
+
'no-module-level-eval-nav4': import("eslint").Rule.RuleModule;
|
|
17
17
|
'static-feature-flags': import("eslint").Rule.RuleModule;
|
|
18
18
|
'no-preconditioning': import("eslint").Rule.RuleModule;
|
|
19
19
|
'inline-usage': import("eslint").Rule.RuleModule;
|
|
@@ -35,6 +35,7 @@ export declare const configs: {
|
|
|
35
35
|
'@atlaskit/platform/no-invalid-storybook-decorator-usage': string;
|
|
36
36
|
'@atlaskit/platform/ensure-atlassian-team': string;
|
|
37
37
|
'@atlaskit/platform/no-module-level-eval': string;
|
|
38
|
+
'@atlaskit/platform/no-module-level-eval-nav4': string;
|
|
38
39
|
'@atlaskit/platform/static-feature-flags': string;
|
|
39
40
|
'@atlaskit/platform/no-preconditioning': string;
|
|
40
41
|
'@atlaskit/platform/inline-usage': string;
|
package/index.js
CHANGED
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
2
|
/* eslint-disable global-require */
|
|
3
3
|
// Used only for internal repo usage.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const paths = require('tsconfig-paths');
|
|
7
|
-
|
|
8
|
-
if (!require.extensions['.ts']) {
|
|
9
|
-
// ts-node can only handle being registered once, see https://github.com/TypeStrong/ts-node/issues/409
|
|
10
|
-
require('ts-node').register({
|
|
11
|
-
project: path.join(__dirname, 'tsconfig.json'),
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
try {
|
|
16
|
-
// We programatically register tsconfig paths here so it picks up the tsconfig here
|
|
17
|
-
// instead of in root CWD.
|
|
18
|
-
paths.register(paths.loadConfig(__dirname));
|
|
19
|
-
} catch (e) {
|
|
20
|
-
// eslint-disable-next-line no-console
|
|
21
|
-
console.log(e);
|
|
22
|
-
}
|
|
4
|
+
require('@atlassian/ts-loader');
|
|
23
5
|
|
|
24
6
|
module.exports = require('./src/index');
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/eslint-plugin-platform",
|
|
3
3
|
"description": "The essential plugin for use with Atlassian frontend platform tools",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.4",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"atlassian": {
|
|
7
|
-
"team": "UIP
|
|
8
|
-
"
|
|
9
|
-
|
|
7
|
+
"team": "UIP Dev Infra",
|
|
8
|
+
"toolingLabels": [
|
|
9
|
+
"linting"
|
|
10
|
+
]
|
|
10
11
|
},
|
|
11
12
|
"publishConfig": {
|
|
12
13
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -36,9 +37,9 @@
|
|
|
36
37
|
"read-pkg-up": "^7.0.1"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
40
|
+
"@atlassian/ts-loader": "*",
|
|
39
41
|
"@types/eslint": "^8.56.6",
|
|
40
|
-
"eslint": "^8.
|
|
41
|
-
"outdent": "^0.5.0"
|
|
42
|
-
"tsconfig-paths": "^4.2.0"
|
|
42
|
+
"eslint": "^8.57.0",
|
|
43
|
+
"outdent": "^0.5.0"
|
|
43
44
|
}
|
|
44
45
|
}
|