@atlaskit/eslint-plugin-platform 0.0.7 → 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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/eslint-plugin-platform
2
2
 
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`6339334e3ac`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6339334e3ac) - Adds new rule to disallow pre/post install scripts in package.json.
8
+
3
9
  ## 0.0.7
4
10
 
5
11
  ### Patch Changes
package/dist/cjs/index.js CHANGED
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.rules = exports.configs = void 0;
7
+ exports.rules = exports.processors = exports.configs = void 0;
8
8
  var _ensureFeatureFlagRegistration = _interopRequireDefault(require("./rules/ensure-feature-flag-registration"));
9
+ var _noPrePostInstalls = _interopRequireDefault(require("./rules/no-pre-post-installs"));
9
10
  var _ensureTestRunnerArguments = _interopRequireDefault(require("./rules/ensure-test-runner-arguments"));
10
11
  var _ensureTestRunnerNestedCount = _interopRequireDefault(require("./rules/ensure-test-runner-nested-count"));
11
12
  var _noInvalidFeatureFlagUsage = _interopRequireDefault(require("./rules/no-invalid-feature-flag-usage"));
@@ -13,7 +14,8 @@ var rules = {
13
14
  'ensure-feature-flag-registration': _ensureFeatureFlagRegistration.default,
14
15
  'ensure-test-runner-arguments': _ensureTestRunnerArguments.default,
15
16
  'ensure-test-runner-nested-count': _ensureTestRunnerNestedCount.default,
16
- 'no-invalid-feature-flag-usage': _noInvalidFeatureFlagUsage.default
17
+ 'no-invalid-feature-flag-usage': _noInvalidFeatureFlagUsage.default,
18
+ 'no-pre-post-install-scripts': _noPrePostInstalls.default
17
19
  };
18
20
  exports.rules = rules;
19
21
  var configs = {
@@ -21,10 +23,23 @@ var configs = {
21
23
  plugins: ['@atlaskit/platform'],
22
24
  rules: {
23
25
  '@atlaskit/platform/ensure-feature-flag-registration': 'error',
26
+ '@atlaskit/platform/no-pre-post-install-scripts': 'error',
24
27
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
25
28
  '@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
26
29
  '@atlaskit/platform/no-invalid-feature-flag-usage': 'error'
27
30
  }
28
31
  }
29
32
  };
30
- exports.configs = configs;
33
+ exports.configs = configs;
34
+ var processors = {
35
+ 'package-json-processor': {
36
+ preprocess: function preprocess(source) {
37
+ // augment the json into a js file
38
+ return ["/* eslint-disable quote-props, comma-dangle, quotes, semi, eol-last, @typescript-eslint/semi, no-template-curly-in-string */ module.exports = ".concat(source.trim())];
39
+ },
40
+ postprocess: function postprocess(errors) {
41
+ return errors[0];
42
+ }
43
+ }
44
+ };
45
+ exports.processors = processors;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var rule = {
8
+ meta: {
9
+ type: 'problem',
10
+ docs: {
11
+ description: 'This rule disallows public packages to have pre/post install scripts as installations can happen on different environments',
12
+ recommended: false
13
+ },
14
+ hasSuggestions: false,
15
+ messages: {
16
+ prePostInstallScriptsNotAllowed: 'pre/post install scripts not allowed in package.json'
17
+ }
18
+ },
19
+ create: function create(context) {
20
+ return {
21
+ 'ObjectExpression Property[key.value=scripts] Property[key.value=/^(pre|post)install$/]': function ObjectExpressionPropertyKeyValueScriptsPropertyKeyValuePrePostInstall$(node) {
22
+ if (!context.getFilename().endsWith('/package.json')) {
23
+ return;
24
+ }
25
+ return context.report({
26
+ node: node,
27
+ messageId: 'prePostInstallScriptsNotAllowed'
28
+ });
29
+ }
30
+ };
31
+ }
32
+ };
33
+ var _default = rule;
34
+ exports.default = _default;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/eslint-plugin-platform",
3
- "version": "0.0.7",
3
+ "version": "0.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,4 +1,5 @@
1
1
  import ensureFeatureFlagRegistration from './rules/ensure-feature-flag-registration';
