UNPKG

@j1n/lint-a-lot

Version:

The purpose of this package is to wrap common eslint and stylelint extensions in order to set them up as quickly as possible for a angular-project. Also this project contains a `.editorconfig` that should be used.

1 lines 9.87 kB
{"version":3,"file":"bundle.mjs","sources":["../src/eslint-config/custom-rules.js","../src/eslint-config/config/angular-ts-recommended-config.js","../src/eslint-config/config/angular-html-recommended-config.js","../src/eslint-config/config/testing-recommended-config.js","../src/eslint-config/plugin.js","../src/stylelint-config/index.js","../src/index.js","../src/stylelint-config/custom-rules.js"],"sourcesContent":["export const jsRules = {\n \"no-console\": \"error\",\n \"no-alert\": \"error\",\n \"no-debugger\": \"error\",\n eqeqeq: \"error\",\n yoda: \"error\",\n radix: \"error\",\n};\n\nexport const tsRules = {\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: \"enumMember\",\n format: [\"UPPER_CASE\"],\n },\n {\n selector: \"enum\",\n format: [\"PascalCase\"],\n },\n ],\n \"@typescript-eslint/explicit-function-return-type\": \"error\",\n};\n\nexport const jasmineRules = {\n \"jasmine/no-focused-tests\": \"error\",\n \"jasmine/expect-matcher\": \"error\",\n \"jasmine/missing-expect\": \"error\",\n \"jasmine/named-spy\": \"error\",\n \"jasmine/new-line-between-declarations\": \"error\",\n \"jasmine/no-suite-dupes\": \"error\",\n \"jasmine/no-spec-dupes\": \"error\",\n \"jasmine/prefer-toBeUndefined\": \"error\",\n \"jasmine/no-unsafe-spy\": \"error\",\n \"jasmine/no-disabled-tests\": \"warn\",\n};\n\nexport const importXRules = {\n \"import-x/order\": [\n \"error\",\n {\n groups: [\n [\"builtin\", \"external\"],\n [\"internal\"],\n [\"parent\", \"sibling\", \"index\"],\n ],\n \"newlines-between\": \"always\",\n alphabetize: {\n order: \"asc\",\n caseInsensitive: true,\n },\n },\n ],\n};\n\nexport const angularRules = {\n \"@angular-eslint/directive-selector\": [\n \"error\",\n {\n type: \"attribute\",\n prefix: \"app\",\n style: \"camelCase\",\n },\n ],\n \"@angular-eslint/component-selector\": [\n \"error\",\n {\n type: \"element\",\n prefix: \"app\",\n style: \"kebab-case\",\n },\n ],\n};\n\nexport const angularTemplateRules = {\n \"@angular-eslint/template/attributes-order\": [\n \"warn\",\n {\n order: [\n \"TEMPLATE_REFERENCE\",\n \"STRUCTURAL_DIRECTIVE\",\n \"OUTPUT_BINDING\",\n \"TWO_WAY_BINDING\",\n \"INPUT_BINDING\",\n \"ATTRIBUTE_BINDING\",\n ],\n },\n ],\n \"@angular-eslint/template/prefer-control-flow\": \"error\",\n \"@angular-eslint/template/prefer-self-closing-tags\": \"error\",\n};\n","import * as angular from \"angular-eslint\";\nimport globals from \"globals\";\nimport typescriptEslintPlugin from \"@typescript-eslint/eslint-plugin\";\nimport eslintPluginImportX from \"eslint-plugin-import-x\";\nimport * as tsResolver from \"eslint-import-resolver-typescript\";\nimport eslint from \"@eslint/js\";\nimport {\n angularRules,\n importXRules,\n jsRules,\n tsRules,\n} from \"../custom-rules.js\";\n\nexport const tsRecommended = [\n eslint.configs.recommended,\n ...angular.configs.tsRecommended,\n {\n files: [\"**/*.ts\"],\n ignores: [\"eslint.config.js\"],\n languageOptions: {\n globals: globals.browser,\n },\n processor: angular.processInlineTemplates,\n plugins: {\n \"@typescript-eslint\": typescriptEslintPlugin,\n \"import-x\": eslintPluginImportX,\n },\n settings: {\n \"import-x/resolver\": {\n typescript: true,\n name: \"tsResolver\",\n resolver: tsResolver,\n },\n },\n rules: {\n ...jsRules,\n ...tsRules,\n ...typescriptEslintPlugin.configs.recommended.rules,\n ...eslintPluginImportX.configs.recommended.rules,\n ...eslintPluginImportX.flatConfigs.typescript.rules,\n ...importXRules,\n ...angularRules,\n },\n },\n];\n","import * as angular from \"angular-eslint\";\nimport eslintPluginPrettierRecommended from \"eslint-plugin-prettier/recommended\";\nimport { angularTemplateRules } from \"../custom-rules.js\";\n\nexport const htmlRecommended = [\n ...angular.configs.templateRecommended,\n ...angular.configs.templateAccessibility,\n eslintPluginPrettierRecommended,\n {\n rules: {\n ...angularTemplateRules,\n \"prettier/prettier\": [\"error\", { parser: \"angular\" }],\n },\n },\n];\n","import jasmine from \"eslint-plugin-jasmine\";\nimport globals from \"globals\";\nimport { jasmineRules } from \"../custom-rules.js\";\n\nexport const testingRecommended = {\n files: [\"**/*.spec.ts\"],\n plugins: {\n jasmine,\n },\n languageOptions: {\n globals: {\n ...globals.jasmine,\n },\n },\n rules: jasmineRules,\n};\n","import fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { tsRecommended } from \"./config/angular-ts-recommended-config.js\";\nimport { htmlRecommended } from \"./config/angular-html-recommended-config.js\";\nimport { testingRecommended } from \"./config/testing-recommended-config.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// needed because in test scenario the package.json is not in the same folder compared to bundled scenario\nconst possiblePaths = [\n path.resolve(__dirname, \"../package.json\"),\n path.resolve(__dirname, \"../../package.json\"),\n];\n\nconst existingPath = possiblePaths.find((p) => fs.existsSync(p));\nconst pkg = JSON.parse(fs.readFileSync(existingPath, \"utf8\"));\n\nconst plugin = {\n meta: {\n name: pkg.name,\n version: pkg.version,\n },\n configs: {},\n rules: {},\n};\n\nObject.assign(plugin.configs, {\n angular: {\n tsRecommended,\n htmlRecommended,\n },\n shared: {\n testingRecommended,\n },\n});\n\nexport default plugin;\n","import customRules from \"./custom-rules.js\";\nimport { fileURLToPath } from \"url\";\nimport { dirname } from \"path\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nexport default {\n plugins: [\"stylelint-order\", \"stylelint-no-unsupported-browser-features\"],\n rules: {\n \"plugin/no-unsupported-browser-features\": [\n true,\n {\n browsers: [\n \"last 2 Edge versions\",\n \"last 2 Chrome versions\",\n \"last 2 Firefox versions\",\n \"last 2 Safari versions\",\n \"last 2 Samsung versions\",\n \"last 2 Opera versions\",\n ],\n severity: \"warning\",\n ignore: [\n \"css-nesting\",\n \"css-variables\",\n \"multicolumn\",\n \"font-unicode-range\",\n \"viewport-units\",\n ],\n },\n ],\n ...customRules,\n },\n extends: [\n \"stylelint-config-standard-scss\",\n \"stylelint-config-clean-order/error\",\n \"stylelint-prettier/recommended\",\n ],\n configBasedir: __dirname,\n};\n","import esLintConfig from \"./eslint-config/plugin.js\";\nimport stylelintConfig from \"./stylelint-config/index.js\";\n\nexport default {\n esLintConfig,\n stylelintConfig,\n};\n","export default {\n \"selector-class-pattern\": null,\n};\n"],"names":["tsRecommended","eslint","configs","recommended","angular","files","ignores","languageOptions","globals","browser","processor","processInlineTemplates","plugins","typescriptEslintPlugin","eslintPluginImportX","settings","typescript","name","resolver","tsResolver","rules","eqeqeq","yoda","radix","selector","format","flatConfigs","groups","alphabetize","order","caseInsensitive","type","prefix","style","htmlRecommended","templateRecommended","templateAccessibility","eslintPluginPrettierRecommended","parser","testingRecommended","jasmine","__filename","fileURLToPath","url","__dirname","path","dirname","existingPath","resolve","find","p","fs","existsSync","pkg","JSON","parse","readFileSync","plugin","meta","version","Object","assign","shared","index","esLintConfig","stylelintConfig","browsers","severity","ignore","extends","configBasedir"],"mappings":"2YAAO,MCaMA,EAAgB,CAC3BC,EAAOC,QAAQC,eACZC,EAAQF,QAAQF,cACnB,CACEK,MAAO,CAAC,WACRC,QAAS,CAAC,oBACVC,gBAAiB,CACfC,QAASA,EAAQC,SAEnBC,UAAWN,EAAQO,uBACnBC,QAAS,CACP,qBAAsBC,EACtB,WAAYC,GAEdC,SAAU,CACR,oBAAqB,CACnBC,YAAY,EACZC,KAAM,aACNC,SAAUC,IAGdC,MAAO,CDjCT,aAAc,QACd,WAAY,QACZ,cAAe,QACfC,OAAQ,QACRC,KAAM,QACNC,MAAO,QAIP,uCAAwC,CACtC,QACA,CACEC,SAAU,aACVC,OAAQ,CAAC,eAEX,CACED,SAAU,OACVC,OAAQ,CAAC,gBAGb,mDAAoD,WCgB7CZ,EAAuBX,QAAQC,YAAYiB,SAC3CN,EAAoBZ,QAAQC,YAAYiB,SACxCN,EAAoBY,YAAYV,WAAWI,MDDlD,iBAAkB,CAChB,QACA,CACEO,OAAQ,CACN,CAAC,UAAW,YACZ,CAAC,YACD,CAAC,SAAU,UAAW,UAExB,mBAAoB,SACpBC,YAAa,CACXC,MAAO,MACPC,iBAAiB,KAOvB,qCAAsC,CACpC,QACA,CACEC,KAAM,YACNC,OAAQ,MACRC,MAAO,cAGX,qCAAsC,CACpC,QACA,CACEF,KAAM,UACNC,OAAQ,MACRC,MAAO,kBEjEAC,EAAkB,IAC1B9B,EAAQF,QAAQiC,uBAChB/B,EAAQF,QAAQkC,sBACnBC,EACA,CACEjB,MAAO,CFkET,4CAA6C,CAC3C,OACA,CACES,MAAO,CACL,qBACA,uBACA,iBACA,kBACA,gBACA,uBAIN,+CAAgD,QAChD,oDAAqD,QE9EjD,oBAAqB,CAAC,QAAS,CAAES,OAAQ,eCPlCC,EAAqB,CAChClC,MAAO,CAAC,gBACRO,QAAS,CACP4B,WAEFjC,gBAAiB,CACfC,QAAS,IACJA,EAAQgC,UAGfpB,MHU0B,CAC1B,2BAA4B,QAC5B,yBAA0B,QAC1B,yBAA0B,QAC1B,oBAAqB,QACrB,wCAAyC,QACzC,yBAA0B,QAC1B,wBAAyB,QACzB,+BAAgC,QAChC,wBAAyB,QACzB,4BAA6B,SI3BzBqB,EAAaC,cAA0BC,KACvCC,EAAYC,EAAKC,QAAQL,GAQzBM,EALgB,CACpBF,EAAKG,QAAQJ,EAAW,mBACxBC,EAAKG,QAAQJ,EAAW,uBAGSK,MAAMC,GAAMC,EAAGC,WAAWF,KACvDG,EAAMC,KAAKC,MAAMJ,EAAGK,aAAaT,EAAc,SAE/CU,EAAS,CACbC,KAAM,CACJzC,KAAMoC,EAAIpC,KACV0C,QAASN,EAAIM,SAEfzD,QAAS,CAAE,EACXkB,MAAO,CAAE,GAGXwC,OAAOC,OAAOJ,EAAOvD,QAAS,CAC5BE,QAAS,CACPJ,gBACAkC,mBAEF4B,OAAQ,CACNvB,wBC3BJ,ICJewB,EAAA,CACfC,aAAEA,EACAC,gBDEa,CACbrD,QAAS,CAAC,kBAAmB,6CAC7BQ,MAAO,CACL,yCAA0C,EACxC,EACA,CACE8C,SAAU,CACR,uBACA,yBACA,0BACA,yBACA,0BACA,yBAEFC,SAAU,UACVC,OAAQ,CACN,cACA,gBACA,cACA,qBACA,oBE1BR,yBAA0B,MFgC1BC,QAAS,CACP,iCACA,qCACA,kCAEFC,cAjCgBxB,EADCJ,cAA0BC"}