From 8b37bcade5fba0ec9dcdb373f4cb30bb23b223ba Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 16 Jan 2023 15:55:09 +0100 Subject: [PATCH 1/2] build: Remove `@sentry-internal/sdk/no-async-await` rule --- packages/eslint-config-sdk/src/index.js | 4 +- packages/eslint-plugin-sdk/src/index.js | 1 - .../src/rules/no-async-await.js | 57 ------------------- .../test/lib/rules/no-async-await.js | 50 ---------------- packages/nextjs/.eslintrc.js | 1 - packages/node/.eslintrc.js | 1 - packages/opentelemetry-node/.eslintrc.js | 1 - packages/remix/.eslintrc.js | 1 - packages/replay/.eslintrc.js | 7 --- packages/serverless/.eslintrc.js | 1 - .../buildPolyfills/_asyncNullishCoalesce.ts | 1 - .../src/buildPolyfills/_asyncOptionalChain.ts | 1 - .../_asyncOptionalChainDelete.ts | 1 - 13 files changed, 3 insertions(+), 124 deletions(-) delete mode 100644 packages/eslint-plugin-sdk/src/rules/no-async-await.js delete mode 100644 packages/eslint-plugin-sdk/test/lib/rules/no-async-await.js diff --git a/packages/eslint-config-sdk/src/index.js b/packages/eslint-config-sdk/src/index.js index 593f47be1696..47e34271f6d7 100644 --- a/packages/eslint-config-sdk/src/index.js +++ b/packages/eslint-config-sdk/src/index.js @@ -143,10 +143,13 @@ module.exports = { }, ], +<<<<<<< HEAD // We want to prevent async await & optional chaining usage in our files to prevent uncessary bundle size. Turned off in tests. '@sentry-internal/sdk/no-async-await': 'error', '@sentry-internal/sdk/no-optional-chaining': 'error', +======= +>>>>>>> 9316b9981 (build: Remove `@sentry-internal/sdk/no-async-await` rule) // JSDOC comments are required for classes and methods. As we have a public facing codebase, documentation, // even if it may seems excessive at times, is important to emphasize. Turned off in tests. 'jsdoc/require-jsdoc': [ @@ -178,7 +181,6 @@ module.exports = { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-empty-function': 'off', - '@sentry-internal/sdk/no-async-await': 'off', '@sentry-internal/sdk/no-optional-chaining': 'off', }, }, diff --git a/packages/eslint-plugin-sdk/src/index.js b/packages/eslint-plugin-sdk/src/index.js index 2dc7b745120b..8b94bbe4705b 100644 --- a/packages/eslint-plugin-sdk/src/index.js +++ b/packages/eslint-plugin-sdk/src/index.js @@ -10,7 +10,6 @@ module.exports = { rules: { - 'no-async-await': require('./rules/no-async-await'), 'no-optional-chaining': require('./rules/no-optional-chaining'), 'no-eq-empty': require('./rules/no-eq-empty'), }, diff --git a/packages/eslint-plugin-sdk/src/rules/no-async-await.js b/packages/eslint-plugin-sdk/src/rules/no-async-await.js deleted file mode 100644 index b4fe4733085a..000000000000 --- a/packages/eslint-plugin-sdk/src/rules/no-async-await.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @fileoverview Rule to disallow using async await - * @author Abhijeet Prasad - */ -'use strict'; - -// ------------------------------------------------------------------------------ -// Rule Definition -// ------------------------------------------------------------------------------ - -module.exports = { - meta: { - type: 'problem', - docs: { - description: 'disallow usage of async await', - category: 'Best Practices', - recommended: true, - }, - fixable: null, - schema: [], - }, - create: function (context) { - // variables should be defined here - - // ---------------------------------------------------------------------- - // Helpers - // ---------------------------------------------------------------------- - - // any helper functions should go here or else delete this section - - // ---------------------------------------------------------------------- - // Public - // ---------------------------------------------------------------------- - - return { - FunctionDeclaration(node) { - if (node.async) { - context.report({ - node, - message: - 'Using async-await can add a lot to bundle size. Please do not use it outside of tests, use Promises instead', - }); - } - }, - - ArrowFunctionExpression(node) { - if (node.async) { - context.report({ - node, - message: - 'Using async-await can add a lot to bundle size. Please do not use it outside of tests, use Promises instead', - }); - } - }, - }; - }, -}; diff --git a/packages/eslint-plugin-sdk/test/lib/rules/no-async-await.js b/packages/eslint-plugin-sdk/test/lib/rules/no-async-await.js deleted file mode 100644 index 90300122f471..000000000000 --- a/packages/eslint-plugin-sdk/test/lib/rules/no-async-await.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * @fileoverview Rule to disallow using async await - * @author Abhijeet Prasad - */ -'use strict'; - -// ------------------------------------------------------------------------------ -// Requirements -// ------------------------------------------------------------------------------ - -const RuleTester = require('eslint').RuleTester; - -const rule = require('../../../src/rules/no-async-await'); - -// ------------------------------------------------------------------------------ -// Tests -// ------------------------------------------------------------------------------ - -RuleTester.setDefaultConfig({ - parserOptions: { - ecmaVersion: 8, - }, -}); -const ruleTester = new RuleTester(); - -ruleTester.run('no-async-await', rule, { - valid: [], - invalid: [ - { - code: 'async function hello() { await new Promise(); };', - errors: [ - { - message: - 'Using async-await can add a lot to bundle size. Please do not use it outside of tests, use Promises instead', - type: 'FunctionDeclaration', - }, - ], - }, - { - code: 'const hello = async () => { await new Promise(); };', - errors: [ - { - message: - 'Using async-await can add a lot to bundle size. Please do not use it outside of tests, use Promises instead', - type: 'ArrowFunctionExpression', - }, - ], - }, - ], -}); diff --git a/packages/nextjs/.eslintrc.js b/packages/nextjs/.eslintrc.js index feca51e00112..b6f6b1b9938c 100644 --- a/packages/nextjs/.eslintrc.js +++ b/packages/nextjs/.eslintrc.js @@ -9,7 +9,6 @@ module.exports = { ignorePatterns: ['test/integration/**'], extends: ['../../.eslintrc.js'], rules: { - '@sentry-internal/sdk/no-async-await': 'off', '@sentry-internal/sdk/no-optional-chaining': 'off', }, overrides: [ diff --git a/packages/node/.eslintrc.js b/packages/node/.eslintrc.js index f1dd86468e11..9899ea1b73d8 100644 --- a/packages/node/.eslintrc.js +++ b/packages/node/.eslintrc.js @@ -4,7 +4,6 @@ module.exports = { }, extends: ['../../.eslintrc.js'], rules: { - '@sentry-internal/sdk/no-async-await': 'off', '@sentry-internal/sdk/no-optional-chaining': 'off', }, }; diff --git a/packages/opentelemetry-node/.eslintrc.js b/packages/opentelemetry-node/.eslintrc.js index f1dd86468e11..9899ea1b73d8 100644 --- a/packages/opentelemetry-node/.eslintrc.js +++ b/packages/opentelemetry-node/.eslintrc.js @@ -4,7 +4,6 @@ module.exports = { }, extends: ['../../.eslintrc.js'], rules: { - '@sentry-internal/sdk/no-async-await': 'off', '@sentry-internal/sdk/no-optional-chaining': 'off', }, }; diff --git a/packages/remix/.eslintrc.js b/packages/remix/.eslintrc.js index f42e5b96cbf0..4195984e1745 100644 --- a/packages/remix/.eslintrc.js +++ b/packages/remix/.eslintrc.js @@ -9,7 +9,6 @@ module.exports = { ignorePatterns: ['playwright.config.ts', 'test/integration/**'], extends: ['../../.eslintrc.js'], rules: { - '@sentry-internal/sdk/no-async-await': 'off', '@sentry-internal/sdk/no-optional-chaining': 'off', }, overrides: [ diff --git a/packages/replay/.eslintrc.js b/packages/replay/.eslintrc.js index 85d8dbf13a1e..bb645aac9ed1 100644 --- a/packages/replay/.eslintrc.js +++ b/packages/replay/.eslintrc.js @@ -20,13 +20,6 @@ module.exports = { sourceType: 'module', }, }, - { - files: ['*.ts', '*.tsx', '*.d.ts'], - rules: { - // Since we target only es6 here, we can leave this off - '@sentry-internal/sdk/no-async-await': 'off', - }, - }, { files: ['jest.setup.ts', 'jest.config.ts'], parserOptions: { diff --git a/packages/serverless/.eslintrc.js b/packages/serverless/.eslintrc.js index ddc5fe29c131..99fcba0976da 100644 --- a/packages/serverless/.eslintrc.js +++ b/packages/serverless/.eslintrc.js @@ -4,7 +4,6 @@ module.exports = { }, extends: ['../../.eslintrc.js'], rules: { - '@sentry-internal/sdk/no-async-await': 'off', '@sentry-internal/sdk/no-optional-chaining': 'off', }, overrides: [ diff --git a/packages/utils/src/buildPolyfills/_asyncNullishCoalesce.ts b/packages/utils/src/buildPolyfills/_asyncNullishCoalesce.ts index c1b075ee5222..6030dae0d939 100644 --- a/packages/utils/src/buildPolyfills/_asyncNullishCoalesce.ts +++ b/packages/utils/src/buildPolyfills/_asyncNullishCoalesce.ts @@ -15,7 +15,6 @@ import { _nullishCoalesce } from './_nullishCoalesce'; * @param rhsFn A function returning the value of the expression to the right of the `??` * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value */ -// eslint-disable-next-line @sentry-internal/sdk/no-async-await export async function _asyncNullishCoalesce(lhs: unknown, rhsFn: () => unknown): Promise { return _nullishCoalesce(lhs, rhsFn); } diff --git a/packages/utils/src/buildPolyfills/_asyncOptionalChain.ts b/packages/utils/src/buildPolyfills/_asyncOptionalChain.ts index 71c0382451b5..1d939833b9bd 100644 --- a/packages/utils/src/buildPolyfills/_asyncOptionalChain.ts +++ b/packages/utils/src/buildPolyfills/_asyncOptionalChain.ts @@ -10,7 +10,6 @@ import type { GenericFunction } from './types'; * @param ops Array result of expression conversion * @returns The value of the expression */ -// eslint-disable-next-line @sentry-internal/sdk/no-async-await export async function _asyncOptionalChain(ops: unknown[]): Promise { let lastAccessLHS: unknown = undefined; let value = ops[0]; diff --git a/packages/utils/src/buildPolyfills/_asyncOptionalChainDelete.ts b/packages/utils/src/buildPolyfills/_asyncOptionalChainDelete.ts index bf0260337919..ea84435db75e 100644 --- a/packages/utils/src/buildPolyfills/_asyncOptionalChainDelete.ts +++ b/packages/utils/src/buildPolyfills/_asyncOptionalChainDelete.ts @@ -12,7 +12,6 @@ import { _asyncOptionalChain } from './_asyncOptionalChain'; * property (one which can't be deleted or turned into an accessor, and whose enumerability can't be changed), in which * case `false`. */ -// eslint-disable-next-line @sentry-internal/sdk/no-async-await export async function _asyncOptionalChainDelete(ops: unknown[]): Promise { const result = (await _asyncOptionalChain(ops)) as Promise; // If `result` is `null`, it means we didn't get to the end of the chain and so nothing was deleted (in which case, From e6afe751da41012064c74b746dd12dbf11a9c9b9 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 16 Jan 2023 17:07:53 +0100 Subject: [PATCH 2/2] oops --- packages/eslint-config-sdk/src/index.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/eslint-config-sdk/src/index.js b/packages/eslint-config-sdk/src/index.js index 47e34271f6d7..b93cc63508df 100644 --- a/packages/eslint-config-sdk/src/index.js +++ b/packages/eslint-config-sdk/src/index.js @@ -143,13 +143,8 @@ module.exports = { }, ], -<<<<<<< HEAD - // We want to prevent async await & optional chaining usage in our files to prevent uncessary bundle size. Turned off in tests. - '@sentry-internal/sdk/no-async-await': 'error', '@sentry-internal/sdk/no-optional-chaining': 'error', -======= ->>>>>>> 9316b9981 (build: Remove `@sentry-internal/sdk/no-async-await` rule) // JSDOC comments are required for classes and methods. As we have a public facing codebase, documentation, // even if it may seems excessive at times, is important to emphasize. Turned off in tests. 'jsdoc/require-jsdoc': [