UNPKG

1.46 kBJavaScriptView Raw
1/**
2 * Disallows newline before module.exports
3 *
4 * Type: `Boolean`
5 *
6 * Value: `true`
7 *
8 * #### Example
9 *
10 * ```js
11 * "disallowPaddingNewLinesBeforeExport": true
12 * ```
13 *
14 * ##### Valid
15 *
16 * ```js
17 * var a = 2;
18 * module.exports = a;
19 * ```
20 *
21 * ##### Invalid
22 *
23 * ```js
24 * var a = 2;
25 *
26 * module.exports = a;
27 * ```
28 */
29
30var assert = require('assert');
31
32module.exports = function() {};
33
34module.exports.prototype = {
35
36 configure: function(value) {
37 assert(
38 value === true,
39 this.getOptionName() + ' option requires a true value or should be removed'
40 );
41 },
42
43 getOptionName: function() {
44 return 'disallowPaddingNewLinesBeforeExport';
45 },
46
47 check: function(file, errors) {
48 file.iterateNodesByType('AssignmentExpression', function(node) {
49 var left = node.left;
50
51 if (!(
52 left.object &&
53 left.object.name === 'module' &&
54 left.property &&
55 left.property.name === 'exports')) {
56 return;
57 }
58
59 var firstToken = node.getFirstToken();
60 var prevToken = file.getPrevToken(firstToken, {includeComments: true});
61
62 errors.assert.linesBetween({
63 atMost: 1,
64 token: prevToken,
65 nextToken: firstToken,
66 message: 'Unexpected extra newline before export'
67 });
68 });
69 }
70
71};