eslint 0.22.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +111 -95
  3. package/bin/eslint.js +41 -41
  4. package/conf/environments.js +87 -81
  5. package/conf/eslint.json +186 -179
  6. package/lib/api.js +13 -12
  7. package/lib/cli-engine.js +441 -451
  8. package/lib/cli.js +196 -196
  9. package/lib/config-initializer.js +145 -145
  10. package/lib/config-validator.js +110 -110
  11. package/lib/config.js +428 -416
  12. package/lib/eslint.js +1072 -1073
  13. package/lib/file-finder.js +167 -167
  14. package/lib/formatters/checkstyle.js +68 -68
  15. package/lib/formatters/compact.js +53 -53
  16. package/lib/formatters/jslint-xml.js +40 -40
  17. package/lib/formatters/junit.js +63 -63
  18. package/lib/formatters/stylish.js +90 -90
  19. package/lib/formatters/tap.js +86 -86
  20. package/lib/ignored-paths.js +137 -137
  21. package/lib/load-rules.js +39 -39
  22. package/lib/options.js +132 -126
  23. package/lib/rule-context.js +107 -107
  24. package/lib/rules/accessor-pairs.js +65 -65
  25. package/lib/rules/array-bracket-spacing.js +180 -0
  26. package/lib/rules/block-scoped-var.js +339 -320
  27. package/lib/rules/brace-style.js +228 -228
  28. package/lib/rules/camelcase.js +111 -111
  29. package/lib/rules/comma-dangle.js +67 -64
  30. package/lib/rules/comma-spacing.js +191 -191
  31. package/lib/rules/comma-style.js +195 -195
  32. package/lib/rules/complexity.js +94 -94
  33. package/lib/rules/computed-property-spacing.js +144 -0
  34. package/lib/rules/consistent-return.js +75 -75
  35. package/lib/rules/consistent-this.js +119 -119
  36. package/lib/rules/constructor-super.js +108 -0
  37. package/lib/rules/curly.js +109 -109
  38. package/lib/rules/default-case.js +66 -66
  39. package/lib/rules/dot-location.js +63 -63
  40. package/lib/rules/dot-notation.js +119 -119
  41. package/lib/rules/eol-last.js +38 -38
  42. package/lib/rules/eqeqeq.js +96 -96
  43. package/lib/rules/func-names.js +45 -45
  44. package/lib/rules/func-style.js +49 -49
  45. package/lib/rules/generator-star-spacing.js +104 -87
  46. package/lib/rules/generator-star.js +76 -76
  47. package/lib/rules/global-strict.js +49 -49
  48. package/lib/rules/guard-for-in.js +32 -32
  49. package/lib/rules/handle-callback-err.js +81 -124
  50. package/lib/rules/indent.js +486 -486
  51. package/lib/rules/key-spacing.js +325 -325
  52. package/lib/rules/linebreak-style.js +44 -44
  53. package/lib/rules/lines-around-comment.js +228 -160
  54. package/lib/rules/max-depth.js +89 -89
  55. package/lib/rules/max-len.js +76 -76
  56. package/lib/rules/max-nested-callbacks.js +73 -73
  57. package/lib/rules/max-params.js +45 -45
  58. package/lib/rules/max-statements.js +61 -61
  59. package/lib/rules/new-cap.js +224 -224
  60. package/lib/rules/new-parens.js +29 -29
  61. package/lib/rules/newline-after-var.js +127 -127
  62. package/lib/rules/no-alert.js +153 -153
  63. package/lib/rules/no-array-constructor.js +31 -31
  64. package/lib/rules/no-bitwise.js +57 -57
  65. package/lib/rules/no-caller.js +29 -29
  66. package/lib/rules/no-catch-shadow.js +52 -52
  67. package/lib/rules/no-comma-dangle.js +45 -45
  68. package/lib/rules/no-cond-assign.js +123 -123
  69. package/lib/rules/no-console.js +27 -27
  70. package/lib/rules/no-constant-condition.js +73 -73
  71. package/lib/rules/no-continue.js +23 -23
  72. package/lib/rules/no-control-regex.js +58 -58
  73. package/lib/rules/no-debugger.js +22 -22
  74. package/lib/rules/no-delete-var.js +25 -25
  75. package/lib/rules/no-div-regex.js +27 -27
  76. package/lib/rules/no-dupe-args.js +89 -85
  77. package/lib/rules/no-dupe-keys.js +43 -43
  78. package/lib/rules/no-duplicate-case.js +67 -67
  79. package/lib/rules/no-else-return.js +125 -125
  80. package/lib/rules/no-empty-character-class.js +43 -43
  81. package/lib/rules/no-empty-class.js +45 -45
  82. package/lib/rules/no-empty-label.js +27 -27
  83. package/lib/rules/no-empty.js +49 -49
  84. package/lib/rules/no-eq-null.js +29 -29
  85. package/lib/rules/no-eval.js +26 -26
  86. package/lib/rules/no-ex-assign.js +42 -42
  87. package/lib/rules/no-extend-native.js +103 -103
  88. package/lib/rules/no-extra-bind.js +81 -81
  89. package/lib/rules/no-extra-boolean-cast.js +71 -71
  90. package/lib/rules/no-extra-parens.js +368 -355
  91. package/lib/rules/no-extra-semi.js +70 -23
  92. package/lib/rules/no-extra-strict.js +86 -86
  93. package/lib/rules/no-fallthrough.js +97 -97
  94. package/lib/rules/no-floating-decimal.js +30 -30
  95. package/lib/rules/no-func-assign.js +83 -83
  96. package/lib/rules/no-implied-eval.js +76 -76
  97. package/lib/rules/no-inline-comments.js +49 -49
  98. package/lib/rules/no-inner-declarations.js +78 -78
  99. package/lib/rules/no-invalid-regexp.js +53 -53
  100. package/lib/rules/no-irregular-whitespace.js +135 -135
  101. package/lib/rules/no-iterator.js +28 -28
  102. package/lib/rules/no-label-var.js +64 -64
  103. package/lib/rules/no-labels.js +44 -44
  104. package/lib/rules/no-lone-blocks.js +106 -27
  105. package/lib/rules/no-lonely-if.js +30 -30
  106. package/lib/rules/no-loop-func.js +58 -58
  107. package/lib/rules/no-mixed-requires.js +165 -165
  108. package/lib/rules/no-mixed-spaces-and-tabs.js +74 -74
  109. package/lib/rules/no-multi-spaces.js +119 -119
  110. package/lib/rules/no-multi-str.js +43 -43
  111. package/lib/rules/no-multiple-empty-lines.js +98 -98
  112. package/lib/rules/no-native-reassign.js +62 -62
  113. package/lib/rules/no-negated-in-lhs.js +25 -25
  114. package/lib/rules/no-nested-ternary.js +24 -24
  115. package/lib/rules/no-new-func.js +25 -25
  116. package/lib/rules/no-new-object.js +25 -25
  117. package/lib/rules/no-new-require.js +25 -25
  118. package/lib/rules/no-new-wrappers.js +26 -26
  119. package/lib/rules/no-new.js +27 -27
  120. package/lib/rules/no-obj-calls.js +28 -28
  121. package/lib/rules/no-octal-escape.js +39 -39
  122. package/lib/rules/no-octal.js +25 -25
  123. package/lib/rules/no-param-reassign.js +87 -87
  124. package/lib/rules/no-path-concat.js +39 -39
  125. package/lib/rules/no-plusplus.js +24 -24
  126. package/lib/rules/no-process-env.js +30 -30
  127. package/lib/rules/no-process-exit.js +33 -33
  128. package/lib/rules/no-proto.js +28 -28
  129. package/lib/rules/no-redeclare.js +68 -68
  130. package/lib/rules/no-regex-spaces.js +35 -35
  131. package/lib/rules/no-reserved-keys.js +56 -56
  132. package/lib/rules/no-restricted-modules.js +85 -85
  133. package/lib/rules/no-return-assign.js +53 -24
  134. package/lib/rules/no-script-url.js +34 -34
  135. package/lib/rules/no-self-compare.js +29 -29
  136. package/lib/rules/no-sequences.js +94 -94
  137. package/lib/rules/no-shadow-restricted-names.js +51 -51
  138. package/lib/rules/no-shadow.js +181 -136
  139. package/lib/rules/no-space-before-semi.js +98 -98
  140. package/lib/rules/no-spaced-func.js +37 -37
  141. package/lib/rules/no-sparse-arrays.js +33 -33
  142. package/lib/rules/no-sync.js +30 -30
  143. package/lib/rules/no-ternary.js +24 -24
  144. package/lib/rules/no-this-before-super.js +144 -0
  145. package/lib/rules/no-throw-literal.js +33 -33
  146. package/lib/rules/no-trailing-spaces.js +74 -63
  147. package/lib/rules/no-undef-init.js +28 -28
  148. package/lib/rules/no-undef.js +92 -92
  149. package/lib/rules/no-undefined.js +27 -27
  150. package/lib/rules/no-underscore-dangle.js +73 -73
  151. package/lib/rules/no-unexpected-multiline.js +58 -0
  152. package/lib/rules/no-unneeded-ternary.js +48 -48
  153. package/lib/rules/no-unreachable.js +98 -98
  154. package/lib/rules/no-unused-expressions.js +76 -76
  155. package/lib/rules/no-unused-vars.js +252 -250
  156. package/lib/rules/no-use-before-define.js +105 -105
  157. package/lib/rules/no-var.js +26 -26
  158. package/lib/rules/no-void.js +28 -28
  159. package/lib/rules/no-warning-comments.js +102 -102
  160. package/lib/rules/no-with.js +22 -22
  161. package/lib/rules/no-wrap-func.js +65 -65
  162. package/lib/rules/object-curly-spacing.js +231 -206
  163. package/lib/rules/object-shorthand.js +74 -73
  164. package/lib/rules/one-var.js +311 -304
  165. package/lib/rules/operator-assignment.js +118 -118
  166. package/lib/rules/operator-linebreak.js +114 -114
  167. package/lib/rules/padded-blocks.js +98 -98
  168. package/lib/rules/prefer-const.js +91 -0
  169. package/lib/rules/quote-props.js +72 -72
  170. package/lib/rules/quotes.js +92 -92
  171. package/lib/rules/radix.js +41 -41
  172. package/lib/rules/semi-spacing.js +167 -167
  173. package/lib/rules/semi.js +136 -136
  174. package/lib/rules/sort-vars.js +49 -49
  175. package/lib/rules/space-after-function-name.js +49 -49
  176. package/lib/rules/space-after-keywords.js +82 -82
  177. package/lib/rules/space-before-blocks.js +91 -91
  178. package/lib/rules/space-before-function-paren.js +139 -139
  179. package/lib/rules/space-before-function-parentheses.js +139 -139
  180. package/lib/rules/space-in-brackets.js +305 -305
  181. package/lib/rules/space-in-parens.js +281 -281
  182. package/lib/rules/space-infix-ops.js +106 -106
  183. package/lib/rules/space-return-throw-case.js +38 -38
  184. package/lib/rules/space-unary-ops.js +124 -133
  185. package/lib/rules/spaced-comment.js +143 -0
  186. package/lib/rules/spaced-line-comment.js +89 -89
  187. package/lib/rules/strict.js +242 -242
  188. package/lib/rules/use-isnan.js +26 -26
  189. package/lib/rules/valid-jsdoc.js +215 -215
  190. package/lib/rules/valid-typeof.js +42 -42
  191. package/lib/rules/vars-on-top.js +115 -115
  192. package/lib/rules/wrap-iife.js +48 -48
  193. package/lib/rules/wrap-regex.js +38 -38
  194. package/lib/rules/yoda.js +242 -225
  195. package/lib/rules.js +88 -88
  196. package/lib/timing.js +109 -109
  197. package/lib/token-store.js +201 -201
  198. package/lib/util/traverse.js +105 -105
  199. package/lib/util.js +125 -85
  200. package/package.json +6 -6
  201. package/CHANGELOG.md +0 -1638