2
+ import noPreAndPostInstallScripts from './rules/no-pre-post-installs';
2
3
  import ensureTestRunnerArguments from './rules/ensure-test-runner-arguments';
3
4
  import ensureTestRunnerNestedCount from './rules/ensure-test-runner-nested-count';
4
5
  import noInvalidFeatureFlagUsage from './rules/no-invalid-feature-flag-usage';
@@ -6,16 +7,27 @@ export const rules = {
6
7
  'ensure-feature-flag-registration': ensureFeatureFlagRegistration,
7
8
  'ensure-test-runner-arguments': ensureTestRunnerArguments,
8
9
  'ensure-test-runner-nested-count': ensureTestRunnerNestedCount,
9
- 'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage
10
+ 'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage,
11
+ 'no-pre-post-install-scripts': noPreAndPostInstallScripts
10
12
  };
11
13
  export const configs = {
12
14
  recommended: {
13
15
  plugins: ['@atlaskit/platform'],
14
16
  rules: {
15
17
  '@atlaskit/platform/ensure-feature-flag-registration': 'error',
18
+ '@atlaskit/platform/no-pre-post-install-scripts': 'error',
16
19
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
17
20
  '@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
18
21
  '@atlaskit/platform/no-invalid-feature-flag-usage': 'error'
19
22
  }
20
23
  }
24
+ };
25
+ export const processors = {
26
+ 'package-json-processor': {
27
+ preprocess: source => {
28
+ // augment the json into a js file
29
+ return [`/* eslint-disable quote-props, comma-dangle, quotes, semi, eol-last, @typescript-eslint/semi, no-template-curly-in-string */ module.exports = ${source.trim()}`];
30
+ },
31
+ postprocess: errors => errors[0]
32
+ }
21
33
  };
@@ -0,0 +1,27 @@
1
+ const rule = {
2
+ meta: {
3
+ type: 'problem',
4
+ docs: {
5
+ description: 'This rule disallows public packages to have pre/post install scripts as installations can happen on different environments',
6
+ recommended: false
7
+ },
8
+ hasSuggestions: false,
9
+ messages: {
10
+ prePostInstallScriptsNotAllowed: 'pre/post install scripts not allowed in package.json'
11
+ }
12
+ },
13
+ create(context) {
14
+ return {
15
+ 'ObjectExpression Property[key.value=scripts] Property[key.value=/^(pre|post)install$/]': node => {
16
+ if (!context.getFilename().endsWith('/package.json')) {
17
+ return;
18
+ }
19
+ return context.report({
20
+ node,
21
+ messageId: 'prePostInstallScriptsNotAllowed'
22
+ });
23
+ }
24
+ };
25
+ }
26
+ };
27
+ export default rule;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/eslint-plugin-platform",
3
- "version": "0.0.7",
3
+ "version": "0.1.0",
4
4
  "sideEffects": false
5
5
  }
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import ensureFeatureFlagRegistration from './rules/ensure-feature-flag-registration';
2
+ import noPreAndPostInstallScripts from './rules/no-pre-post-installs';
2
3
  import ensureTestRunnerArguments from './rules/ensure-test-runner-arguments';
3
4
  import ensureTestRunnerNestedCount from './rules/ensure-test-runner-nested-count';
4
5
  import noInvalidFeatureFlagUsage from './rules/no-invalid-feature-flag-usage';
@@ -6,16 +7,29 @@ export var rules = {
6
7
  'ensure-feature-flag-registration': ensureFeatureFlagRegistration,
7
8
  'ensure-test-runner-arguments': ensureTestRunnerArguments,
8
9
  'ensure-test-runner-nested-count': ensureTestRunnerNestedCount,
9
- 'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage
10
+ 'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage,
11
+ 'no-pre-post-install-scripts': noPreAndPostInstallScripts
10
12
  };
