File tree Expand file tree Collapse file tree 4 files changed +54
-0
lines changed Expand file tree Collapse file tree 4 files changed +54
-0
lines changed Original file line number Diff line number Diff line change @@ -143,7 +143,10 @@ module.exports = {
143143 } ,
144144 ] ,
145145
146+ // We want to prevent optional chaining & nullish coalescing usage in our files
147+ // to prevent uncessary bundle size. Turned off in tests.
146148 '@sentry-internal/sdk/no-optional-chaining' : 'error' ,
149+ '@sentry-internal/sdk/no-nullish-coalescing' : 'error' ,
147150
148151 // JSDOC comments are required for classes and methods. As we have a public facing codebase, documentation,
149152 // even if it may seems excessive at times, is important to emphasize. Turned off in tests.
@@ -177,6 +180,7 @@ module.exports = {
177180 '@typescript-eslint/no-non-null-assertion' : 'off' ,
178181 '@typescript-eslint/no-empty-function' : 'off' ,
179182 '@sentry-internal/sdk/no-optional-chaining' : 'off' ,
183+ '@sentry-internal/sdk/no-nullish-coalescing' : 'off' ,
180184 } ,
181185 } ,
182186 {
Original file line number Diff line number Diff line change 1111module . exports = {
1212 rules : {
1313 'no-optional-chaining' : require ( './rules/no-optional-chaining' ) ,
14+ 'no-nullish-coalescing' : require ( './rules/no-nullish-coalescing' ) ,
1415 'no-eq-empty' : require ( './rules/no-eq-empty' ) ,
1516 } ,
1617} ;
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 = {
55 extends : [ '../../.eslintrc.js' ] ,
66 rules : {
77 '@sentry-internal/sdk/no-optional-chaining' : 'off' ,
8+ '@sentry-internal/sdk/no-nullish-coalescing' : 'off' ,
89 } ,
910} ;
You can’t perform that action at this time.
0 commit comments