@putout/engine-loader 11.4.0 → 11.5.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.
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const isString = (a) => typeof a === 'string';
4
+
5
+ module.exports.check = (options) => {
6
+ if (!options || typeof options !== 'object')
7
+ throw Error('options should be an object!');
8
+ };
9
+
10
+ module.exports.checkRule = (rule) => {
11
+ if (!isString(rule))
12
+ throw Error(`☝️ Looks like plugin name type is not 'string', but: '${typeof rule}'`);
13
+ };
package/lib/index.js CHANGED
@@ -2,18 +2,23 @@
2
2
 
3
3
  const {nanomemoize} = require('nano-memoize');
4
4
 
5
- const isEnabled = require('./is-enabled');
6
- const {loadPlugin} = require('./load');
7
- const {createAsyncLoader} = require('./async-loader');
8
- const {parsePluginNames} = require('./parse-plugin-names');
9
- const parseProcessorNames = require('./parse-processor-names');
10
- const parseRules = require('./parse-rules');
11
- const validateRules = require('./validate-rules');
12
- const validatePlugin = require('./validate-plugin');
13
- const {mergeRules} = require('./merge-rules');
14
- const {loadPluginsAsync} = require('./load-plugins-async');
5
+ const {loadPlugin} = require('./load/load');
6
+ const {createAsyncLoader} = require('./load/async-loader');
7
+ const {parsePluginNames} = require('./plugins/parse-plugin-names');
8
+ const parseProcessorNames = require('./processors/parse-processor-names');
9
+ const validatePlugin = require('./plugins/validate-plugin');
10
+ const {loadPluginsAsync} = require('./plugins/load-plugins-async');
15
11
 
16
- const isString = (a) => typeof a === 'string';
12
+ const {
13
+ parseRules,
14
+ validateRules,
15
+ isEnabled,
16
+ getLoadedRules,
17
+ } = require('./rules');
18
+
19
+ const {filterEnabledPlugins} = require('./plugins/filter-enabled-plugins');
20
+
21
+ const {check, checkRule} = require('./check');
17
22
 
18
23
  module.exports.loadPluginsAsync = loadPluginsAsync;
19
24
  module.exports.loadProcessorsAsync = nanomemoize(async (options, load) => {
@@ -59,41 +64,12 @@ module.exports.loadPlugins = (options) => {
59
64
  items,
60
65
  });
61
66
 
62
- const result = [];
63
-
64
- // Would be great to have ability to filter
65
- // disabled plugins and prevent them from loading
66
- // but we can't because of a way multi-rule plugins
67
- // works. We can't determine count and names of all
68
- // rules of a plugin before load.
69
- for (const [name, plugin] of plugins) {
70
- if (!isEnabled(name, cookedRules))
71
- continue;
72
-
73
- result.push(mergeRules(
74
- [name, plugin],
75
- cookedRules,
76
- ));
77
- }
78
-
79
- return result;
67
+ return filterEnabledPlugins({
68
+ plugins,
69
+ cookedRules,
70
+ });
80
71
  };
81
72
 
82
- function getLoadedRules(rules) {
83
- const loadedRules = [];
84
-
85
- for (const item of rules) {
86
- const {rule} = item;
87
-
88
- if (rule.includes('/'))
89
- continue;
90
-
91
- loadedRules.push(item);
92
- }
93
-
94
- return loadedRules;
95
- }
96
-
97
73
  function splitRule(rule) {
98
74
  return [rule, 'putout'];
99
75
  }
@@ -141,13 +117,3 @@ function extendRules(rule, plugin) {
141
117
 
142
118
  return result;
143
119
  }
144
-
145
- function check(options) {
146
- if (!options || typeof options !== 'object')
147
- throw Error('options should be an object!');
148
- }
149
-
150
- function checkRule(rule) {
151
- if (!isString(rule))
152
- throw Error(`☝️ Looks like plugin name type is not 'string', but: '${typeof rule}'`);
153
- }
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ const {isEnabled, mergeRules} = require('../rules');
4
+
5
+ // Would be great to have ability to filter
6
+ // disabled plugins and prevent them from loading
7
+ // but we can't because of a way multi-rule plugins
8
+ // works. We can't determine count and names of all
9
+ // rules of a plugin before load.
10
+ module.exports.filterEnabledPlugins = ({plugins, cookedRules}) => {
11
+ const result = [];
12
+
13
+ for (const [name, plugin] of plugins) {
14
+ if (!isEnabled(name, cookedRules))
15
+ continue;
16
+
17
+ result.push(mergeRules(
18
+ [name, plugin],
19
+ cookedRules,
20
+ ));
21
+ }
22
+
23
+ return result;
24
+ };
@@ -2,16 +2,21 @@
2
2
 
3
3
  const {basename} = require('path');
4
4
 
5
- const isEnabled = require('./is-enabled');
6
- const parseRules = require('./parse-rules');
7
- const {createAsyncLoader} = require('./async-loader');
5
+ const {
6
+ parseRules,
7
+ validateRules,
8
+ isEnabled,
9
+ getLoadedRules,
10
+ } = require('../rules');
11
+
12
+ const {createAsyncLoader} = require('../load/async-loader');
8
13
  const {parsePluginNames} = require('./parse-plugin-names');
