Skip to content

Commit

Permalink
Add support for N (#130)
Browse files Browse the repository at this point in the history
Co-authored-by: Shinigami92 <[email protected]>
  • Loading branch information
Julien-R44 and Shinigami92 authored Oct 2, 2022
1 parent 347d182 commit d436979
Show file tree
Hide file tree
Showing 46 changed files with 2,157 additions and 0 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
"eslint-plugin-inclusive-language": "~2.2.0",
"eslint-plugin-jsdoc": "~39.3.6",
"eslint-plugin-mdx": "~2.0.5",
"eslint-plugin-n": "~15.3.0",
"eslint-plugin-node": "~11.1.0",
"eslint-plugin-prettier": "~4.2.1",
"eslint-plugin-spellcheck": "~0.0.19",
Expand Down
36 changes: 36 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions scripts/generate-rule-files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import * as eslintPluginMdx from 'eslint-plugin-mdx';
// @ts-expect-error
import eslintPluginNode from 'eslint-plugin-node';
// @ts-expect-error
import eslintPluginN from 'eslint-plugin-n';
// @ts-expect-error
import eslintPluginSpellcheck from 'eslint-plugin-spellcheck';
// @ts-expect-error
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
Expand Down Expand Up @@ -64,6 +66,10 @@ const generationMap: Record<string, Plugin> = {
name: 'Mdx',
rules: eslintPluginMdx.rules,
},
n: {
name: 'N',
rules: (eslintPluginN as Plugin).rules,
},
node: {
name: 'Node',
rules: (eslintPluginNode as Plugin).rules,
Expand Down
9 changes: 9 additions & 0 deletions src/extends/eslint-plugin-n.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* Eslint N (Node) extensions.
*
* @see [Eslint N extensions](https://github.com/eslint-community/eslint-plugin-n#-configs)
*/
export type NExtensions =
| 'plugin:n/recommended'
| 'plugin:n/recommended-module'
| 'plugin:n/recommended-script';
2 changes: 2 additions & 0 deletions src/extends/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { EslintExtensions } from './eslint';
import type { ImportExtensions } from './eslint-plugin-import';
import type { JsdocExtensions } from './eslint-plugin-jsdoc';
import type { MdxExtensions } from './eslint-plugin-mdx';
import type { NExtensions } from './eslint-plugin-n';
import type { NodeExtensions } from './eslint-plugin-node';
import type { PrettierExtensions } from './eslint-plugin-prettier';
import type { UnicornExtensions } from './eslint-plugin-unicorn';
Expand All @@ -20,6 +21,7 @@ export type KnownExtensions = LiteralUnion<
| IntlifyVueI18nExtensions
| JsdocExtensions
| MdxExtensions
| NExtensions
| NodeExtensions
| PrettierExtensions
| TypescriptEslintExtensions
Expand Down
2 changes: 2 additions & 0 deletions src/rules/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { EslintRules } from './eslint';
import type { ImportRules } from './import';
import type { JSDocRules } from './jsdoc';
import type { NRules } from './n';
import type { NodeRules } from './node';
import type { RuleConfig } from './rule-config';
import type { SpellcheckRules } from './spellcheck';
Expand All @@ -20,6 +21,7 @@ export type Rules = Partial<
ImportRules &
JSDocRules &
NodeRules &
NRules &
SpellcheckRules &
TypeScriptRules &
UnicornRules &
Expand Down
32 changes: 32 additions & 0 deletions src/rules/n/callback-return.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import type { RuleConfig } from '../rule-config';

/**
* Option.
*/
export type CallbackReturnOption = string[];

/**
* Options.
*/
export type CallbackReturnOptions = [CallbackReturnOption?];

/**
* Require `return` statements after callbacks.
*
* @see [callback-return](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/callback-return.md)
*/
export type CallbackReturnRuleConfig = RuleConfig<CallbackReturnOptions>;

/**
* Require `return` statements after callbacks.
*
* @see [callback-return](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/callback-return.md)
*/
export interface CallbackReturnRule {
/**
* Require `return` statements after callbacks.
*
* @see [callback-return](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/callback-return.md)
*/
'n/callback-return': CallbackReturnRuleConfig;
}
39 changes: 39 additions & 0 deletions src/rules/n/exports-style.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { RuleConfig } from '../rule-config';

/**
* Config.
*/
export interface ExportsStyleConfig {
allowBatchAssign?: boolean;
}

/**
* Option.
*/
export type ExportsStyleOption = 'module.exports' | 'exports';

/**
* Options.
*/
export type ExportsStyleOptions = [ExportsStyleOption?, ExportsStyleConfig?];

/**
* Enforce either `module.exports` or `exports`.
*
* @see [exports-style](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/exports-style.md)
*/
export type ExportsStyleRuleConfig = RuleConfig<ExportsStyleOptions>;

/**
* Enforce either `module.exports` or `exports`.
*
* @see [exports-style](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/exports-style.md)
*/
export interface ExportsStyleRule {
/**
* Enforce either `module.exports` or `exports`.
*
* @see [exports-style](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/exports-style.md)
*/
'n/exports-style': ExportsStyleRuleConfig;
}
43 changes: 43 additions & 0 deletions src/rules/n/file-extension-in-import.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import type { RuleConfig } from '../rule-config';

/**
* Config.
*/
export interface FileExtensionInImportConfig {
[k: string]: 'always' | 'never';
}

/**
* Option.
*/
export type FileExtensionInImportOption = 'always' | 'never';

/**
* Options.
*/
export type FileExtensionInImportOptions = [
FileExtensionInImportOption?,
FileExtensionInImportConfig?,
];

/**
* Enforce the style of file extensions in `import` declarations.
*
* @see [file-extension-in-import](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/file-extension-in-import.md)
*/
export type FileExtensionInImportRuleConfig =
RuleConfig<FileExtensionInImportOptions>;

/**
* Enforce the style of file extensions in `import` declarations.
*
* @see [file-extension-in-import](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/file-extension-in-import.md)
*/
export interface FileExtensionInImportRule {
/**
* Enforce the style of file extensions in `import` declarations.
*
* @see [file-extension-in-import](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/file-extension-in-import.md)
*/
'n/file-extension-in-import': FileExtensionInImportRuleConfig;
}
22 changes: 22 additions & 0 deletions src/rules/n/global-require.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import type { RuleConfig } from '../rule-config';

/**
* Require `require()` calls to be placed at top-level module scope.
*
* @see [global-require](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/global-require.md)
*/
export type GlobalRequireRuleConfig = RuleConfig<[]>;

/**
* Require `require()` calls to be placed at top-level module scope.
*
* @see [global-require](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/global-require.md)
*/
export interface GlobalRequireRule {
/**
* Require `require()` calls to be placed at top-level module scope.
*
* @see [global-require](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/global-require.md)
*/
'n/global-require': GlobalRequireRuleConfig;
}
32 changes: 32 additions & 0 deletions src/rules/n/handle-callback-err.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import type { RuleConfig } from '../rule-config';

/**
* Option.
*/
export type HandleCallbackErrOption = string;

/**
* Options.
*/
export type HandleCallbackErrOptions = [HandleCallbackErrOption?];

/**
* Require error handling in callbacks.
*
* @see [handle-callback-err](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/handle-callback-err.md)
*/
export type HandleCallbackErrRuleConfig = RuleConfig<HandleCallbackErrOptions>;

/**
* Require error handling in callbacks.
*
* @see [handle-callback-err](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/handle-callback-err.md)
*/
export interface HandleCallbackErrRule {
/**
* Require error handling in callbacks.
*
* @see [handle-callback-err](https://github.com/weiran-zsd/eslint-plugin-node/blob/HEAD/docs/rules/handle-callback-err.md)
*/
'n/handle-callback-err': HandleCallbackErrRuleConfig;
}
82 changes: 82 additions & 0 deletions src/rules/n/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import type { CallbackReturnRule } from './callback-return';
import type { ExportsStyleRule } from './exports-style';
import type { FileExtensionInImportRule } from './file-extension-in-import';
import type { GlobalRequireRule } from './global-require';
import type { HandleCallbackErrRule } from './handle-callback-err';
import type { NoCallbackLiteralRule } from './no-callback-literal';
import type { NoDeprecatedApiRule } from './no-deprecated-api';
import type { NoExportsAssignRule } from './no-exports-assign';
import type { NoExtraneousImportRule } from './no-extraneous-import';
import type { NoExtraneousRequireRule } from './no-extraneous-require';
import type { NoHideCoreModulesRule } from './no-hide-core-modules';
import type { NoMissingImportRule } from './no-missing-import';
import type { NoMissingRequireRule } from './no-missing-require';
import type { NoMixedRequiresRule } from './no-mixed-requires';
import type { NoNewRequireRule } from './no-new-require';
import type { NoPathConcatRule } from './no-path-concat';
import type { NoProcessEnvRule } from './no-process-env';
import type { NoProcessExitRule } from './no-process-exit';
import type { NoRestrictedImportRule } from './no-restricted-import';
import type { NoRestrictedRequireRule } from './no-restricted-require';
import type { NoSyncRule } from './no-sync';
import type { NoUnpublishedBinRule } from './no-unpublished-bin';
import type { NoUnpublishedImportRule } from './no-unpublished-import';
import type { NoUnpublishedRequireRule } from './no-unpublished-require';
import type { NoUnsupportedFeaturesRule } from './no-unsupported-features';
import type { NoUnsupportedFeaturesEsBuiltinsRule } from './no-unsupported-features/es-builtins';
import type { NoUnsupportedFeaturesEsSyntaxRule } from './no-unsupported-features/es-syntax';
import type { NoUnsupportedFeaturesNodeBuiltinsRule } from './no-unsupported-features/node-builtins';
import type { PreferGlobalBufferRule } from './prefer-global/buffer';
import type { PreferGlobalConsoleRule } from './prefer-global/console';
import type { PreferGlobalProcessRule } from './prefer-global/process';
import type { PreferGlobalTextDecoderRule } from './prefer-global/text-decoder';
import type { PreferGlobalTextEncoderRule } from './prefer-global/text-encoder';
import type { PreferGlobalUrlRule } from './prefer-global/url';
import type { PreferGlobalUrlSearchParamsRule } from './prefer-global/url-search-params';
import type { PreferPromisesDnsRule } from './prefer-promises/dns';
import type { PreferPromisesFsRule } from './prefer-promises/fs';
import type { ProcessExitAsThrowRule } from './process-exit-as-throw';
import type { ShebangRule } from './shebang';

/**
* All N rules.
*/
export type NRules = CallbackReturnRule &
ExportsStyleRule &
FileExtensionInImportRule &
GlobalRequireRule &
HandleCallbackErrRule &
NoCallbackLiteralRule &
NoDeprecatedApiRule &
NoExportsAssignRule &
NoExtraneousImportRule &
NoExtraneousRequireRule &
NoMissingImportRule &
NoMissingRequireRule &
NoMixedRequiresRule &
NoNewRequireRule &
NoPathConcatRule &
NoProcessEnvRule &
NoProcessExitRule &
NoRestrictedImportRule &
NoRestrictedRequireRule &
NoSyncRule &
NoUnpublishedBinRule &
NoUnpublishedImportRule &
NoUnpublishedRequireRule &
NoUnsupportedFeaturesEsBuiltinsRule &
NoUnsupportedFeaturesEsSyntaxRule &
NoUnsupportedFeaturesNodeBuiltinsRule &
PreferGlobalBufferRule &
PreferGlobalConsoleRule &
PreferGlobalProcessRule &
PreferGlobalTextDecoderRule &
PreferGlobalTextEncoderRule &
PreferGlobalUrlSearchParamsRule &
PreferGlobalUrlRule &
PreferPromisesDnsRule &
PreferPromisesFsRule &
ProcessExitAsThrowRule &
ShebangRule &
NoHideCoreModulesRule &
NoUnsupportedFeaturesRule;
Loading

0 comments on commit d436979

Please sign in to comment.