sindresorhus / eslint-plugin-unicorn

More than 100 powerful ESLint rules
MIT License
3.99k stars 361 forks source link

[import-style]: `missing argument: node` for enum exports #2148

Open DerHerrGammler opened 1 year ago

DerHerrGammler commented 1 year ago

When checkExportFrom is activated in unicorn/import-style you get the following error:

console:

TypeError: Missing required argument: node.
Occurred while linting C:\workspace\herold-solutions\libs\ts\helper\src\lib\enum\http-method.ts:1
Rule: "unicorn/import-style"
    at SourceCode.getScope (C:\workspace\herold-solutions\node_modules\eslint\lib\source-code\source-code.js:617:19)        
    at ExportNamedDeclaration (C:\workspace\herold-solutions\node_modules\eslint-plugin-unicorn\rules\import-style.js:265:68)
    at C:\workspace\herold-solutions\node_modules\eslint-plugin-unicorn\rules\utils\rule.js:39:18
    at ruleErrorHandler (C:\workspace\herold-solutions\node_modules\eslint\lib\linter\linter.js:1050:28)
    at C:\workspace\herold-solutions\node_modules\eslint\lib\linter\safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (C:\workspace\herold-solutions\node_modules\eslint\lib\linter\safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (C:\workspace\herold-solutions\node_modules\eslint\lib\linter\node-event-generator.js:297:26)
    at NodeEventGenerator.applySelectors (C:\workspace\herold-solutions\node_modules\eslint\lib\linter\node-event-generator.js:326:22)
    at NodeEventGenerator.enterNode (C:\workspace\herold-solutions\node_modules\eslint\lib\linter\node-event-generator.js:340:14)

the linted file is the following:

export enum HttpMethod {
    Get = "get",
    Post = "post",
    Put = "put",
    Patch = "patch",
    Delete = "delete",
}
blephy commented 1 year ago

IDEM.

appears in 47.0.0 and not in 46.0.1. node version 18.16.1. eslint version 8.43.0

the file :

// eslint-disable-next-line @typescript-eslint/require-await -- not intended
const mockAuth0: () => Promise<Response> = async (): Promise<Response> => {
  return new Response(
    JSON.stringify({
      access_token:
        /* cspell:disable-next-line */
        'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlFUSTJRamc0TmprNU5qRXpRamMwTmpFeE5VSTJOVEU1UmpVeU1qRkdNME13UkVZME9VTTVRdyJ9.eyJodHRwOi8vbGlmZW4uZnIvYXBwbmFtZSI6IkxGLU1BU1RFUiIsImh0dHA6Ly9saWZlbi5mci93b3Jrc3BhY2VzIjpbeyJhcGlEb21haW4iOiJsaWZlbiIsImFwaVVybCI6Imh0dHBzOi8vZmhpci1hcGkucHJpdmF0ZS5zdGFnaW5nLmxpZmVuLmZyIiwiZmhpclJlZmVyZW5jZSI6Ik9yZ2FuaXphdGlvbi81NjgzNDMifV0sImlzcyI6Imh0dHBzOi8vbG9naW4tc3RhZ2luZy5saWZlbi5mci8iLCJzdWIiOiJERFFBSVNNWWNYT0xDdTEzTXdBWFVWSmdrOTBOZVlDUUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9hcGktcmMuaW50ZXJuYWwuazhzLWF6dXJlLmxpZmVuLmZyIiwiaWF0IjoxNjY0Mjg4MzA2LCJleHAiOjE2NjQ0NjExMDYsImF6cCI6IkREUUFJU01ZY1hPTEN1MTNNd0FYVVZKZ2s5ME5lWUNRIiwic2NvcGUiOiJBUFBPSU5UTUVOVF9DUkVBVEUgQVBQT0lOVE1FTlRfUEFUQ0ggQVBQT0lOVE1FTlRfUkVBRCBBUFBPSU5UTUVOVF9TRUFSQ0ggQVBQT0lOVE1FTlRfVVBEQVRFIEFSQ0hJVkVEX0JJTkFSWV9QQVRDSCBBUkNISVZFRF9CSU5BUllfU0VBUkNIIEFSQ0hJVkVEX0VOQ09VTlRFUl9QQVRDSCBBUkNISVZFRF9FTkNPVU5URVJfU0VBUkNIIEFSQ0hJVkVEX0VOQ09VTlRFUl9VUERBVEUgQVJDSElWRURfTUVTU0FHRUhFQURFUl9QQVRDSCBBUkNISVZFRF9NRVNTQUdFSEVBREVSX1NFQVJDSCBBUkNISVZFRF9QQVRJRU5UX1BBVENIIEFSQ0hJVkVEX1BBVElFTlRfUkVBRCBBUkNISVZFRF9QQVRJRU5UX1NFQVJDSCBBUkNISVZFRF9QQVRJRU5UX1VQREFURSBCSU5BUllfQ1JFQVRFIEJJTkFSWV9QQVRDSCBCSU5BUllfUkVBRCBCSU5BUllfU0VBUkNIIEJJTkFSWV9VUERBVEUgQlVORExFX0NSRUFURSBCVU5ETEVfR0VUSElTVE9SWUZPUlJFU09VUkNFSU5TVEFOQ0UgQlVORExFX1BBVENIIEJVTkRMRV9SRUFEIEJVTkRMRV9TRUFSQ0ggQlVORExFX1VQREFURSBDT0RFU1lTVEVNX0NSRUFURSBDT0RFU1lTVEVNX0RFTEVURSBDT0RFU1lTVEVNX1JFQUQgQ09ERVNZU1RFTV9TRUFSQ0ggQ09ERVNZU1RFTV9VUERBVEUgQ09NTVVOSUNBVElPTlJFUVVFU1RfQ1JFQVRFIENPTU1VTklDQVRJT05SRVFVRVNUX0dFVEhJU1RPUllGT1JSRVNPVVJDRUlOU1RBTkNFIENPTU1VTklDQVRJT05SRVFVRVNUX0dFVEhJU1RPUllGT1JSRVNPVVJDRVRZUEUgQ09NTVVOSUNBVElPTlJFUVVFU1RfTUVUQSBDT01NVU5JQ0FUSU9OUkVRVUVTVF9NRVRBQUREIENPTU1VTklDQVRJT05SRVFVRVNUX01FVEFERUxFVEUgQ09NTVVOSUNBVElPTlJFUVVFU1RfUEFUQ0ggQ09NTVVOSUNBVElPTlJFUVVFU1RfUkVBRCBDT01NVU5JQ0FUSU9OUkVRVUVTVF9TRUFSQ0ggQ09NTVVOSUNBVElPTlJFUVVFU1RfVVBEQVRFIENPTU1VTklDQVRJT05fQ1JFQVRFIENPTU1VTklDQVRJT05fR0VUSElTVE9SWUZPUlJFU09VUkNFSU5TVEFOQ0UgQ09NTVVOSUNBVElPTl9HRVRISVNUT1JZRk9SUkVTT1VSQ0VUWVBFIENPTU1VTklDQVRJT05fUEFUQ0ggQ09NTVVOSUNBVElPTl9SRUFEIENPTU1VTklDQVRJT05fU0VBUkNIIENPTU1VTklDQVRJT05fU0VBUkNIX19UQUcgQ09NTVVOSUNBVElPTl9VUERBVEUgQ09OVEFDVF9BTEwgQ09OVEFDVF9XSVRIT1VUX1BSRUZFUkVOQ0UgQ09OVEFDVF9XSVRIX0FDVElWQVRJT05fQ09ERSBDT05UQUNUX1dJVEhfRkFYIENPTlRBQ1RfV0lUSF9IVUJTUE9UX0lEIENPTlRBQ1RfV0lUSF9NU1NBTlRFIENPTlRBQ1RfV0lUSF9PTEQgREVWSUNFX0NSRUFURSBERVZJQ0VfR0VUSElTVE9SWUZPUlJFU09VUkNFSU5TVEFOQ0UgREVWSUNFX1BBVENIIERFVklDRV9SRUFEIERFVklDRV9TRUFSQ0ggREVWSUNFX1VQREFURSBET0NVTUVOVFJFRkVSRU5DRV9DUkVBVEUgRE9DVU1FTlRSRUZFUkVOQ0VfR0VUSElTVE9SWUZPUlJFU09VUkNFSU5TVEFOQ0UgRE9DVU1FTlRSRUZFUkVOQ0VfR0VUSElTVE9SWUZPUlJFU09VUkNFVFlQRSBET0NVTUVOVFJFRkVSRU5DRV9QQVRDSCBET0NVTUVOVFJFRkVSRU5DRV9SRUFEIERPQ1VNRU5UUkVGRVJFTkNFX1NFQVJDSCBET0NVTUVOVFJFRkVSRU5DRV9VUERBVEUgRU5DT1VOVEVSX0NSRUFURSBFTkNPVU5URVJfUEFUQ0ggRU5DT1VOVEVSX1JFQUQgRU5DT1VOVEVSX1NFQVJDSCBFTkNPVU5URVJfVVBEQVRFIE1FU1NBR0VIRUFERVJfQ1JFQVRFIE1FU1NBR0VIRUFERVJfRVhQVU5HRSBNRVNTQUdFSEVBREVSX1BBVENIIE1FU1NBR0VIRUFERVJfUkVBRCBNRVNTQUdFSEVBREVSX1NFQVJDSCBNRVNTQUdFSEVBREVSX1NFQVJDSF9fVEFHIE1FU1NBR0VIRUFERVJfVVBEQVRFIE9SR0FOSVpBVElPTl9DUkVBVEUgT1JHQU5JWkFUSU9OX0dFVEhJU1RPUllGT1JSRVNPVVJDRUlOU1RBTkNFIE9SR0FOSVpBVElPTl9QQVRDSCBPUkdBTklaQVRJT05fUkVBRCBPUkdBTklaQVRJT05fU0VBUkNIIE9SR0FOSVpBVElPTl9VUERBVEUgUEFUSUVOVF9DUkVBVEUgUEFUSUVOVF9JREVOVElGSUVSX05JUiBQQVRJRU5UX1BBVENIIFBBVElFTlRfUkVBRCBQQVRJRU5UX1NFQVJDSCBQQVRJRU5UX1VQREFURSBQUkFDVElUSU9ORVJfQ1JFQVRFIFBSQUNUSVRJT05FUl9HRVRISVNUT1JZRk9SUkVTT1VSQ0VJTlNUQU5DRSBQUkFDVElUSU9ORVJfUEFUQ0ggUFJBQ1RJVElPTkVSX1JFQUQgUFJBQ1RJVElPTkVSX1NFQVJDSCBQUkFDVElUSU9ORVJfVVBEQVRFIFBSQUNUSVRJT05FUlJPTEVfQ1JFQVRFIFBSQUNUSVRJT05FUlJPTEVfUEFUQ0ggUFJBQ1RJVElPTkVSUk9MRV9SRUFEIFBSQUNUSVRJT05FUlJPTEVfU0VBUkNIIFBSQUNUSVRJT05FUlJPTEVfVVBEQVRFIFBST1ZFTkFOQ0VfUkVBRCBQUk9WRU5BTkNFX1NFQVJDSCBTRVJWRVJfRVhQVU5HRSBTVFJVQ1RVUkVERUZJTklUSU9OX0NSRUFURSBTVFJVQ1RVUkVERUZJTklUSU9OX0RFTEVURSBTVFJVQ1RVUkVERUZJTklUSU9OX1JFQUQgU1RSVUNUVVJFREVGSU5JVElPTl9TRUFSQ0ggU1RSVUNUVVJFREVGSU5JVElPTl9VUERBVEUgVkFMVUVTRVRfQ1JFQVRFIFZBTFVFU0VUX0RFTEVURSBWQUxVRVNFVF9SRUFEIFZBTFVFU0VUX1NFQVJDSCB1c2VyczpyZWFkIHVzZXJzOmNyZWF0ZSB1c2VyX2ludml0YXRpb25zOmNyZWF0ZSB1c2VyX2lkZW50aXRpZXM6Y3JlYXRlIHVzZXJfaWRlbnRpdGllczpyZWFkIGFkZHJlc3NlczpjcmVhdGUgZGF0YV9zdHJlYW1zOnJlYWQgcHJhY3RpdGlvbmVyX3JvbGVzOmNyZWF0ZSBwcmFjdGl0aW9uZXJfcm9sZXM6ZGVsZXRlIG9yZ2FuaXphdGlvbnM6Y3JlYXRlIG9yZ2FuaXphdGlvbnM6ZGVsZXRlIG9yZ2FuaXphdGlvbl9zZXR0aW5nczpyZWFkIHdvcmtzcGFjZXM6cmVhZCB3b3Jrc3BhY2VzOmNyZWF0ZSB3b3Jrc3BhY2VzOnVwZGF0ZSB3b3Jrc3BhY2VzOmRlbGV0ZSB3b3Jrc3BhY2VfaWRlbnRpdGllczpjcmVhdGUiLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMifQ.Hw2SsMxkk8Fgdj8tsFBSwIcJ25SMMsVKRM9_7rFA823mk6hiZehaqZgL-MmmeZsDI_CbRzjYc86iHO_ChocjFvT4W7Koj6pEpHMF7FLMj_NYzSD_00rYsZUnL0TSoO6yR2yzZ5uIswgg88XRUEa-bSweCfotwwG8uAHsnwVz3VY3VSRzRLmFoWJE45ORvpdplWY2A6nWsoIAWqVdzoPqWs-e6CX5Pr9wFaccKas3lwaMgAGP2sPfjx4wZJiEeX0WYAONIvNfBhoqYPJQVWtGfV025Ia5UDXy8feJw1XQSiVHLxlRB8KfBOdgkWu-Hbn5vQEdNWtaUtDBc2BJr8ciHQ',
      scope: 'APPOINTMENT_CREATE APPOINTMENT_PATCH APPOINTMENT_READ APPOINTMENT_SEARCH',

      expires_in: 172_800,

      token_type: 'Bearer',
    }),
  );
};

export { mockAuth0 };

the rule :

'unicorn/import-style': [
      'error',
      {
        extendDefaultStyles: false,
        checkImport: true,
        checkDynamicImport: true,
        checkExportFrom: true,
        checkRequire: true,
        styles: {
          'node:util': {
            named: true,
          },
          'node:path': {
            named: true,
          },
          'node:fs': {
            named: true,
          },
          'node:fs/promises': {
            named: true,
          },
          'node:crypto': {
            named: true,
          },
          'node:url': {
            named: true,
          },
          'node:child_process': {
            named: true,
          },
          'node:dns': {
            named: true,
          },
          'node:dns/promises': {
            named: true,
          },
          '@sentry/node': {
            namespace: true,
          },
          jest: {
            named: true,
          },
          chai: {
            named: true,
          },
          sinon: {
            named: true,
          },
          mocha: {
            named: true,
          },
          'mocha-chai-jest-snapshot': {
            named: true,
          },
        },
      },
    ],

the error :

Oops! Something went wrong! :(

ESLint: 8.43.0

TypeError: Missing required argument: node.
Occurred while linting /Users/***/***/packages/lifen-framework/__tests__/__mocks__/mockAuth0.ts:17
Rule: "unicorn/import-style"
    at SourceCode.getScope (/Users/***/***/node_modules/eslint/lib/source-code/source-code.js:616:19)
    at ExportNamedDeclaration (/Users/***/***/node_modules/eslint-plugin-unicorn/rules/import-style.js:264:68)
    at /Users/***/***/node_modules/eslint-plugin-unicorn/rules/utils/rule.js:39:18
    at ruleErrorHandler (/Users/***/***/node_modules/eslint/lib/linter/linter.js:1050:28)
    at /Users/***/***/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
blephy commented 8 months ago

up

desudo commented 4 months ago

Are there any new infos regarding this topic?