Skip to content

Commit 436dbd9

Browse files
committed
feature: @putout/engine-loader: rules: parse-rules: throw if passed array instead of object
1 parent c5c9d41 commit 436dbd9

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

packages/engine-loader/lib/rules/parse-rules.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ module.exports.parseRules = (rules) => {
2929
const plugin = null;
3030
const msg = '';
3131

32+
check(rules);
33+
3234
for (const [rule, value] of entries(rules)) {
3335
if (isStr(value)) {
3436
result.push({
@@ -128,3 +130,8 @@ module.exports.enableNestedRules = (rules) => {
128130

129131
return newRules;
130132
};
133+
134+
function check(rules) {
135+
if (isArray(rules))
136+
throw Error(`☝️Looks like type of 'rules' passed to @putout/engine-loader is 'array', expected: 'object'.`);
137+
}

packages/engine-loader/lib/rules/parse-rules.spec.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ test('putout: loader: parse rules: tuple: two: array', (t) => {
2525
t.end();
2626
});
2727

28+
test('putout: loader: parse rules: array', (t) => {
29+
const [error] = tryCatch(parseRules, [
30+
['on', {}],
31+
]);
32+
33+
const expected = `☝️Looks like type of 'rules' passed to @putout/engine-loader is 'array', expected: 'object'.`;
34+
35+
t.equal(error.message, expected);
36+
t.end();
37+
});
38+
2839
test('putout: loader: parse rules: tuple: two: boolean', (t) => {
2940
const [{state}] = parseRules({
3041
hello: [false, {}],

0 commit comments

Comments
 (0)