Skip to content

Commit 3a6ece9

Browse files
committed
Convert to ESM
1 parent 3ffad4b commit 3a6ece9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+271
-277
lines changed

.eslintrc.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,20 @@
99
"es6": true,
1010
"jest": true
1111
},
12+
"parserOptions": {
13+
"sourceType": "module",
14+
"ecmaVersion": "latest"
15+
},
1216
"globals": {
1317
"testConfig": true,
1418
"testRule": true
19+
},
20+
"rules": {
21+
"import/extensions": ["error", "always", { "ignorePackages": true } ],
22+
"import/no-default-export": "error",
23+
"import/no-useless-path-segments": ["warn", { "commonjs": false, "noUselessIndex": false }],
24+
"import/prefer-default-export": "off",
25+
"unicorn/prefer-module": "error",
26+
"unicorn/prefer-node-protocol": "error"
1527
}
1628
}

index.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
const { createPlugin } = require('stylelint');
2-
const { namespace } = require('./utils');
3-
const rules = require('./rules');
1+
import stylelint from 'stylelint';
2+
import { rules } from './rules/index.js';
3+
import { namespace } from './utils/namespace.js';
44

55
const rulesPlugins = Object.keys(rules).map((ruleName) => {
6-
return createPlugin(namespace(ruleName), rules[ruleName]);
6+
return stylelint.createPlugin(namespace(ruleName), rules[ruleName]);
77
});
88

9-
module.exports = rulesPlugins;
9+
// eslint-disable-next-line import/no-default-export
10+
export default rulesPlugins;

jest-setup.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
const stylelint = require('stylelint');
1+
import stylelint from 'stylelint';
22
// eslint-disable-next-line import/no-extraneous-dependencies
3-
const getTestRule = require('jest-preset-stylelint/getTestRule');
3+
import { getTestRule } from 'jest-preset-stylelint';
44

55
global.testRule = getTestRule({ plugins: ['./'] });
66

