UNPKG

@foray1010/eslint-config

Version:
79 lines (75 loc) 2.61 kB
import { isESM } from '@foray1010/common-presets-utils' import eslintPluginN from 'eslint-plugin-n' /** @typedef {import('../types/internal.d.ts').EslintConfig} EslintConfig */ /** @type {EslintConfig[number]} */ const cjsConfig = { languageOptions: { globals: { __dirname: 'readonly', __filename: 'readonly', }, }, } /** @type {EslintConfig} */ const nodeConfig = [ { plugins: { n: eslintPluginN, }, languageOptions: { globals: { // hack to mute no-undef error, and show n/prefer-global/buffer error instead Buffer: 'readonly', // hack to mute no-undef error, and show n/prefer-global/process error instead process: 'readonly', }, }, rules: { // disallow deprecated node APIs 'n/no-deprecated-api': 'error', // disallow the assignment to `exports` 'n/no-exports-assign': 'error', // use process.exitCode instead 'n/no-process-exit': 'error', // disallow `bin` files that npm ignores 'n/no-unpublished-bin': 'error', // disallow unsupported Node.js built-in APIs on the specified version 'n/no-unsupported-features/node-builtins': 'error', // prefer `import { Buffer } from 'node:buffer'` as it is not isomorphic 'n/prefer-global/buffer': ['error', 'never'], // prefer global `console` to be isomorphic 'n/prefer-global/console': ['error', 'always'], // prefer `import process from 'node:process'` as it is not isomorphic 'n/prefer-global/process': ['error', 'never'], // prefer global `TextDecoder` to be isomorphic 'n/prefer-global/text-decoder': ['error', 'always'], // prefer global `TextEncoder` to be isomorphic 'n/prefer-global/text-encoder': ['error', 'always'], // prefer global `URL` to be isomorphic 'n/prefer-global/url': ['error', 'always'], // prefer global `URLSearchParams` to be isomorphic 'n/prefer-global/url-search-params': ['error', 'always'], // prefer `import { promises as dns } from 'node:dns'` 'n/prefer-promises/dns': 'error', // prefer `import { promises as fs } from 'node:fs'` 'n/prefer-promises/fs': 'error', // make `process.exit()` expressions the same code path as `throw` 'n/process-exit-as-throw': 'error', // enforce shebang on the entry bin file 'n/shebang': 'error', }, }, ...(isESM() ? [] : [ { files: ['**/*.js'], ...cjsConfig, }, ]), { files: ['**/*.{cjs,cts}'], ...cjsConfig, }, ] export default nodeConfig