UNPKG

@code-guideline/eslint

Version:
931 lines (919 loc) 26.1 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.mjs var index_exports = {}; __export(index_exports, { default: () => index_default }); module.exports = __toCommonJS(index_exports); var import_parser2 = __toESM(require("@typescript-eslint/parser"), 1); // src/base/formatter.mjs var import_eslint_plugin = __toESM(require("@stylistic/eslint-plugin"), 1); var import_eslint_plugin_newline_destructuring = __toESM(require("eslint-plugin-newline-destructuring"), 1); var config = { plugins: { "@stylistic": import_eslint_plugin.default, "newline-destructuring": import_eslint_plugin_newline_destructuring.default }, files: ["**/*.{js,mjs,cjs,jsx,ts,mts,cts,tsx}"], rules: { "@stylistic/array-bracket-newline": [ "error", { minItems: 3, multiline: true } ], "@stylistic/array-bracket-spacing": ["error", "never"], "@stylistic/array-element-newline": [ "error", { ArrayExpression: "consistent", ArrayPattern: "consistent" } ], "@stylistic/arrow-parens": ["error", "as-needed"], "@stylistic/arrow-spacing": [ "error", { after: true, before: true } ], "@stylistic/block-spacing": ["error", "always"], "@stylistic/brace-style": [ "error", "1tbs", { allowSingleLine: true } ], "@stylistic/comma-dangle": ["error", "always-multiline"], "@stylistic/comma-spacing": [ "error", { after: true, before: false } ], "@stylistic/comma-style": ["error", "last"], "@stylistic/computed-property-spacing": ["error", "never"], "@stylistic/curly-newline": ["error", { consistent: true }], "@stylistic/dot-location": ["error", "property"], "@stylistic/eol-last": ["error", "always"], "@stylistic/function-call-argument-newline": ["error", "consistent"], "@stylistic/function-call-spacing": ["error", "never"], "@stylistic/function-paren-newline": ["error", { minItems: 5 }], "@stylistic/generator-star-spacing": [ "error", { after: true, before: false } ], "@stylistic/implicit-arrow-linebreak": ["error", "beside"], "@stylistic/indent": ["error", 2], "@stylistic/indent-binary-ops": ["error", 2], "@stylistic/key-spacing": [ "error", { align: { beforeColon: false, afterColon: true, mode: "strict", on: "value" } } ], "@stylistic/keyword-spacing": [ "error", { before: true, after: true } ], "@stylistic/line-comment-position": "off", "@stylistic/linebreak-style": ["off", "unix"], "@stylistic/lines-around-comment": [ "error", { beforeLineComment: false, beforeBlockComment: true, allowClassStart: true, allowClassEnd: true, allowObjectStart: true, allowObjectEnd: true, allowArrayStart: true, allowArrayEnd: true, allowBlockStart: true, allowBlockEnd: true, allowEnumStart: true, allowEnumEnd: true, allowInterfaceStart: true, allowInterfaceEnd: true, allowModuleStart: true, allowModuleEnd: true, allowTypeStart: true, allowTypeEnd: true, applyDefaultIgnorePatterns: true, afterHashbangComment: true } ], "@stylistic/lines-between-class-members": [ "error", { enforce: [ { blankLine: "always", prev: "method", next: "method" } ] } ], "@stylistic/max-len": [ "error", { code: Number.POSITIVE_INFINITY, tabWidth: 2, comments: 100, ignoreComments: true, ignoreTrailingComments: true, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true, ignoreRegExpLiterals: true } ], "@stylistic/max-statements-per-line": ["error", { max: 2 }], "@stylistic/member-delimiter-style": "error", "@stylistic/multiline-comment-style": "off", "@stylistic/multiline-ternary": ["error", "always-multiline"], "@stylistic/new-parens": ["error", "always"], "@stylistic/newline-per-chained-call": ["error", { ignoreChainWithDepth: 2 }], "@stylistic/no-confusing-arrow": [ "error", { onlyOneSimpleParam: true, allowParens: true } ], "@stylistic/no-extra-parens": [ "error", "all", { nestedBinaryExpressions: false, ternaryOperandBinaryExpressions: false, ignoreJSX: "multi-line", nestedConditionalExpressions: false, ignoredNodes: ["ConditionalExpression", "ArrowFunctionExpression"] } ], "@stylistic/no-extra-semi": "error", "@stylistic/no-floating-decimal": "error", "@stylistic/no-mixed-operators": "error", "@stylistic/no-mixed-spaces-and-tabs": "error", "@stylistic/no-multi-spaces": "off", "@stylistic/no-multiple-empty-lines": [ "error", { max: 1, maxBOF: 0, maxEOF: 1 } ], "@stylistic/no-tabs": "error", "@stylistic/no-trailing-spaces": "error", "@stylistic/no-whitespace-before-property": "error", "@stylistic/nonblock-statement-body-position": ["error", "beside"], "@stylistic/object-curly-newline": [ "error", { ObjectExpression: { minProperties: 2 }, ObjectPattern: { minProperties: 3 }, ImportDeclaration: { minProperties: 4 }, ExportDeclaration: "always", TSTypeLiteral: "always", TSInterfaceBody: "always" } ], "@stylistic/object-curly-spacing": [ "error", "always", { arraysInObjects: true } ], // allowMultiplePropertiesPerLine: true, // ESLint 9.x에서 지원하지 않으므로 삭제 "@stylistic/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }], "@stylistic/one-var-declaration-per-line": ["error", "always"], "@stylistic/operator-linebreak": [ "error", "after", { overrides: { "?": "before", ":": "before" } } ], "@stylistic/padded-blocks": ["error", "never"], "@stylistic/padding-line-between-statements": [ "error", { blankLine: "always", prev: "*", next: "return" }, { blankLine: "always", prev: "*", next: "function" }, { blankLine: "always", prev: "function", next: "*" }, { blankLine: "always", prev: "*", next: "class" }, { blankLine: "always", prev: "class", next: "*" }, { blankLine: "always", prev: "*", next: "export" }, { blankLine: "any", prev: "export", next: "export" }, { blankLine: "always", prev: "block-like", next: "*" }, { blankLine: "always", prev: "*", next: "block-like" }, { blankLine: "any", prev: "import", next: "import" } ], "@stylistic/quote-props": ["error", "as-needed"], "@stylistic/quotes": [ "error", "single", { avoidEscape: true } ], "@stylistic/rest-spread-spacing": "error", "@stylistic/semi": "error", "@stylistic/semi-spacing": [ "error", { before: false, after: true } ], "@stylistic/semi-style": "error", "@stylistic/space-before-blocks": "error", "@stylistic/space-before-function-paren": [ "error", { anonymous: "never", named: "never", asyncArrow: "always" } ], "@stylistic/space-in-parens": "error", "@stylistic/space-infix-ops": "error", "@stylistic/space-unary-ops": "error", "@stylistic/spaced-comment": ["error", "always"], "@stylistic/switch-colon-spacing": "error", "@stylistic/template-curly-spacing": "error", "@stylistic/template-tag-spacing": "error", "@stylistic/type-annotation-spacing": "error", "@stylistic/type-generic-spacing": "error", "@stylistic/type-named-tuple-spacing": "error", "@stylistic/wrap-iife": ["error", "inside"], "@stylistic/wrap-regex": "error", "@stylistic/yield-star-spacing": ["error", "after"], "newline-destructuring/newline": ["error", { itemsWithRest: 2 }] } }; var formatter_default = config; // src/base/import.mjs var import_eslint_plugin_import_newlines = __toESM(require("eslint-plugin-import-newlines"), 1); var import_eslint_plugin_simple_import_sort = __toESM(require("eslint-plugin-simple-import-sort"), 1); var import_eslint_plugin_unused_imports = __toESM(require("eslint-plugin-unused-imports"), 1); var config2 = { plugins: { "simple-import-sort": import_eslint_plugin_simple_import_sort.default, "import-newlines": import_eslint_plugin_import_newlines.default, "unused-imports": import_eslint_plugin_unused_imports.default }, settings: { "import/resolver": { typescript: {}, node: { extensions: [ ".js", ".mjs", ".cjs", ".jsx", ".ts", ".mts", ".cts", ".tsx" ] } } }, rules: { "simple-import-sort/imports": [ "error", { groups: [ ["^.+\\.css$"], [ "^@?\\w", "^@/", "^\\." ], ["^\\u0000"] ] } ], "import-newlines/enforce": ["error", { items: 3 }], "unused-imports/no-unused-imports": "error", "no-restricted-imports": ["error", { patterns: ["../../*"] }], "no-restricted-syntax": [ "error", { selector: ":not(ImportDeclaration[source.value=/.css$/]) > ImportNamespaceSpecifier", message: "Importing entire module is not allowed." } ] } }; var import_default = config2; // src/base/restrict.mjs var import_eslint_plugin2 = __toESM(require("@typescript-eslint/eslint-plugin"), 1); var defaultConfig = { rules: { "no-console": ["warn", { allow: ["warn", "error"] }], "no-debugger": "error", "no-alert": "error", "no-var": "error", "no-duplicate-imports": "error", "no-restricted-syntax": "off" } }; var typescriptConfig = { plugins: { "@typescript-eslint": import_eslint_plugin2.default }, files: ["**/*.{js,ts,mjs,mts,cjs,cts,jsx,tsx}"], rules: { "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-unused-vars": [ "error", { varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", argsIgnorePattern: "^_" } ], "no-unused-vars": [ "error", { varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", argsIgnorePattern: "^_" } ], "no-redeclare": "error" } }; var restrict_default = [defaultConfig, typescriptConfig]; // src/nestjs/formatter.mjs var import_eslint_plugin3 = __toESM(require("@stylistic/eslint-plugin"), 1); var import_eslint_plugin_newline_destructuring2 = __toESM(require("eslint-plugin-newline-destructuring"), 1); var config3 = { plugins: { "@stylistic": import_eslint_plugin3.default, "newline-destructuring": import_eslint_plugin_newline_destructuring2.default }, files: ["**/*.{js,mjs,cjs,jsx,ts,mts,cts,tsx}"], rules: { "@stylistic/array-bracket-newline": [ "error", { minItems: 3, multiline: true } ], "@stylistic/array-bracket-spacing": ["error", "never"], "@stylistic/array-element-newline": [ "error", { ArrayExpression: "consistent", ArrayPattern: "consistent" } ], "@stylistic/arrow-parens": ["error", "as-needed"], "@stylistic/arrow-spacing": [ "error", { after: true, before: true } ], "@stylistic/block-spacing": ["error", "always"], "@stylistic/brace-style": [ "error", "1tbs", { allowSingleLine: true } ], "@stylistic/comma-dangle": ["error", "always-multiline"], "@stylistic/comma-spacing": [ "error", { after: true, before: false } ], "@stylistic/comma-style": ["error", "last"], "@stylistic/computed-property-spacing": ["error", "never"], "@stylistic/curly-newline": ["error", { consistent: true }], "@stylistic/dot-location": ["error", "property"], "@stylistic/eol-last": ["error", "always"], "@stylistic/function-call-argument-newline": ["error", "consistent"], "@stylistic/function-call-spacing": ["error", "never"], "@stylistic/function-paren-newline": ["error", { minItems: 5 }], "@stylistic/generator-star-spacing": [ "error", { after: true, before: false } ], "@stylistic/implicit-arrow-linebreak": ["error", "beside"], "@stylistic/indent": ["error", 2], "@stylistic/indent-binary-ops": ["error", 2], "@stylistic/key-spacing": [ "error", { align: { beforeColon: false, afterColon: true, mode: "strict", on: "value" } } ], "@stylistic/keyword-spacing": [ "error", { before: true, after: true } ], "@stylistic/line-comment-position": "off", "@stylistic/linebreak-style": ["off", "unix"], "@stylistic/lines-around-comment": [ "error", { beforeLineComment: false, beforeBlockComment: true, allowClassStart: true, allowClassEnd: true, allowObjectStart: true, allowObjectEnd: true, allowArrayStart: true, allowArrayEnd: true, allowBlockStart: true, allowBlockEnd: true, allowEnumStart: true, allowEnumEnd: true, allowInterfaceStart: true, allowInterfaceEnd: true, allowModuleStart: true, allowModuleEnd: true, allowTypeStart: true, allowTypeEnd: true, applyDefaultIgnorePatterns: true, afterHashbangComment: true } ], "@stylistic/lines-between-class-members": [ "error", { enforce: [ { blankLine: "always", prev: "method", next: "method" } ] } ], "@stylistic/max-len": [ "error", { code: Number.POSITIVE_INFINITY, tabWidth: 2, comments: 100, ignoreComments: true, ignoreTrailingComments: true, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true, ignoreRegExpLiterals: true } ], "@stylistic/max-statements-per-line": ["error", { max: 2 }], "@stylistic/member-delimiter-style": "error", "@stylistic/multiline-comment-style": "off", "@stylistic/multiline-ternary": ["error", "always-multiline"], "@stylistic/new-parens": ["error", "always"], "@stylistic/newline-per-chained-call": ["error", { ignoreChainWithDepth: 2 }], "@stylistic/no-confusing-arrow": [ "error", { onlyOneSimpleParam: true, allowParens: true } ], "@stylistic/no-extra-parens": [ "error", "all", { nestedBinaryExpressions: false, ternaryOperandBinaryExpressions: false, ignoreJSX: "multi-line", nestedConditionalExpressions: false, ignoredNodes: ["ConditionalExpression", "ArrowFunctionExpression"] } ], "@stylistic/no-extra-semi": "error", "@stylistic/no-floating-decimal": "error", "@stylistic/no-mixed-operators": "error", "@stylistic/no-mixed-spaces-and-tabs": "error", "@stylistic/no-multi-spaces": "off", "@stylistic/no-multiple-empty-lines": [ "error", { max: 1, maxBOF: 0, maxEOF: 1 } ], "@stylistic/no-tabs": "error", "@stylistic/no-trailing-spaces": "error", "@stylistic/no-whitespace-before-property": "error", "@stylistic/nonblock-statement-body-position": ["error", "beside"], "@stylistic/object-curly-newline": [ "error", { ObjectExpression: { minProperties: 2 }, ObjectPattern: { minProperties: 3 }, ImportDeclaration: { minProperties: 4 }, ExportDeclaration: "always", TSTypeLiteral: "always", TSInterfaceBody: "always" } ], "@stylistic/object-curly-spacing": [ "error", "always", { arraysInObjects: true } ], "@stylistic/object-property-newline": [ "error", { allowAllPropertiesOnSameLine: true } ], "@stylistic/one-var-declaration-per-line": ["error", "always"], "@stylistic/operator-linebreak": [ "error", "after", { overrides: { "?": "before", ":": "before" } } ], "@stylistic/padded-blocks": ["error", "never"], "@stylistic/padding-line-between-statements": [ "error", { blankLine: "always", prev: "*", next: "return" }, { blankLine: "always", prev: "*", next: "function" }, { blankLine: "always", prev: "function", next: "*" }, { blankLine: "always", prev: "*", next: "class" }, { blankLine: "always", prev: "class", next: "*" }, { blankLine: "always", prev: "*", next: "export" }, { blankLine: "any", prev: "export", next: "export" }, { blankLine: "always", prev: "block-like", next: "*" }, { blankLine: "always", prev: "*", next: "block-like" }, { blankLine: "any", prev: "import", next: "import" } ], "@stylistic/quote-props": ["error", "as-needed"], "@stylistic/quotes": [ "error", "single", { avoidEscape: true } ], "@stylistic/rest-spread-spacing": "error", "@stylistic/semi": "error", "@stylistic/semi-spacing": [ "error", { before: false, after: true } ], "@stylistic/semi-style": "error", "@stylistic/space-before-blocks": "error", "@stylistic/space-before-function-paren": [ "error", { anonymous: "never", named: "never", asyncArrow: "always" } ], "@stylistic/space-in-parens": "error", "@stylistic/space-infix-ops": "error", "@stylistic/space-unary-ops": "error", "@stylistic/spaced-comment": ["error", "always"], "@stylistic/switch-colon-spacing": "error", "@stylistic/template-curly-spacing": "error", "@stylistic/template-tag-spacing": "error", "@stylistic/type-annotation-spacing": "error", "@stylistic/type-generic-spacing": "error", "@stylistic/type-named-tuple-spacing": "error", "@stylistic/wrap-iife": ["error", "inside"], "@stylistic/wrap-regex": "error", "@stylistic/yield-star-spacing": ["error", "after"], "newline-destructuring/newline": ["error", { itemsWithRest: 2 }] } }; var formatter_default2 = config3; // src/nestjs/import.mjs var import_eslint_plugin_import_newlines2 = __toESM(require("eslint-plugin-import-newlines"), 1); var import_eslint_plugin_simple_import_sort2 = __toESM(require("eslint-plugin-simple-import-sort"), 1); var import_eslint_plugin_unused_imports2 = __toESM(require("eslint-plugin-unused-imports"), 1); var config4 = { plugins: { "simple-import-sort": import_eslint_plugin_simple_import_sort2.default, "import-newlines": import_eslint_plugin_import_newlines2.default, "unused-imports": import_eslint_plugin_unused_imports2.default }, settings: { "import/resolver": { typescript: {}, node: { extensions: [ ".js", ".mjs", ".cjs", ".jsx", ".ts", ".mts", ".cts", ".tsx" ] } } } }; var import_default2 = config4; // src/nestjs/nestjs.mjs var import_parser = __toESM(require("@typescript-eslint/parser"), 1); var typedConfig = { languageOptions: { parser: import_parser.default, parserOptions: { project: "./tsconfig.json", tsconfigRootDir: process.cwd(), sourceType: "module" } } }; var nestjs_default = [ typedConfig, formatter_default2 ]; // src/nestjs/restrict.mjs var import_eslint_plugin4 = __toESM(require("@typescript-eslint/eslint-plugin"), 1); var defaultConfig2 = { rules: { "no-console": ["warn", { allow: ["warn", "error"] }], "no-debugger": "error", "no-alert": "error", "no-var": "error", "no-duplicate-imports": "error", "no-restricted-syntax": "off" } }; var typescriptConfig2 = { plugins: { "@typescript-eslint": import_eslint_plugin4.default }, files: ["**/*.{js,ts,mjs,mts,cjs,cts,jsx,tsx}"], rules: { "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-unused-vars": [ "error", { varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", argsIgnorePattern: "^_" } ], "no-unused-vars": [ "error", { varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", argsIgnorePattern: "^_" } ], "no-redeclare": "error" } }; var restrict_default2 = [defaultConfig2, typescriptConfig2]; // src/react/formatter.mjs var import_eslint_plugin5 = __toESM(require("@stylistic/eslint-plugin"), 1); var config5 = { plugins: { "@stylistic": import_eslint_plugin5.default }, rules: { "@stylistic/jsx-child-element-spacing": "off", "@stylistic/jsx-closing-bracket-location": ["error", "line-aligned"], "@stylistic/jsx-closing-tag-location": ["error", "line-aligned"], "@stylistic/jsx-curly-brace-presence": [ "error", { props: "never", children: "never", propElementValues: "always" } ], "@stylistic/jsx-curly-newline": [ "error", { multiline: "consistent", singleline: "forbid" } ], "@stylistic/jsx-curly-spacing": [ "error", "never", { allowMultiline: true } ], "@stylistic/jsx-equals-spacing": ["error", "never"], "@stylistic/jsx-first-prop-new-line": ["error", "multiline"], "@stylistic/jsx-function-call-newline": ["error", "multiline"], "@stylistic/jsx-indent-props": ["error", 2], "@stylistic/jsx-max-props-per-line": [ "error", { maximum: { single: 3, multi: 1 } } ], "@stylistic/jsx-newline": "off", "@stylistic/jsx-one-expression-per-line": ["error", { allow: "single-line" }], "@stylistic/jsx-pascal-case": [ "error", { allowAllCaps: true, allowNamespace: true } ], "@stylistic/jsx-quotes": ["error", "prefer-single"], "@stylistic/jsx-self-closing-comp": [ "error", { component: true, html: true } ], "@stylistic/jsx-sort-props": "off", "@stylistic/jsx-tag-spacing": [ "error", { closingSlash: "allow", beforeClosing: "never", beforeSelfClosing: "always" } ], "@stylistic/jsx-wrap-multilines": [ "error", { declaration: "parens-new-line", assignment: "parens-new-line", return: "parens-new-line", arrow: "parens-new-line", condition: "ignore", logical: "ignore", prop: "ignore", propertyValue: "ignore" } ] } }; var formatter_default3 = config5; // src/configMap.mjs var configMap = { react: [formatter_default3], nestjs: [ formatter_default2, import_default2, ...restrict_default2, ...nestjs_default ] }; var configMap_default = configMap; // src/index.mjs var defaultConfig3 = [ { languageOptions: { ecmaVersion: "latest", sourceType: "module", parser: import_parser2.default, parserOptions: { ecmaFeatures: { jsx: true } } }, settings: { react: { version: "detect" } } }, { ignores: [ "**/node_modules/**", "**/dist/**", "**/build/**", "**/.next/**", "**/next-env.d.ts" ] }, formatter_default, import_default, ...restrict_default ]; function eslintCodeGuideline(extendsConfig) { if (!extendsConfig) { return defaultConfig3; } let configs = [...defaultConfig3]; if (extendsConfig) { const extendItems = Array.isArray(extendsConfig) ? extendsConfig : [extendsConfig]; extendItems.forEach((item) => { configs = [...configs, ...configMap_default[item]]; }); } return configs; } var index_default = eslintCodeGuideline;