Skip to content

Commit 80951cc

Browse files
committed
Convert to ES2020
1 parent 8f80ee0 commit 80951cc

File tree

2 files changed

+75
-115
lines changed

2 files changed

+75
-115
lines changed

.eslintrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
"mocha": true,
55
"es6": true
66
},
7+
"parserOptions": {
8+
"ecmaVersion": 2020,
9+
"sourceType": "module"
10+
},
711
"rules": {
812
"no-duplicate-case": 2,
913
"no-undef": 2,

index.js

Lines changed: 71 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
1-
var fs = require('fs');
2-
var path = require('path');
3-
var cli = require('clap');
4-
var csso = require('csso');
5-
var SourceMapConsumer = require('source-map-js').SourceMapConsumer;
1+
const fs = require('fs');
2+
const path = require('path');
3+
const cli = require('clap');
4+
const csso = require('csso');
5+
const SourceMapConsumer = require('source-map-js').SourceMapConsumer;
66

77
function unixPathname(pathname) {
88
return pathname.replace(/\\/g, '/');
99
}
1010

1111
function readFromStream(stream, minify) {
12-
var buffer = [];
12+
const buffer = [];
1313

1414
stream
1515
.setEncoding('utf8')
16-
.on('data', function(chunk) {
17-
buffer.push(chunk);
18-
})
19-
.on('end', function() {
20-
minify(buffer.join(''));
21-
});
16+
.on('data', (chunk) => buffer.push(chunk))
17+
.on('end', () => minify(buffer.join('')));
2218
}
2319

2420
function showStat(filename, source, result, inputMap, map, time, mem) {
2521
function fmt(size) {
26-
return String(size).split('').reverse().reduce(function(size, digit, idx) {
22+
return String(size).split('').reverse().reduce((size, digit, idx) => {
2723
if (idx && idx % 3 === 0) {
2824
size = ' ' + size;
2925
}
26+
3027
return digit + size;
3128
}, '');
3229
}
@@ -49,42 +46,15 @@ function showStat(filename, source, result, inputMap, map, time, mem) {
4946
console.error('Memory: ', (mem / (1024 * 1024)).toFixed(3), 'MB');
5047
}
5148

52-
function showParseError(source, filename, details, message) {
53-
function processLines(start, end) {
54-
return lines.slice(start, end).map(function(line, idx) {
55-
var num = String(start + idx + 1);
56-
57-
while (num.length < maxNumLength) {
58-
num = ' ' + num;
59-
}
60-
61-
return num + ' |' + line;
62-
}).join('\n');
63-
}
64-
65-
var lines = source.split(/\n|\r\n?|\f/);
66-
var column = details.column;
67-
var line = details.line;
68-
var startLine = Math.max(1, line - 2);
69-
var endLine = Math.min(line + 2, lines.length + 1);
70-
var maxNumLength = Math.max(4, String(endLine).length) + 1;
71-
72-
console.error('\nParse error ' + filename + ': ' + message);
73-
console.error(processLines(startLine - 1, line));
74-
console.error(new Array(column + maxNumLength + 2).join('-') + '^');
75-
console.error(processLines(line, endLine));
76-
console.error();
77-
}
78-
7949
function debugLevel(level) {
8050
// level is undefined when no param -> 1
8151
return isNaN(level) ? 1 : Math.max(Number(level), 0);
8252
}
8353

8454
function resolveSourceMap(source, inputMap, outputMap, inputFile, outputFile) {
85-
var inputMapContent = null;
86-
var inputMapFile = null;
87-
var outputMapFile = null;
55+
let inputMapContent = null;
56+
let inputMapFile = null;
57+
let outputMapFile = null;
8858

8959
switch (outputMap) {
9060
case 'none':
@@ -128,7 +98,7 @@ function resolveSourceMap(source, inputMap, outputMap, inputFile, outputFile) {
12898
case 'auto':
12999
if (outputMap) {
130100
// try fetch source map from source
131-
var inputMapComment = source.match(/\/\*# sourceMappingURL=(\S+)\s*\*\/\s*$/);
101+
let inputMapComment = source.match(/\/\*# sourceMappingURL=(\S+)\s*\*\/\s*$/);
132102

133103
if (inputFile === '<stdin>') {
134104
inputFile = false;
@@ -189,19 +159,19 @@ function processCommentsOption(value) {
189159
}
190160

191161
function processOptions(options, args) {
192-
var inputFile = options.input || args[0];
193-
var outputFile = options.output;
194-
var usageFile = options.usage;
195-
var usageData = false;
196-
var sourceMap = options.sourceMap;
197-
var inputSourceMap = options.inputSourceMap;
198-
var declarationList = options.declarationList;
199-
var restructure = Boolean(options.restructure);
200-
var forceMediaMerge = Boolean(options.forceMediaMerge);
201-
var comments = processCommentsOption(options.comments);
202-
var debug = options.debug;
203-
var statistics = options.stat;
204-
var watch = options.watch;
162+
let inputFile = options.input || args[0];
163+
let outputFile = options.output;
164+
const usageFile = options.usage;
165+
let usageData = false;
166+
const sourceMap = options.sourceMap;
167+
const inputSourceMap = options.inputSourceMap;
168+
const declarationList = options.declarationList;
169+
const restructure = Boolean(options.restructure);
170+
const forceMediaMerge = Boolean(options.forceMediaMerge);
171+
const comments = processCommentsOption(options.comments);
172+
const debug = options.debug;
173+
const statistics = options.stat;
174+
const watch = options.watch;
205175

206176
if (process.stdin.isTTY && !inputFile && !outputFile) {
207177
return null;
@@ -234,69 +204,58 @@ function processOptions(options, args) {
234204
}
235205

236206
return {
237-
inputFile: inputFile,
238-
outputFile: outputFile,
239-
usageData: usageData,
240-
sourceMap: sourceMap,
241-
inputSourceMap: inputSourceMap,
242-
declarationList: declarationList,
243-
restructure: restructure,
244-
forceMediaMerge: forceMediaMerge,
245-
comments: comments,
246-
statistics: statistics,
247-
debug: debug,
248-
watch: watch
207+
inputFile,
208+
outputFile,
209+
usageData,
210+
sourceMap,
211+
inputSourceMap,
212+
declarationList,
213+
restructure,
214+
forceMediaMerge,
215+
comments,
216+
statistics,
217+
debug,
218+
watch
249219
};
250220
}
251221

252222
function minifyStream(options) {
253-
var inputStream = options.inputFile !== '<stdin>'
223+
const inputStream = options.inputFile !== '<stdin>'
254224
? fs.createReadStream(options.inputFile)
255225
: process.stdin;
256226

257-
readFromStream(inputStream, function(source) {
258-
var time = process.hrtime();
259-
var mem = process.memoryUsage().heapUsed;
260-
var relInputFilename = path.relative(process.cwd(), options.inputFile);
261-
var sourceMap = resolveSourceMap(
227+
readFromStream(inputStream, (source) => {
228+
const startTime = Date.now();
229+
const mem = process.memoryUsage().heapUsed;
230+
const relInputFilename = path.relative(process.cwd(), options.inputFile);
231+
const sourceMap = resolveSourceMap(
262232
source,
263233
options.inputSourceMap,
264234
options.sourceMap,
265235
options.inputFile,
266236
options.outputFile
267237
);
268-
var sourceMapAnnotation = '';
269-
var result;
238+
let sourceMapAnnotation = '';
239+
let result;
270240

271241
// main action
272-
try {
273-
var minifyFunc = options.declarationList ? csso.minifyBlock : csso.minify;
274-
result = minifyFunc(source, {
275-
filename: unixPathname(relInputFilename),
276-
sourceMap: Boolean(sourceMap.output),
277-
usage: options.usageData,
278-
restructure: options.restructure,
279-
forceMediaMerge: options.forceMediaMerge,
280-
comments: options.comments,
281-
debug: options.debug
282-
});
283-
284-
// for backward capability minify returns a string
285-
if (typeof result === 'string') {
286-
result = {
287-
css: result,
288-
map: null
289-
};
290-
}
291-
} catch (e) {
292-
if (e.parseError) {
293-
showParseError(source, options.inputFile, e.parseError, e.message);
294-
if (!options.debug) {
295-
process.exit(2);
296-
}
297-
}
242+
const minifyFunc = options.declarationList ? csso.minifyBlock : csso.minify;
243+
result = minifyFunc(source, {
244+
filename: unixPathname(relInputFilename),
245+
sourceMap: Boolean(sourceMap.output),
246+
usage: options.usageData,
247+
restructure: options.restructure,
248+
forceMediaMerge: options.forceMediaMerge,
249+
comments: options.comments,
250+
debug: options.debug
251+
});
298252

299-
throw e;
253+
// for backward capability minify returns a string
254+
if (typeof result === 'string') {
255+
result = {
256+
css: result,
257+
map: null
258+
};
300259
}
301260

302261
if (sourceMap.output && result.map) {
@@ -336,21 +295,20 @@ function minifyStream(options) {
336295

337296
// output statistics
338297
if (options.statistics) {
339-
var timeDiff = process.hrtime(time);
340298
showStat(
341299
relInputFilename,
342300
source.length,
343301
result.css.length,
344302
sourceMap.inputFile,
345303
sourceMapAnnotation.length,
346-
parseInt(timeDiff[0] * 1e3 + timeDiff[1] / 1e6, 10),
304+
Date.now() - startTime,
347305
process.memoryUsage().heapUsed - mem
348306
);
349307
}
350308
});
351309
}
352310

353-
var command = cli.command('csso [input]')
311+
const command = cli.command('csso [input]')
354312
.version(require('csso/package.json').version)
355313
.option('-i, --input <filename>', 'Input file')
356314
.option('-o, --output <filename>', 'Output file (result outputs to stdout if not set)')
@@ -364,7 +322,7 @@ var command = cli.command('csso [input]')
364322
.option('--stat', 'Output statistics in stderr')
365323
.option('--debug [level]', 'Output intermediate state of CSS during a compression', debugLevel, 0)
366324
.option('--watch', 'Watch source file for changes')
367-
.action(function({ options, args }) {
325+
.action(({ options, args }) => {
368326
options = processOptions(options, args);
369327

370328
if (options === null) {
@@ -378,15 +336,13 @@ var command = cli.command('csso [input]')
378336
if (options.watch && options.inputFile !== '<stdin>') {
379337
// NOTE: require chokidar here to keep down start up time when --watch doesn't use
380338
// (yep, chokidar adds a penalty ~0.2-0.3s on its init)
381-
require('chokidar').watch(options.inputFile).on('change', function() {
382-
minifyStream(options);
383-
});
339+
require('chokidar')
340+
.watch(options.inputFile)
341+
.on('change', () => minifyStream(options));
384342
}
385343
});
386344

387345
module.exports = {
388-
run: command.run.bind(command),
389-
isCliError: function(err) {
390-
return err instanceof cli.Error;
391-
}
346+
run: (...args) =>command.run(...args),
347+
isCliError: (err) => err instanceof cli.Error
392348
};

0 commit comments

Comments
 (0)