@putout/engine-loader 12.0.0 → 12.2.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/lib/index.js CHANGED
@@ -17,7 +17,6 @@ const {
17
17
  } = require('./rules');
18
18
 
19
19
  const {filterEnabledPlugins} = require('./plugins/filter-enabled-plugins');
20
-
21
20
  const {check, checkRule} = require('./check');
22
21
 
23
22
  module.exports.loadPluginsAsync = loadPluginsAsync;
@@ -74,6 +73,12 @@ function splitRule(rule) {
74
73
  return [rule, 'putout'];
75
74
  }
76
75
 
76
+ function parseRule(rule) {
77
+ return rule
78
+ .replace('import:@putout/plugin-', '')
79
+ .replace('@putout/plugin-', '');
80
+ }
81
+
77
82
  function loadPlugins({items, loadedRules}) {
78
83
  const plugins = [];
79
84
 
@@ -82,6 +87,7 @@ function loadPlugins({items, loadedRules}) {
82
87
  continue;
83
88
 
84
89
  checkRule(rule);
90
+ const parsedRule = parseRule(rule);
85
91
 
86
92
  const [name, namespace] = splitRule(rule);
87
93
  const plugin = itemPlugin || loadPlugin({
@@ -97,11 +103,11 @@ function loadPlugins({items, loadedRules}) {
97
103
  const {rules} = plugin;
98
104
 
99
105
  if (rules) {
100
- plugins.push(...extendRules(rule, rules));
106
+ plugins.push(...extendRules(parsedRule, rules));
101
107
  continue;
102
108
  }
103
109
 
104
- plugins.push([rule, plugin]);
110
+ plugins.push([parsedRule, plugin]);
105
111
  }
106
112
 
107
113
  return plugins;
package/lib/load/load.js CHANGED
@@ -52,13 +52,7 @@ const {PUTOUT_YARN_PNP = 'putout'} = process.env;
52
52
  const createCustomRequire = once(() => createRequire(require.resolve(PUTOUT_YARN_PNP)));
53
53
  const createPutoutRequire = once(() => createRequire(require.resolve('putout')));
54
54
 
55
- // That's all for Yarn P'n'P
56
- //
57
- // We need to create a couple version of require for plugins, formatters and processors:
58
- // - declared in 🐊Putout package.json;
59
- // - declared in module that want to extend 🐊Putout;
60
- //
61
- // https://yarnpkg.com/advanced/rulebook#modules-shouldnt-hardcode-node_modules-paths-to-access-other-modules
55
+ // That's all for Yarn P'n'P//// We need to create a couple version of require for plugins, formatters and processors:// - declared in 🐊Putout package.json;// - declared in module that want to extend 🐊Putout;//// https://yarnpkg.com/advanced/rulebook#modules-shouldnt-hardcode-node_modules-paths-to-access-other-modules
62
56
  function getModulePath(name) {
63
57
  let path;
64
58
 
@@ -1,6 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  module.exports.isEnabled = (name, rules) => {
4
+ for (const {rule, state} of rules) {
5
+ if (rule.includes('/') && RegExp(`^${rule}`).test(name))
6
+ return state;
7
+ }
8
+
4
9
  for (const {rule, state} of rules) {
5
10
  if (rule === name)
6
11
  return state;
@@ -11,7 +11,18 @@ const notSupportedError = (a) => Error(`☝️ Rule format not supported ${a}: $
11
11
  const rulesUsedInsteadOfMatchError = (a) => Error(`☝️ Looks like you need to change "rules" to "match" for ${stringify(a)}`);
12
12
  const stateOptionError = ({rule, value}) => Error(`☝️ ${rule}: state option can be "on" or "off" only, when used as string, received: "${value}"`);
13
13
  const defaultOptions = () => Object.create(null);
14
- const parseState = (rule, value) => validateState(rule, value) && value === 'on' || value !== 'off';
14
+
15
+ const parseState = (rule, value) => {
16
+ validateState(rule, value);
17
+
18
+ if (value === 'on')
19
+ return true;
20
+
21
+ if (value === 'off')
22
+ return false;
23
+
24
+ return value;
25
+ };
15
26
 
16
27
  module.exports.parseRules = (rules) => {
17
28
  rules = parseSubrules(rules);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const parse = (rule) => {
3
+ const parseSlashes = (rule) => {
4
4
  if (rule.includes('/'))
5
5
  return rule
6
6
  .split('/')
@@ -9,6 +9,12 @@ const parse = (rule) => {
9
9
  return rule;
10
10
  };
11
11
 
12
+ const parsePluginName = (a) => {
13
+ return a
14
+ .replace('import:@putout/plugin-', '')
15
+ .replace('@putout/plugin-', '');
16
+ };
17
+
12
18
  module.exports.validateRules = ({items, rules}) => {
13
19
  const ruleItems = Object.keys(rules);
14
20
 
@@ -17,8 +23,10 @@ module.exports.validateRules = ({items, rules}) => {
17
23
  let isWithSlash = false;
18
24
 
19
25
  for (const [pluginName, plugin = {}] of items) {
20
- isName = pluginName === rule;
21
- isWithSlash = pluginName === parse(rule);
26
+ const parsedPluginName = parsePluginName(pluginName);
27
+
28
+ isName = parsedPluginName === rule;
29
+ isWithSlash = parsedPluginName === parseSlashes(rule);
22
30
 
23
31
  if (isName && plugin.rules)
24
32
  throw Error(`Rule "${rule}" cannot be applied to nested plugin "${pluginName}"`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@putout/engine-loader",
3
- "version": "12.0.0",
3
+ "version": "12.2.0",
4
4
  "type": "commonjs",
5
5
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
6
6
  "description": "load plugins and prepare them to run",
@@ -49,7 +49,7 @@
49
49
  "c8": "^8.0.0",
50
50
  "eslint": "^8.0.1",
51
51
  "eslint-plugin-n": "^16.0.0",
52
- "eslint-plugin-putout": "^19.0.0",
52
+ "eslint-plugin-putout": "^21.0.0",
53
53
  "estrace": "*",
54
54
  "just-camel-case": "^4.0.2",
55
55
  "lerna": "^6.0.1",