Skip to content

Commit 1d0b100

Browse files
committed
feature(@putout/engine-processor) add ability to pass load
1 parent ecd8834 commit 1d0b100

4 files changed

Lines changed: 35 additions & 5 deletions

File tree

packages/engine-processor/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ const {
1919

2020
const processorRunners = await getProcessorRunners(processors);
2121

22+
const optionalLoader = async (a) => await import(a);
23+
await getProcessorRunners(processors, optionalLoader);
24+
2225
await runProcessors({
2326
name,
2427
process,
@@ -27,6 +30,7 @@ await runProcessors({
2730
index,
2831
length,
2932
processorRunners, // optional
33+
load, // when you need to override 'import()'
3034
});
3135
// returns
3236
({

packages/engine-processor/lib/processor.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ module.exports.getFilePatterns = (processors) => {
2424
return result;
2525
};
2626

27-
module.exports.runProcessors = async ({name, fix, processFile, options, rawSource, processorRunners}) => {
27+
module.exports.runProcessors = async ({name, fix, processFile, options, rawSource, processorRunners, load}) => {
2828
const {
2929
processors = defaultProcessors,
3030
} = options;
3131

32-
processorRunners = processorRunners || await getProcessorRunners(processors);
32+
processorRunners = processorRunners || await getProcessorRunners(processors, load);
3333

3434
let processedSource = '';
3535
let processedPlaces = [];
@@ -146,10 +146,10 @@ async function getFiles({name, fix, rawSource, processorRunners}) {
146146
}
147147

148148
module.exports.getProcessorRunners = getProcessorRunners;
149-
async function getProcessorRunners(processors) {
149+
async function getProcessorRunners(processors, load) {
150150
const readyProcessors = await loadProcessorsAsync({
151151
processors,
152-
});
152+
}, load);
153153

154154
return readyProcessors.map(addGlobs);
155155
}

packages/engine-processor/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
"@putout/engine-loader": "^7.0.0",
2828
"nano-memoize": "^1.2.1",
2929
"once": "^1.4.0",
30-
"picomatch": "^2.2.2"
30+
"picomatch": "^2.2.2",
31+
"try-to-catch": "^3.0.1"
3132
},
3233
"keywords": [
3334
"putout",

packages/engine-processor/test/processor.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const tryToCatch = require('try-to-catch');
4+
35
const {readFile} = require('fs/promises');
46
const {join} = require('path');
57

@@ -55,6 +57,29 @@ test('putout: engine-processor: javascript', async (t) => {
5557
t.end();
5658
});
5759

60+
test('putout: engine-processor: javascript: load', async (t) => {
61+
const name = 'hello.js';
62+
const options = {};
63+
const rawSource = `const a = 'hello'`;
64+
const processFile = stub().returns({
65+
source: rawSource,
66+
places: [],
67+
});
68+
69+
const load = stub().rejects('ERROR LOAD');
70+
71+
const [error] = await tryToCatch(runProcessors, {
72+
name,
73+
processFile,
74+
options,
75+
rawSource,
76+
load,
77+
});
78+
79+
t.equal(error, 'ERROR LOAD');
80+
t.end();
81+
});
82+
5883
test('putout: engine-processor: markdown: javascript', async (t) => {
5984
const name = join(__dirname, 'fixture/js.md');
6085
const options = {

0 commit comments

Comments
 (0)