11
13
  export var configs = {
12
14
  recommended: {
13
15
  plugins: ['@atlaskit/platform'],
14
16
  rules: {
15
17
  '@atlaskit/platform/ensure-feature-flag-registration': 'error',
18
+ '@atlaskit/platform/no-pre-post-install-scripts': 'error',
16
19
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
17
20
  '@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
18
21
  '@atlaskit/platform/no-invalid-feature-flag-usage': 'error'
19
22
  }
20
23
  }
24
+ };
25
+ export var processors = {
26
+ 'package-json-processor': {
27
+ preprocess: function preprocess(source) {
28
+ // augment the json into a js file
29
+ return ["/* eslint-disable quote-props, comma-dangle, quotes, semi, eol-last, @typescript-eslint/semi, no-template-curly-in-string */ module.exports = ".concat(source.trim())];
30
+ },
31
+ postprocess: function postprocess(errors) {
32
+ return errors[0];
33
+ }
34
+ }
21
35
  };
@@ -0,0 +1,27 @@
1
+ var rule = {
2
+ meta: {
3
+ type: 'problem',
4
+ docs: {
5
+ description: 'This rule disallows public packages to have pre/post install scripts as installations can happen on different environments',
6
+ recommended: false
7
+ },
8
+ hasSuggestions: false,
9
+ messages: {
10
+ prePostInstallScriptsNotAllowed: 'pre/post install scripts not allowed in package.json'
11
+ }
12
+ },
13
+ create: function create(context) {
14
+ return {
15
+ 'ObjectExpression Property[key.value=scripts] Property[key.value=/^(pre|post)install$/]': function ObjectExpressionPropertyKeyValueScriptsPropertyKeyValuePrePostInstall$(node) {
16
+ if (!context.getFilename().endsWith('/package.json')) {
17
+ return;
18
+ }
19
+ return context.report({
20
+ node: node,
21
+ messageId: 'prePostInstallScriptsNotAllowed'
22
+ });
23
+ }
24
+ };
25
+ }
26
+ };
27
+ export default rule;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/eslint-plugin-platform",
3
- "version": "0.0.7",
3
+ "version": "0.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,17 +1,23 @@
1
+ import type { Linter } from 'eslint';
1
2
  export declare const rules: {
2
3
  'ensure-feature-flag-registration': import("eslint").Rule.RuleModule;
3
4
  'ensure-test-runner-arguments': import("eslint").Rule.RuleModule;
4
5
  'ensure-test-runner-nested-count': import("eslint").Rule.RuleModule;
5
6
  'no-invalid-feature-flag-usage': import("eslint").Rule.RuleModule;
7
+ 'no-pre-post-install-scripts': import("eslint").Rule.RuleModule;
6
8
  };
7
9
  export declare const configs: {
8
10
  recommended: {
9
11
  plugins: string[];
10
12
  rules: {
11
13
  '@atlaskit/platform/ensure-feature-flag-registration': string;
14
+ '@atlaskit/platform/no-pre-post-install-scripts': string;
12
15
  '@atlaskit/platform/ensure-test-runner-arguments': string;
13
16
  '@atlaskit/platform/ensure-test-runner-nested-count': string;
14
17
  '@atlaskit/platform/no-invalid-feature-flag-usage': string;
15
18
  };
16
19
  };
17
20
  };