@@ -27,7 +27,6 @@ global.testConfig = (input) => {
2727
.lint({
2828
code: '',
2929
config,
30-
quietDeprecationWarnings: true,
3130
})
3231
.then((data) => {
3332
const { invalidOptionWarnings } = data.results[0];

package.json

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,17 @@
1919
"index.js",
2020
"!.DS_Store"
2121
],
22-
"main": "index.js",
22+
"type": "module",
23+
"exports": "./index.js",
24+
"engines": {
25+
"node": ">=18.12.0"
26+
},
2327
"dependencies": {
2428
"postcss": "^8.4.38",
2529
"postcss-sorting": "^8.0.2"
2630
},
2731
"peerDependencies": {
28-
"stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1"
32+
"stylelint": "^16.3.1"
2933
},
3034
"devDependencies": {
3135
"eslint": "^8.55.0",
@@ -46,9 +50,9 @@
4650
},
4751
"scripts": {
4852
"lint": "eslint . --max-warnings=0 && prettier '**/*.js' --check",
49-
"test": "jest",
50-
"watch": "jest --watch",
51-
"coverage": "jest --coverage",
53+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
54+
"watch": "npm run test -- --watch",
55+
"coverage": "npm run test -- --coverage",
5256
"fix": "eslint . --fix --max-warnings=0 && prettier '**/*.js' --write",
5357
"prepare": "husky"
5458
},

rules/checkAlphabeticalOrder.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
const shorthandData = require('./shorthandData');
2-
const { vendor } = require('../utils');
1+
import { shorthandData } from './shorthandData.js';
2+
import * as vendor from '../utils/vendor.js';
33

44
function isShorthand(a, b) {
55
const longhands = shorthandData[a] || [];
66

77
return longhands.includes(b);
88
}
99

10-
module.exports = function checkAlphabeticalOrder(firstPropData, secondPropData) {
10+
export function checkAlphabeticalOrder(firstPropData, secondPropData) {
1111
// OK if the first is shorthand for the second:
1212
if (isShorthand(firstPropData.unprefixedName, secondPropData.unprefixedName)) {
1313
return true;
@@ -32,4 +32,4 @@ module.exports = function checkAlphabeticalOrder(firstPropData, secondPropData)
3232
}
3333

3434
return firstPropData.unprefixedName < secondPropData.unprefixedName;
35-
};
35+
}

rules/index.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
module.exports = {
2-
order: require('./order'),
3-
'properties-order': require('./properties-order'),
4-
'properties-alphabetical-order': require('./properties-alphabetical-order'),
1+
import { rule as order } from './order/index.js';
2+
import { rule as propertiesOrder } from './properties-order/index.js';
3+
import { rule as propertiesAlphabeticalOrder } from './properties-alphabetical-order/index.js';
4+
5+
export const rules = {
6+
order,
7+
'properties-order': propertiesOrder,
8+
'properties-alphabetical-order': propertiesAlphabeticalOrder,
59
};

rules/order/calcAtRulePatternPriority.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = function calcAtRulePatternPriority(pattern, node) {
1+
export function calcAtRulePatternPriority(pattern, node) {
22
// 0 — it pattern doesn't match
33
// 1 — pattern without `name` and `hasBlock`
44
// 10010 — pattern match `hasBlock`
@@ -57,4 +57,4 @@ module.exports = function calcAtRulePatternPriority(pattern, node) {
5757
}
5858

5959
return priority;
60-
};
60+
}

rules/order/calcRulePatternPriority.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = function calcRulePatternPriority(pattern, node) {
1+
export function calcRulePatternPriority(pattern, node) {
22
// 0 — it pattern doesn't match
33
// 1 — pattern without `selector`
44
// 2 — pattern match `selector`
@@ -16,4 +16,4 @@ module.exports = function calcRulePatternPriority(pattern, node) {
1616
}
1717

1818
return priority;
19-
};
19+
}

rules/order/checkNode.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
1-
const stylelint = require('stylelint');
2-
const sortNode = require('postcss-sorting/lib/order/sortNode');
3-
const checkOrder = require('./checkOrder');
4-
const getOrderData = require('./getOrderData');
5-
const ruleName = require('./ruleName');
6-
const messages = require('./messages');
7-
8-
module.exports = function checkNode({
9-
node,
10-
isFixEnabled,
11-
orderInfo,
12-
primaryOption,
13-
result,
14-
unspecified,
15-
}) {
1+
import stylelint from 'stylelint';
2+
import sortNode from 'postcss-sorting/lib/order/sortNode.js';
3+
import { checkOrder } from './checkOrder.js';
4+
import { getOrderData } from './getOrderData.js';
5+
import { ruleName } from './ruleName.js';
6+
import { messages } from './messages.js';
7+
8+
export function checkNode({ node, isFixEnabled, orderInfo, primaryOption, result, unspecified }) {
169
if (isFixEnabled) {
1710
let shouldFix = false;
1811
let allNodesData = [];
@@ -104,4 +97,4 @@ module.exports = function checkNode({
10497
previousNodeData,
10598
};
10699
}
107-
};
100+
}

rules/order/checkOrder.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
let stylelint = require('stylelint');
2-
let ruleName = require('./ruleName');
3-
let messages = require('./messages');
1+
import stylelint from 'stylelint';
2+
import { ruleName } from './ruleName.js';
3+
import { messages } from './messages.js';
44

55
// eslint-disable-next-line max-params, consistent-return
6-
module.exports = function checkOrder({
6+
export function checkOrder({
77
firstNodeData,
88
secondNodeData,
99
allNodesData,
@@ -75,4 +75,4 @@ module.exports = function checkOrder({
7575
if (unspecified === 'bottom' && !firstNodeIsSpecified) {
7676
return false;
7777
}
78-
};
78+
}

0 commit comments

Comments
 (0)