summaryrefslogtreecommitdiff
path: root/.eslintrc.yaml
blob: 0839e352cd399d291288be5f0492406b1814e4f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
root: true

plugins:
  - markdown

env:
  node: true
  es6: true

parser: babel-eslint

parserOptions:
  sourceType: script

overrides:
  - files: ["doc/api/esm.md", "*.mjs", "test/es-module/test-esm-example-loader.js"]
    parserOptions:
      sourceType: module

rules:
  # Possible Errors
  # http://eslint.org/docs/rules/#possible-errors
  for-direction: error
  no-control-regex: error
  no-debugger: error
  no-dupe-args: error
  no-dupe-keys: error
  no-duplicate-case: error
  no-empty-character-class: error
  no-ex-assign: error
  no-extra-boolean-cast: error
  no-extra-parens: [error, functions]
  no-extra-semi: error
  no-func-assign: error
  no-invalid-regexp: error
  no-irregular-whitespace: error
  no-obj-calls: error
  no-template-curly-in-string: error
  no-unexpected-multiline: error
  no-unreachable: error
  no-unsafe-negation: error
  use-isnan: error
  valid-typeof: error

  # Best Practices
  # http://eslint.org/docs/rules/#best-practices
  accessor-pairs: error
  array-callback-return: error
  dot-location: [error, property]
  eqeqeq: [error, smart]
  no-fallthrough: error
  no-global-assign: error
  no-multi-spaces: [error, {ignoreEOLComments: true}]
  no-octal: error
  no-proto: error
  no-redeclare: error
  no-restricted-properties:
    - error
    - object: assert
      property: deepEqual
      message: Use assert.deepStrictEqual().
    - object: assert
      property: notDeepEqual
      message: Use assert.notDeepStrictEqual().
    - object: assert
      property: equal
      message: Use assert.strictEqual() rather than assert.equal().
    - object: assert
      property: notEqual
      message: Use assert.notStrictEqual() rather than assert.notEqual().
    - property: __defineGetter__
      message: __defineGetter__ is deprecated.
    - property: __defineSetter__
      message: __defineSetter__ is deprecated.
  no-return-await: error
  no-self-assign: error
  no-throw-literal: error
  no-unused-labels: error
  no-useless-call: error
  no-useless-concat: error
  no-useless-escape: error
  no-useless-return: error
  no-void: error
  no-with: error

  # Strict Mode
  # http://eslint.org/docs/rules/#strict-mode
  strict: [error, global]

  # Variables
  # http://eslint.org/docs/rules/#variables
  no-delete-var: error
  no-undef: error
  no-unused-vars: [error, {args: none}]
  no-use-before-define: [error, {classes: true,
                                 functions: false,
                                 variables: false}]

  # Node.js and CommonJS
  # http://eslint.org/docs/rules/#nodejs-and-commonjs
  no-mixed-requires: error
  no-new-require: error
  no-path-concat: error
  no-restricted-modules: [error, sys]

  # Stylistic Issues
  # http://eslint.org/docs/rules/#stylistic-issues
  block-spacing: error
  brace-style: [error, 1tbs, {allowSingleLine: true}]
  comma-dangle: [error, only-multiline]
  comma-spacing: error
  comma-style: error
  computed-property-spacing: error
  eol-last: error
  func-call-spacing: error
  func-name-matching: error
  func-style: [error, declaration, {allowArrowFunctions: true}]
  indent: [error, 2, {ArrayExpression: first,
                      CallExpression: {arguments: first},
                      FunctionDeclaration: {parameters: first},
                      FunctionExpression: {parameters: first},
                      MemberExpression: off,
                      ObjectExpression: first,
                      SwitchCase: 1}]
  key-spacing: [error, {mode: minimum}]
  keyword-spacing: error
  linebreak-style: [error, unix]
  max-len: [error, {code: 80,
                ignorePattern: "^\/\/ Flags:",
                ignoreRegExpLiterals: true,
                ignoreUrls: true,
                tabWidth: 2}]
  new-parens: error
  no-lonely-if: error
  no-mixed-spaces-and-tabs: error
  no-multiple-empty-lines: [error, {max: 2, maxEOF: 0, maxBOF: 0}]
  no-restricted-syntax: [error, {
    selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])",
    message: "use a regular expression for second argument of assert.throws()"
  }, {
    selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]",
    message: "assert.throws() must be invoked with at least two arguments."
  }, {
    selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]",
    message: "setTimeout() must be invoked with at least two arguments."
  }, {
    selector: "CallExpression[callee.name='setInterval'][arguments.length<2]",
    message: "setInterval() must be invoked with at least 2 arguments."
  }, {
    selector: "ThrowStatement > CallExpression[callee.name=/Error$/]",
    message: "Use new keyword when throwing an Error."
  }]
  no-tabs: error
  no-trailing-spaces: error
  object-curly-spacing: [error, always]
  one-var-declaration-per-line: error
  operator-linebreak: [error, after]
  quotes: [error, single, avoid-escape]
  semi: error
  semi-spacing: error
  space-before-blocks: [error, always]
  space-before-function-paren: [error, {
    anonymous: never,
    named: never,
    asyncArrow: always
  }]
  space-in-parens: [error, never]
  space-infix-ops: error
  space-unary-ops: error
  unicode-bom: error

  # ECMAScript 6
  # http://eslint.org/docs/rules/#ecmascript-6
  arrow-parens: [error, always]
  arrow-spacing: [error, {before: true, after: true}]
  constructor-super: error
  no-class-assign: error
  no-confusing-arrow: error
  no-const-assign: error
  no-dupe-class-members: error
  no-new-symbol: error
  no-this-before-super: error
  prefer-const: [error, {ignoreReadBeforeAssign: true}]
  rest-spread-spacing: error
  symbol-description: error
  template-curly-spacing: error

  # Custom rules in tools/eslint-rules
  no-unescaped-regexp-dot: error

# Global scoped method and vars
globals:
  COUNTER_HTTP_CLIENT_REQUEST: false
  COUNTER_HTTP_CLIENT_RESPONSE: false
  COUNTER_HTTP_SERVER_REQUEST: false
  COUNTER_HTTP_SERVER_RESPONSE: false
  COUNTER_NET_SERVER_CONNECTION: false
  COUNTER_NET_SERVER_CONNECTION_CLOSE: false
  DTRACE_HTTP_CLIENT_REQUEST: false
  DTRACE_HTTP_CLIENT_RESPONSE: false
  DTRACE_HTTP_SERVER_REQUEST: false
  DTRACE_HTTP_SERVER_RESPONSE: false
  DTRACE_NET_SERVER_CONNECTION: false
  DTRACE_NET_STREAM_END: false
  LTTNG_HTTP_CLIENT_REQUEST: false
  LTTNG_HTTP_CLIENT_RESPONSE: false
  LTTNG_HTTP_SERVER_REQUEST: false
  LTTNG_HTTP_SERVER_RESPONSE: false
  LTTNG_NET_SERVER_CONNECTION: false
  LTTNG_NET_STREAM_END: false
  internalBinding: false