21
+ export declare const processors: {
22
+ 'package-json-processor': Linter.Processor<string | Linter.ProcessorFile>;
23
+ };
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
package/package.json CHANGED
@@ -1,7 +1,7 @@
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.0.7",
4
+ "version": "0.1.0",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "atlassian": {
7
7
  "team": "UIP - Platform Integration Trust (PITa)",
package/report.api.md CHANGED
@@ -15,6 +15,7 @@
15
15
  <!--SECTION START: Main Entry Types-->
16
16
 
17
17
  ```ts
18
+ import type { Linter } from 'eslint';
18
19
  import { Rule } from 'eslint';
19
20
 
20
21
  // @public (undocumented)
@@ -23,6 +24,7 @@ export const configs: {
23
24
  plugins: string[];
24
25
  rules: {
25
26
  '@atlaskit/platform/ensure-feature-flag-registration': string;
27
+ '@atlaskit/platform/no-pre-post-install-scripts': string;
26
28
  '@atlaskit/platform/ensure-test-runner-arguments': string;
27
29
  '@atlaskit/platform/ensure-test-runner-nested-count': string;
28
30
  '@atlaskit/platform/no-invalid-feature-flag-usage': string;
@@ -30,12 +32,18 @@ export const configs: {
30
32
  };
31
33
  };
32
34
 
35
+ // @public (undocumented)
36
+ export const processors: {
37
+ 'package-json-processor': Linter.Processor<Linter.ProcessorFile | string>;
38
+ };
39
+
33
40
  // @public (undocumented)
34
41
  export const rules: {
35
42
  'ensure-feature-flag-registration': Rule.RuleModule;
36
43
  'ensure-test-runner-arguments': Rule.RuleModule;
37
44
  'ensure-test-runner-nested-count': Rule.RuleModule;
38
45
  'no-invalid-feature-flag-usage': Rule.RuleModule;
46
+ 'no-pre-post-install-scripts': Rule.RuleModule;
39
47
  };
40
48
 
41
49
  // (No @packageDocumentation comment for this package)
package/src/index.tsx CHANGED
@@ -1,4 +1,6 @@
1
+ import type { Linter } from 'eslint';
1
2
  import ensureFeatureFlagRegistration from './rules/ensure-feature-flag-registration';
3
+ import noPreAndPostInstallScripts from './rules/no-pre-post-installs';
2
4
  import ensureTestRunnerArguments from './rules/ensure-test-runner-arguments';
3
5
  import ensureTestRunnerNestedCount from './rules/ensure-test-runner-nested-count';
4
6
  import noInvalidFeatureFlagUsage from './rules/no-invalid-feature-flag-usage';
@@ -8,6 +10,7 @@ export const rules = {
8
10
  'ensure-test-runner-arguments': ensureTestRunnerArguments,
9
11
  'ensure-test-runner-nested-count': ensureTestRunnerNestedCount,
10
12
  'no-invalid-feature-flag-usage': noInvalidFeatureFlagUsage,
13
+ 'no-pre-post-install-scripts': noPreAndPostInstallScripts,
11
14
  };
12
15
 
13
16
  export const configs = {
@@ -15,9 +18,22 @@ export const configs = {
15
18
  plugins: ['@atlaskit/platform'],
16
19
  rules: {
17
20
  '@atlaskit/platform/ensure-feature-flag-registration': 'error',
21
+ '@atlaskit/platform/no-pre-post-install-scripts': 'error',
18
22
  '@atlaskit/platform/ensure-test-runner-arguments': 'error',
19
23
  '@atlaskit/platform/ensure-test-runner-nested-count': 'warn',
20
24
  '@atlaskit/platform/no-invalid-feature-flag-usage': 'error',
21
25
  },
22
26
  },
23
27
  };
28
+
29
+ export const processors = {
30
+ 'package-json-processor': {
31
+ preprocess: (source: string) => {
32
+ // augment the json into a js file
33
+ return [
34
+ `/* eslint-disable quote-props, comma-dangle, quotes, semi, eol-last, @typescript-eslint/semi, no-template-curly-in-string */ module.exports = ${source.trim()}`,
35
+ ];
36
+ },
37
+ postprocess: (errors) => errors[0],
38
+ } as Linter.Processor,
39
+ };
@@ -0,0 +1,41 @@
1
+ import { tester } from '../../../../__tests__/utils/_tester';
2
+ import rule from '../../index';
3
+
4
+ describe('test no-pre-post-installs rule', () => {
5
+ tester.run('no-pre-post-installs', rule, {
6
+ valid: [
7
+ {
8
+ code: `const foo = { "scripts": { "preinstall": 1, "postinstall": 2 }}`,
9
+ filename: 'hello/foo.ts',
10
+ },
11
+ {
12
+ code: `const foo = { "scripts": { "preinstall": 1, "postinstall": 2 }}`,
13
+ filename: 'foo/dummy.json',
14
+ },
15
+ {
16
+ code: `const foo = { "scripts": { "bar": 1, "dummy": 'echo 1' }}`,
17
+ filename: 'foo/package.json',
18
+ },
19
+ {
20
+ code: `module.exports = { "scripts": { "fakePreinstall": 1 }};`,
21
+ filename: 'bar/package.json',
22
+ },
23
+ {
24
+ code: `module.exports = { "scripts": { "fakePostinstall": 1 }};`,
25
+ filename: 'bar/package.json',
26
+ },
27
+ ],
28
+ invalid: [
29
+ {
30
+ code: `module.exports = { "scripts": { "preinstall": 1 }};`,
31
+ filename: 'bar/package.json',
32
+ errors: [{ messageId: 'prePostInstallScriptsNotAllowed' }],
33
+ },
34
+ {
35
+ code: `const foo = { "scripts": { "postinstall": 1 }}`,
36
+ filename: 'baz/package.json',
37
+ errors: [{ messageId: 'prePostInstallScriptsNotAllowed' }],
38
+ },
39
+ ],
40
+ });
41
+ });
@@ -0,0 +1,34 @@
1
+ import type { Rule } from 'eslint';
2
+
3
+ const rule: Rule.RuleModule = {
4
+ meta: {
5
+ type: 'problem',
6
+ docs: {
7
+ description:
8
+ 'This rule disallows public packages to have pre/post install scripts as installations can happen on different environments',
9
+ recommended: false,
10
+ },
11
+ hasSuggestions: false,
12
+ messages: {
13
+ prePostInstallScriptsNotAllowed:
14
+ 'pre/post install scripts not allowed in package.json',
15
+ },
16
+ },
17
+ create(context) {
18
+ return {
19
+ 'ObjectExpression Property[key.value=scripts] Property[key.value=/^(pre|post)install$/]':
20
+ (node: Rule.Node) => {
21
+ if (!context.getFilename().endsWith('/package.json')) {
22
+ return;
23
+ }
24
+
25
+ return context.report({
26
+ node,
27
+ messageId: 'prePostInstallScriptsNotAllowed',
28
+ });
29
+ },
30
+ };
31
+ },
32
+ };
33
+
34
+ export default rule;
@@ -4,6 +4,7 @@
4
4
 
5
5
  ```ts
6
6
 
7
+ import type { Linter } from 'eslint';
7
8
  import { Rule } from 'eslint';
8
9
 
9
10
  // @public (undocumented)
@@ -12,6 +13,7 @@ export const configs: {
12
13
  plugins: string[];
13
14
  rules: {
14
15
  '@atlaskit/platform/ensure-feature-flag-registration': string;
16
+ '@atlaskit/platform/no-pre-post-install-scripts': string;
15
17
  '@atlaskit/platform/ensure-test-runner-arguments': string;
16
18
  '@atlaskit/platform/ensure-test-runner-nested-count': string;
17
19
  '@atlaskit/platform/no-invalid-feature-flag-usage': string;
@@ -19,12 +21,18 @@ export const configs: {
19
21
  };
20
22
  };
21
23
 
24
+ // @public (undocumented)
25
+ export const processors: {
26
+ 'package-json-processor': Linter.Processor<Linter.ProcessorFile | string>;
27
+ };
28
+
22
29
  // @public (undocumented)
23
30
  export const rules: {
24
31
  'ensure-feature-flag-registration': Rule.RuleModule;
25
32
  'ensure-test-runner-arguments': Rule.RuleModule;
26
33
  'ensure-test-runner-nested-count': Rule.RuleModule;
27
34
  'no-invalid-feature-flag-usage': Rule.RuleModule;
35
+ 'no-pre-post-install-scripts': Rule.RuleModule;
28
36
  };
29
37
 
30
38
  // (No @packageDocumentation comment for this package)