@putout/engine-runner 12.0.0 → 12.3.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/README.md +19 -30
- package/lib/index.js +3 -0
- package/lib/replace/index.js +4 -0
- package/lib/replace/watermark.js +3 -0
- package/lib/run-fix.js +6 -1
- package/lib/store.js +1 -3
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -15,7 +15,8 @@ npm i @putout/engine-runner
|
|
|
15
15
|
|
|
16
16
|
### Replacer
|
|
17
17
|
|
|
18
|
-
`Replacer` converts code in declarative way. Simplest possible form, no need to use `fix`. Just `from` and `to` parts
|
|
18
|
+
`Replacer` converts code in declarative way. Simplest possible form, no need to use `fix`. Just `from` and `to` parts
|
|
19
|
+
according to [`template variables syntax`](https://github.com/coderaiser/putout/tree/master/packages/compare#supported-template-variables).
|
|
19
20
|
|
|
20
21
|
Simplest replace example:
|
|
21
22
|
|
|
@@ -170,34 +171,40 @@ module.exports.traverse = ({push}) => ({
|
|
|
170
171
|
});
|
|
171
172
|
```
|
|
172
173
|
|
|
173
|
-
####
|
|
174
|
+
#### Storages
|
|
174
175
|
|
|
175
|
-
|
|
176
|
+
Storages is preferred way of keeping data 🐊`Putout`, `traverse` init function called only once, and any other way
|
|
177
|
+
of handling variables will most likely will lead to bugs.
|
|
178
|
+
|
|
179
|
+
##### listStore
|
|
180
|
+
|
|
181
|
+
To keep things and save them as a list during traverse in a safe way `listStore` can be used for code:
|
|
182
|
+
|
|
183
|
+
```js
|
|
184
|
+
debugger;
|
|
185
|
+
const hello = '';
|
|
186
|
+
debugger;
|
|
187
|
+
const world = '';
|
|
188
|
+
```
|
|
176
189
|
|
|
177
190
|
```js
|
|
178
|
-
module.exports.traverse = ({
|
|
191
|
+
module.exports.traverse = ({listStore}) => ({
|
|
179
192
|
'debugger'(path) {
|
|
180
193
|
listStore('x');
|
|
181
|
-
push(path);
|
|
182
194
|
},
|
|
183
195
|
|
|
184
196
|
Program: {
|
|
185
197
|
exit() {
|
|
186
198
|
console.log(listStore());
|
|
187
199
|
// returns
|
|
188
|
-
['x', 'x'
|
|
200
|
+
['x', 'x'];
|
|
189
201
|
// for code
|
|
190
|
-
'debugger; debugger
|
|
202
|
+
'debugger; debugger';
|
|
191
203
|
},
|
|
192
204
|
},
|
|
193
205
|
});
|
|
194
206
|
```
|
|
195
207
|
|
|
196
|
-
`store` is preferred way of keeping data, because of caching 🐊`putout`, `traverse` init function called only once, and any other way
|
|
197
|
-
of handling variables will most likely will lead to bugs.
|
|
198
|
-
|
|
199
|
-
#### Store
|
|
200
|
-
|
|
201
208
|
When you need `key-value` storage `store` can be used.
|
|
202
209
|
|
|
203
210
|
```js
|
|
@@ -262,24 +269,6 @@ module.exports.traverse = ({push, store}) => ({
|
|
|
262
269
|
});
|
|
263
270
|
```
|
|
264
271
|
|
|
265
|
-
#### ListStore
|
|
266
|
-
|
|
267
|
-
When you need to track list of elements, use `listStore`:
|
|
268
|
-
|
|
269
|
-
```
|
|
270
|
-
module.exports.traverse = ({push, listStore}) => ({
|
|
271
|
-
ImportDeclaration(path) {
|
|
272
|
-
listStore(path);
|
|
273
|
-
},
|
|
274
|
-
|
|
275
|
-
Program: {
|
|
276
|
-
exit: () => {
|
|
277
|
-
processImports(push, listStore());
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
});
|
|
281
|
-
```
|
|
282
|
-
|
|
283
272
|
### Finder
|
|
284
273
|
|
|
285
274
|
`Find plugins` gives you all the control over traversing, but it's the slowest format.
|
package/lib/index.js
CHANGED
|
@@ -41,6 +41,8 @@ module.exports.runPlugins = ({ast, shebang, fix, fixCount, plugins, template = r
|
|
|
41
41
|
|
|
42
42
|
if (!fix || !places.length)
|
|
43
43
|
return places;
|
|
44
|
+
|
|
45
|
+
replace.clearWatermark(ast);
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
return places;
|
|
@@ -120,6 +122,7 @@ function runWithoutMerge({ast, fix, shebang, template, pluginsFind}) {
|
|
|
120
122
|
path: item,
|
|
121
123
|
rule,
|
|
122
124
|
position,
|
|
125
|
+
options,
|
|
123
126
|
});
|
|
124
127
|
}
|
|
125
128
|
}
|
package/lib/replace/index.js
CHANGED
|
@@ -61,6 +61,10 @@ module.exports = ({rule, plugin, msg, options}) => {
|
|
|
61
61
|
};
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
+
module.exports.clearWatermark = (ast) => {
|
|
65
|
+
delete ast.program[watermark.REPLACE_WATERMARK];
|
|
66
|
+
};
|
|
67
|
+
|
|
64
68
|
const isFn = (a) => typeof a === 'function';
|
|
65
69
|
|
|
66
70
|
const fix = (from, to, path) => {
|
package/lib/replace/watermark.js
CHANGED
|
@@ -30,6 +30,8 @@ module.exports = (from, to, path) => {
|
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
module.exports.REPLACE_WATERMARK = name;
|
|
34
|
+
|
|
33
35
|
module.exports.create = create;
|
|
34
36
|
function create(from, to, path) {
|
|
35
37
|
const watermark = `${from} -> ${to}`;
|
|
@@ -52,6 +54,7 @@ function init({path, program}) {
|
|
|
52
54
|
module.exports.add = add;
|
|
53
55
|
function add({path, program, watermark, highWatermark}) {
|
|
54
56
|
init({path, program});
|
|
57
|
+
|
|
55
58
|
path.node[name].add(watermark);
|
|
56
59
|
program.node[name].add(highWatermark);
|
|
57
60
|
}
|
package/lib/run-fix.js
CHANGED
|
@@ -6,9 +6,14 @@ const {enabled} = debug;
|
|
|
6
6
|
|
|
7
7
|
const tryToFix = (fix, {path, position, options}) => {
|
|
8
8
|
const [e] = tryCatch(fix, path, {options});
|
|
9
|
+
const {scope} = path.path || path;
|
|
9
10
|
|
|
10
|
-
if (!e)
|
|
11
|
+
if (!e && scope)
|
|
12
|
+
scope.getProgramParent().crawl();
|
|
13
|
+
|
|
14
|
+
if (!e) {
|
|
11
15
|
return;
|
|
16
|
+
}
|
|
12
17
|
|
|
13
18
|
e.loc = e.loc || position;
|
|
14
19
|
|
package/lib/store.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@putout/engine-runner",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.3.0",
|
|
4
|
+
"type": "commonjs",
|
|
4
5
|
"author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
|
|
5
6
|
"description": "run putout plugins",
|
|
6
7
|
"homepage": "https://github.com/coderaiser/putout/tree/master/packages/engine-runner#readme",
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
"@babel/types": "^7.12.7",
|
|
28
29
|
"@putout/compare": "^8.0.0",
|
|
29
30
|
"@putout/engine-parser": "^4.0.1",
|
|
30
|
-
"@putout/operate": "^
|
|
31
|
+
"@putout/operate": "^7.0.0",
|
|
31
32
|
"debug": "^4.1.1",
|
|
32
33
|
"jessy": "^3.0.0",
|
|
33
34
|
"nessy": "^4.0.0",
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"c8": "^7.5.0",
|
|
46
47
|
"eslint": "^8.0.1",
|
|
47
48
|
"eslint-plugin-node": "^11.0.0",
|
|
48
|
-
"eslint-plugin-putout": "^
|
|
49
|
+
"eslint-plugin-putout": "^13.0.0",
|
|
49
50
|
"just-camel-case": "^4.0.2",
|
|
50
51
|
"lerna": "^4.0.0",
|
|
51
52
|
"madrun": "^8.0.1",
|