9
- const validateRules = require('./validate-rules');
10
14
  const validatePlugin = require('./validate-plugin');
11
- const {mergeRules} = require('./merge-rules');
15
+ const {filterEnabledPlugins} = require('./filter-enabled-plugins');
16
+
17
+ const {check, checkRule} = require('../check');
12
18
 
13
19
  const loadPluginAsync = createAsyncLoader('plugin');
14
- const isString = (a) => typeof a === 'string';
15
20
 
16
21
  module.exports.loadPluginsAsync = async (options) => {
17
22
  check(options);
@@ -33,24 +38,10 @@ module.exports.loadPluginsAsync = async (options) => {
33
38
  items,
34
39
  });
35
40
 
36
- const result = [];
37
-
38
- // Would be great to have ability to filter
39
- // disabled plugins and prevent them from loading
40
- // but we can't because of a way multi-rule plugins
41
- // works. We can't determine count and names of all
42
- // rules of a plugin before load.
43
- for (const [name, plugin] of plugins) {
44
- if (!isEnabled(name, cookedRules))
45
- continue;
46
-
47
- result.push(mergeRules(
48
- [name, plugin],
49
- cookedRules,
50
- ));
51
- }
52
-
53
- return result;
41
+ return filterEnabledPlugins({
42
+ plugins,
43
+ cookedRules,
44
+ });
54
45
  };
55
46
 
56
47
  function splitRule(rule) {
@@ -98,21 +89,6 @@ async function loadPlugins({items, loadedRules}) {
98
89
  return plugins;
99
90
  }
100
91
 
101
- function getLoadedRules(rules) {
102
- const loadedRules = [];
103
-
104
- for (const item of rules) {
105
- const {rule} = item;
106
-
107
- if (rule.includes('/'))
108
- continue;
109
-
110
- loadedRules.push(item);
111
- }
112
-
113
- return loadedRules;
114
- }
115
-
116
92
  function extendRules(rule, plugin) {
117
93
  const result = [];
118
94
  const entries = Object.entries(plugin);
@@ -124,16 +100,6 @@ function extendRules(rule, plugin) {
124
100
  return result;
125
101
  }
126
102
 
127
- function check(options) {
128
- if (!options || typeof options !== 'object')
129
- throw Error('options should be an object!');
130
- }
131
-
132
- function checkRule(rule) {
133
- if (!isString(rule))
134
- throw Error(`☝️ Looks like plugin name type is not 'string', but: '${typeof rule}'`);
135
- }
136
-
137
103
  function parseRuleName(rule) {
138
104
  if (rule.startsWith('import:')) {
139
105
  const shortName = basename(rule.replace('import:', ''));
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ module.exports.getLoadedRules = (rules) => {
4
+ const loadedRules = [];
5
+
6
+ for (const item of rules) {
7
+ const {rule} = item;
8
+
9
+ if (rule.includes('/'))
10
+ continue;
11
+
12
+ loadedRules.push(item);
13
+ }
14
+
15
+ return loadedRules;
16
+ };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ const {parseRules} = require('./parse-rules');
4
+ const {mergeRules} = require('./merge-rules');
5
+ const {validateRules} = require('./validate-rules');
6
+ const {isEnabled} = require('./is-enabled');
7
+ const {getLoadedRules} = require('./get-loaded-rules');
8
+
9
+ module.exports = {
10
+ parseRules,
11
+ mergeRules,
12
+ validateRules,
13
+ isEnabled,
14
+ getLoadedRules,
15
+ };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- module.exports = (name, rules) => {
3
+ module.exports.isEnabled = (name, rules) => {
4
4
  for (const {rule, state} of rules) {
5
5
  if (rule === name)
6
6
  return state;
@@ -13,7 +13,7 @@ const stateOptionError = ({rule, value}) => Error(`☝️ ${rule}: state option
13
13
  const defaultOptions = () => Object.create(null);
14
14
  const parseState = (rule, value) => validateState(rule, value) && value === 'on' || value !== 'off';
15
15
 
16
- module.exports = (rules) => {
16
+ module.exports.parseRules = (rules) => {
17
17
  rules = parseSubrules(rules);
18
18
 
19
19
  const result = [];
@@ -9,7 +9,7 @@ const parse = (rule) => {
9
9
  return rule;
10
10
  };
11
11
 
12
- module.exports = ({items, rules}) => {
12
+ module.exports.validateRules = ({items, rules}) => {
13
13
  const ruleItems = Object.keys(rules);
14
14
 
15
15
  for (const rule of ruleItems) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@putout/engine-loader",
3
- "version": "11.4.0",
3
+ "version": "11.5.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",
@@ -1,20 +0,0 @@
1
- 'use strict';
2
-
3
- const addNodeModules = (a) => `${a}/node_modules`;
4
-
5
- module.exports = (path) => {
6
- const names = path
7
- .split('/')
8
- .slice(1);
9
-
10
- const result = [''];
11
-
12
- let current = '';
13
-
14
- for (const name of names) {
15
- current += `/${name}`;
16
- result.push(current);
17
- }
18
-
19
- return result.map(addNodeModules);
20
- };
File without changes
File without changes
File without changes
File without changes