File tree 4 files changed +52
-0
lines changed
4 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -145,6 +145,7 @@ module.exports = {
145
145
146
146
// We want to prevent async await usage in our files to prevent uncessary bundle size. Turned off in tests.
147
147
'@sentry-internal/sdk/no-async-await' : 'error' ,
148
+ '@sentry-internal/sdk/no-nullish-coalescing' : 'error' ,
148
149
149
150
// JSDOC comments are required for classes and methods. As we have a public facing codebase, documentation,
150
151
// even if it may seems excessive at times, is important to emphasize. Turned off in tests.
@@ -178,6 +179,7 @@ module.exports = {
178
179
'@typescript-eslint/no-non-null-assertion' : 'off' ,
179
180
'@typescript-eslint/no-empty-function' : 'off' ,
180
181
'@sentry-internal/sdk/no-async-await' : 'off' ,
182
+ '@sentry-internal/sdk/no-nullish-coalescing' : 'off' ,
181
183
} ,
182
184
} ,
183
185
{
Original file line number Diff line number Diff line change 11
11
module . exports = {
12
12
rules : {
13
13
'no-async-await' : require ( './rules/no-async-await' ) ,
14
+ 'no-nullish-coalescing' : require ( './rules/no-nullish-coalescing' ) ,
14
15
'no-eq-empty' : require ( './rules/no-eq-empty' ) ,
15
16
} ,
16
17
} ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @fileoverview disallow nullish coalescing operators as they were introduced only in ES2020 and hence require
3
+ * us to add a polyfill. This increases bundle size more than avoiding nullish coalescing operators all together.
4
+ *
5
+ * @author Lukas Stracke
6
+ *
7
+ * Based on: https://github.com/mysticatea/eslint-plugin-es/blob/v4.1.0/lib/rules/no-nullish-coalescing-operators.js
8
+ */
9
+ 'use strict' ;
10
+
11
+ // ------------------------------------------------------------------------------
12
+ // Rule Definition
13
+ // ------------------------------------------------------------------------------
14
+
15
+ module . exports = {
16
+ meta : {
17
+ type : 'problem' ,
18
+ docs : {
19
+ description : 'disallow nullish coalescing operators.' ,
20
+ category : 'Best Practices' ,
21
+ recommended : true ,
22
+ } ,
23
+ messages : {
24
+ forbidden : 'Avoid using nullish coalescing operators.' ,
25
+ } ,
26
+ fixable : null ,
27
+ schema : [ ] ,
28
+ } ,
29
+ create ( context ) {
30
+ return {
31
+ "LogicalExpression[operator='??']" ( node ) {
32
+ context . report ( {
33
+ node : context . getSourceCode ( ) . getTokenAfter ( node . left , isNullishCoalescingOperator ) ,
34
+ messageId : 'forbidden' ,
35
+ } ) ;
36
+ } ,
37
+ } ;
38
+ } ,
39
+ } ;
40
+
41
+ /**
42
+ * Checks if the given token is a nullish coalescing operator or not.
43
+ * @param {Token } token - The token to check.
44
+ * @returns {boolean } `true` if the token is a nullish coalescing operator.
45
+ */
46
+ function isNullishCoalescingOperator ( token ) {
47
+ return token . value === '??' && token . type === 'Punctuator' ;
48
+ }
Original file line number Diff line number Diff line change @@ -5,5 +5,6 @@ module.exports = {
5
5
extends : [ '../../.eslintrc.js' ] ,
6
6
rules : {
7
7
'@sentry-internal/sdk/no-async-await' : 'off' ,
8
+ '@sentry-internal/sdk/no-nullish-coalescing' : 'off' ,
8
9
} ,
9
10
} ;
You can’t perform that action at this time.
0 commit comments