@@ -1,191 +1,191 @@
1
- /**
2
- * @fileoverview Comma spacing - validates spacing before and after comma
3
- * @author Vignesh Anand aka vegetableman.
4
- * @copyright 2014 Vignesh Anand. All rights reserved.
5
- */
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- module.exports = function(context) {
13
-
14
- var options = {
15
- before: context.options[0] ? !!context.options[0].before : false,
16
- after: context.options[0] ? !!context.options[0].after : true
17
- };
18
-
19
- //--------------------------------------------------------------------------
20
- // Helpers
21
- //--------------------------------------------------------------------------
22
-
23
- // the index of the last comment that was checked
24
- var lastCommentIndex = 0;
25
- var allComments;
26
-
27
- /**
28
- * Determines the length of comment between 2 tokens
29
- * @param {Object} left - The left token object.
30
- * @param {Object} right - The right token object.
31
- * @returns {number} Length of comment in between tokens
32
- */
33
- function getCommentLengthBetweenTokens(left, right) {
34
- return allComments.reduce(function(val, comment) {
35
- if (left.range[1] <= comment.range[0] && comment.range[1] <= right.range[0]) {
36
- val = val + comment.range[1] - comment.range[0];
37
- }
38
- return val;
39
- }, 0);
40
- }
41
-
42
- /**
43
- * Determines whether two adjacent tokens have whitespace between them.
44
- * @param {Object} left - The left token object.
45
- * @param {Object} right - The right token object.
46
- * @returns {boolean} Whether or not there is space between the tokens.
47
- */
48
- function isSpaced(left, right) {
49
- var punctuationLength = context.getTokensBetween(left, right).length; // the length of any parenthesis
50
- var commentLenth = getCommentLengthBetweenTokens(left, right);
51
- return (left.range[1] + punctuationLength + commentLenth) < right.range[0];
52
- }
53
-
54
- /**
55
- * Checks whether two tokens are on the same line.
56
- * @param {ASTNode} left The leftmost token.
57
- * @param {ASTNode} right The rightmost token.
58
- * @returns {boolean} True if the tokens are on the same line, false if not.
59
- * @private
60
- */
61
- function isSameLine(left, right) {
62
- return left.loc.end.line === right.loc.start.line;
63
- }
64
-
65
- /**
66
- * Determines if a given token is a comma operator.
67
- * @param {ASTNode} token The token to check.
68
- * @returns {boolean} True if the token is a comma, false if not.
69
- * @private
70
- */
71
- function isComma(token) {
72
- return !!token && (token.type === "Punctuator") && (token.value === ",");
73
- }
74
-
75
- /**
76
- * Reports a spacing error with an appropriate message.
77
- * @param {ASTNode} node The binary expression node to report.
78
- * @param {string} dir Is the error "before" or "after" the comma?
79
- * @returns {void}
80
- * @private
81
- */
82
- function report(node, dir) {
83
- context.report(node, options[dir] ?
84
- "A space is required " + dir + " ','." :
85
- "There should be no space " + dir + " ','.");
86
- }
87
-
88
- /**
89
- * Validates the spacing around a comma token.
90
- * @param {Object} tokens - The tokens to be validated.
91
- * @param {Token} tokens.comma The token representing the comma.
92
- * @param {Token} [tokens.left] The last token before the comma.
93
- * @param {Token} [tokens.right] The first token after the comma.
94
- * @param {Token|ASTNode} reportItem The item to use when reporting an error.
95
- * @returns {void}
96
- * @private
97
- */
98
- function validateCommaItemSpacing(tokens, reportItem) {
99
- if (tokens.left && isSameLine(tokens.left, tokens.comma) &&
100
- (options.before !== isSpaced(tokens.left, tokens.comma))
101
- ) {
102
- report(reportItem, "before");
103
- }
104
- if (tokens.right && isSameLine(tokens.comma, tokens.right) &&
105
- (options.after !== isSpaced(tokens.comma, tokens.right))
106
- ) {
107
- report(reportItem, "after");
108
- }
109
- }
110
-
111
- /**
112
- * Determines if a given source index is in a comment or not by checking
113
- * the index against the comment range. Since the check goes straight
114
- * through the file, once an index is passed a certain comment, we can
115
- * go to the next comment to check that.
116
- * @param {int} index The source index to check.
117
- * @param {ASTNode[]} comments An array of comment nodes.
118
- * @returns {boolean} True if the index is within a comment, false if not.
119
- * @private
120
- */
121
- function isIndexInComment(index, comments) {
122
-
123
- var comment;
124
-
125
- while (lastCommentIndex < comments.length) {
126
-
127
- comment = comments[lastCommentIndex];
128
-
129
- if (comment.range[0] <= index && index < comment.range[1]) {
130
- return true;
131
- } else if (index > comment.range[1]) {
132
- lastCommentIndex++;
133
- } else {
134
- break;
135
- }
136
-
137
- }
138
-
139
- return false;
140
- }
141
-
142
- //--------------------------------------------------------------------------
143
- // Public
144
- //--------------------------------------------------------------------------
145
-
146
- return {
147
- "Program": function() {
148
-
149
- var source = context.getSource(),
150
- pattern = /,/g,
151
- commaToken,
152
- previousToken,
153
- nextToken;
154
-
155
- allComments = context.getAllComments();
156
- while (pattern.test(source)) {
157
-
158
- // do not flag anything inside of comments
159
- if (!isIndexInComment(pattern.lastIndex, allComments)) {
160
- commaToken = context.getTokenByRangeStart(pattern.lastIndex - 1);
161
-
162
- if (commaToken && commaToken.type !== "JSXText") {
163
- previousToken = context.getTokenBefore(commaToken);
164
- nextToken = context.getTokenAfter(commaToken);
165
- validateCommaItemSpacing({
166
- comma: commaToken,
167
- left: isComma(previousToken) ? null : previousToken,
168
- right: isComma(nextToken) ? null : nextToken
169
- }, commaToken);
170
- }
171
- }
172
- }
173
- }
174
- };
175
-
176
- };
177
-
178
- module.exports.schema = [
179
- {
180
- "type": "object",
181
- "properties": {
182
- "before": {
183
- "type": "boolean"
184
- },
185
- "after": {
186
- "type": "boolean"
187
- }
188
- },
189
- "additionalProperties": false
190
- }
191
- ];
1
+ /**
2
+ * @fileoverview Comma spacing - validates spacing before and after comma
3
+ * @author Vignesh Anand aka vegetableman.
4
+ * @copyright 2014 Vignesh Anand. All rights reserved.
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ module.exports = function(context) {
13
+
14
+ var options = {
15
+ before: context.options[0] ? !!context.options[0].before : false,
16
+ after: context.options[0] ? !!context.options[0].after : true
17
+ };
18
+
19
+ //--------------------------------------------------------------------------
20
+ // Helpers
21
+ //--------------------------------------------------------------------------
22
+
23
+ // the index of the last comment that was checked
24
+ var lastCommentIndex = 0;
25
+ var allComments;
26
+
27
+ /**
28
+ * Determines the length of comment between 2 tokens
29
+ * @param {Object} left - The left token object.
30
+ * @param {Object} right - The right token object.
31
+ * @returns {number} Length of comment in between tokens
32
+ */
33
+ function getCommentLengthBetweenTokens(left, right) {
34
+ return allComments.reduce(function(val, comment) {
35
+ if (left.range[1] <= comment.range[0] && comment.range[1] <= right.range[0]) {
36
+ val = val + comment.range[1] - comment.range[0];
37
+ }
38
+ return val;
39
+ }, 0);
40
+ }
41
+
42
+ /**
43
+ * Determines whether two adjacent tokens have whitespace between them.
44
+ * @param {Object} left - The left token object.
45
+ * @param {Object} right - The right token object.
46
+ * @returns {boolean} Whether or not there is space between the tokens.
47
+ */
48
+ function isSpaced(left, right) {
49
+ var punctuationLength = context.getTokensBetween(left, right).length; // the length of any parenthesis
50
+ var commentLenth = getCommentLengthBetweenTokens(left, right);
51
+ return (left.range[1] + punctuationLength + commentLenth) < right.range[0];
52
+ }
53
+
54
+ /**
55
+ * Checks whether two tokens are on the same line.
56
+ * @param {ASTNode} left The leftmost token.
57
+ * @param {ASTNode} right The rightmost token.
58
+ * @returns {boolean} True if the tokens are on the same line, false if not.
59
+ * @private
60
+ */
61
+ function isSameLine(left, right) {
62
+ return left.loc.end.line === right.loc.start.line;
63
+ }
64
+
65
+ /**
66
+ * Determines if a given token is a comma operator.
67
+ * @param {ASTNode} token The token to check.
68
+ * @returns {boolean} True if the token is a comma, false if not.
69
+ * @private
70
+ */
71
+ function isComma(token) {
72
+ return !!token && (token.type === "Punctuator") && (token.value === ",");
73
+ }
74
+
75
+ /**
76
+ * Reports a spacing error with an appropriate message.
77
+ * @param {ASTNode} node The binary expression node to report.
78
+ * @param {string} dir Is the error "before" or "after" the comma?
79
+ * @returns {void}
80
+ * @private
81
+ */
82
+ function report(node, dir) {
83
+ context.report(node, options[dir] ?
84
+ "A space is required " + dir + " ','." :
85
+ "There should be no space " + dir + " ','.");
86
+ }
87
+
88
+ /**
89
+ * Validates the spacing around a comma token.
90
+ * @param {Object} tokens - The tokens to be validated.
91
+ * @param {Token} tokens.comma The token representing the comma.
92
+ * @param {Token} [tokens.left] The last token before the comma.
93
+ * @param {Token} [tokens.right] The first token after the comma.
94
+ * @param {Token|ASTNode} reportItem The item to use when reporting an error.
95
+ * @returns {void}
96
+ * @private
97
+ */
98
+ function validateCommaItemSpacing(tokens, reportItem) {
99
+ if (tokens.left && isSameLine(tokens.left, tokens.comma) &&
100
+ (options.before !== isSpaced(tokens.left, tokens.comma))
101
+ ) {
102
+ report(reportItem, "before");
103
+ }
104
+ if (tokens.right && isSameLine(tokens.comma, tokens.right) &&
105
+ (options.after !== isSpaced(tokens.comma, tokens.right))
106
+ ) {
107
+ report(reportItem, "after");
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Determines if a given source index is in a comment or not by checking
113
+ * the index against the comment range. Since the check goes straight
114
+ * through the file, once an index is passed a certain comment, we can
115
+ * go to the next comment to check that.
116
+ * @param {int} index The source index to check.
117
+ * @param {ASTNode[]} comments An array of comment nodes.
118
+ * @returns {boolean} True if the index is within a comment, false if not.
119
+ * @private
120
+ */
121
+ function isIndexInComment(index, comments) {
122
+
123
+ var comment;
124
+
125
+ while (lastCommentIndex < comments.length) {
126
+
127
+ comment = comments[lastCommentIndex];
128
+
129
+ if (comment.range[0] <= index && index < comment.range[1]) {
130
+ return true;
131
+ } else if (index > comment.range[1]) {
132
+ lastCommentIndex++;
133
+ } else {
134
+ break;
135
+ }
136
+
137
+ }
138
+
139
+ return false;
140
+ }
141
+
142
+ //--------------------------------------------------------------------------
143
+ // Public
144
+ //--------------------------------------------------------------------------
145
+
146
+ return {
147
+ "Program": function() {
148
+
149
+ var source = context.getSource(),
150
+ pattern = /,/g,
151
+ commaToken,
152
+ previousToken,
153
+ nextToken;
154
+
155
+ allComments = context.getAllComments();
156
+ while (pattern.test(source)) {
157
+
158
+ // do not flag anything inside of comments
159
+ if (!isIndexInComment(pattern.lastIndex, allComments)) {
160
+ commaToken = context.getTokenByRangeStart(pattern.lastIndex - 1);
161
+
162
+ if (commaToken && commaToken.type !== "JSXText") {
163
+ previousToken = context.getTokenBefore(commaToken);
164
+ nextToken = context.getTokenAfter(commaToken);
165
+ validateCommaItemSpacing({
166
+ comma: commaToken,
167
+ left: isComma(previousToken) ? null : previousToken,
168
+ right: isComma(nextToken) ? null : nextToken
169
+ }, commaToken);
170
+ }
171
+ }
172
+ }
173
+ }
174
+ };
175
+
176
+ };
177
+
178
+ module.exports.schema = [
179
+ {
180
+ "type": "object",
181
+ "properties": {
182
+ "before": {
183
+ "type": "boolean"
184
+ },
185
+ "after": {
186
+ "type": "boolean"
187
+ }
188
+ },
189
+ "additionalProperties": false
190
+ }
191
+ ];