@2digits/eslint-plugin 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -10
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var utils = require('@typescript-eslint/utils');
|
|
|
4
4
|
var magicRegexp = require('magic-regexp');
|
|
5
5
|
var tsPattern = require('ts-pattern');
|
|
6
6
|
|
|
7
|
-
var l="@2digits/eslint-plugin";var f="0.0.
|
|
7
|
+
var l="@2digits/eslint-plugin";var f="0.0.5",c={url:"https://github.com/2digits-agency/configs",directory:"packages/eslint-plugin"};var u=utils.ESLintUtils.RuleCreator(r=>`${c.url}/blob/${l}@${f}/packages/eslint/src/rules/${r}.ts`);var x={plugins:["@2digits"],rules:{"@2digits/type-param-names":"error"}};var s=magicRegexp.anyOf("T","$").at.lineStart(),p=magicRegexp.letter.uppercase,h=magicRegexp.oneOrMore(magicRegexp.letter),j=magicRegexp.digit.times.any().at.lineEnd(),k=magicRegexp.createRegExp(s),M=magicRegexp.createRegExp(s,p),$=magicRegexp.createRegExp(s,p,h),P=magicRegexp.createRegExp(s,p,h,j),a={prefix:"prefix",initial:"initial",remainder:"remainder",regex:"regex"},R=u({name:__filename,meta:{type:"suggestion",docs:{description:"Enforce giving proper names to type parameters when there are two or more",recommended:"error"},schema:[],messages:{prefix:'Type parameter {{name}} should have a prefix of "T" or "$"',initial:"Type parameter {{name}}'s name should start with an uppercase letter",remainder:"Type parameter {{name}}'s name should contain at least one lowercase letter",regex:"Type parameter {{name}} should match the regex {{regex}}"}},defaultOptions:[],create(r){return {TSTypeParameterDeclaration(w){let{params:n}=w;if(!(n.length===1&&n.at(0)?.name.name==="T"))for(let m of n){let{name:d}=m.name,g=tsPattern.match(d).with(tsPattern.P.string.regex(P),()=>!1).with(tsPattern.P.not(tsPattern.P.string.regex(k)),()=>a.prefix).with(tsPattern.P.not(tsPattern.P.string.regex(M)),()=>a.initial).with(tsPattern.P.not(tsPattern.P.string.regex($)),()=>a.remainder).otherwise(()=>!1);g&&r.report({node:m,messageId:g,data:{name:d}});}}}}});var T={"type-param-names":R};var V={rules:T,configs:{recommended:x}};
|
|
8
8
|
|
|
9
9
|
module.exports = V;
|
|
10
10
|
//# sourceMappingURL=out.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/index.ts","../package.json","../src/configs/recommended.ts","../src/rules/type-param-names.ts","../src/rules/index.ts","../src/index.ts"],"names":["ESLintUtils","name","version","repository","createRule","rule","recommended_default","anyOf","createRegExp","digit","letter","oneOrMore","match","P","prefix","initial","remainder","digits","PrefixRegex","InitialRegex","RemainderRegex","TypeParamRegex","MessageId","type_param_names_default","context","node","params","param","messageId","rules_default","src_default"],"mappings":"AAAA,OAAS,eAAAA,MAAmB,2BCC1B,IAAAC,EAAQ,yBAER,IAAAC,EAAW,QACXC,EAAc,CACZ,IAAO,4CACP,UAAa,wBACf,EDFK,IAAMC,EAAaJ,EAAY,YACnCK,GAAS,GAAGF,EAAW,
|
|
1
|
+
{"version":3,"sources":["../src/utils/index.ts","../package.json","../src/configs/recommended.ts","../src/rules/type-param-names.ts","../src/rules/index.ts","../src/index.ts"],"names":["ESLintUtils","name","version","repository","createRule","rule","recommended_default","anyOf","createRegExp","digit","letter","oneOrMore","match","P","prefix","initial","remainder","digits","PrefixRegex","InitialRegex","RemainderRegex","TypeParamRegex","MessageId","type_param_names_default","context","node","params","param","messageId","rules_default","src_default"],"mappings":"AAAA,OAAS,eAAAA,MAAmB,2BCC1B,IAAAC,EAAQ,yBAER,IAAAC,EAAW,QACXC,EAAc,CACZ,IAAO,4CACP,UAAa,wBACf,EDFK,IAAMC,EAAaJ,EAAY,YACnCK,GAAS,GAAGF,EAAW,GAAG,SAASF,CAAI,IAAIC,CAAO,8BAA8BG,CAAI,KACvF,EEFA,IAAOC,EAAqB,CAC1B,QAAS,CAAC,UAAU,EACpB,MAAO,CACL,4BAA6B,OAC/B,CACF,ECVA,OAAS,SAAAC,EAAO,gBAAAC,EAAc,SAAAC,EAAO,UAAAC,EAAQ,aAAAC,MAAiB,eAC9D,OAAS,SAAAC,EAAO,KAAAC,MAAS,aAIzB,IAAMC,EAASP,EAAM,IAAK,GAAG,EAAE,GAAG,UAAU,EACtCQ,EAAUL,EAAO,UACjBM,EAAYL,EAAUD,CAAM,EAC5BO,EAASR,EAAM,MAAM,IAAI,EAAE,GAAG,QAAQ,EAEtCS,EAAcV,EAAaM,CAAM,EACjCK,EAAeX,EAAaM,EAAQC,CAAO,EAC3CK,EAAiBZ,EAAaM,EAAQC,EAASC,CAAS,EACxDK,EAAiBb,EAAaM,EAAQC,EAASC,EAAWC,CAAM,EAGhEK,EAAY,CAChB,OAAQ,SACR,QAAS,UACT,UAAW,YACX,MAAO,OACT,EAEOC,EAAQnB,EAA0B,CACvC,KAAM,WACN,KAAM,CACJ,KAAM,aACN,KAAM,CACJ,YAAa,4EACb,YAAa,OACf,EACA,OAAQ,CAAC,EACT,SAAU,CACR,OAAQ,6DACR,QAAS,uEACT,UAAW,8EACX,MAAO,0DACT,CACF,EACA,eAAgB,CAAC,EACjB,OAAOoB,EAAS,CACd,MAAO,CACL,2BAA2BC,EAAM,CAC/B,GAAM,CAAE,OAAAC,CAAO,EAAID,EAEnB,GAAI,EAAAC,EAAO,SAAW,GAAKA,EAAO,GAAG,CAAC,GAAG,KAAK,OAAS,KAEvD,QAAWC,KAASD,EAAQ,CAC1B,GAAM,CAAE,KAAAzB,CAAK,EAAI0B,EAAM,KAEjBC,EAAYhB,EAAMX,CAAI,EACzB,KAAKY,EAAE,OAAO,MAAMQ,CAAc,EAAG,IAAM,EAAc,EACzD,KAAKR,EAAE,IAAIA,EAAE,OAAO,MAAMK,CAAW,CAAC,EAAG,IAAMI,EAAU,MAAM,EAC/D,KAAKT,EAAE,IAAIA,EAAE,OAAO,MAAMM,CAAY,CAAC,EAAG,IAAMG,EAAU,OAAO,EACjE,KAAKT,EAAE,IAAIA,EAAE,OAAO,MAAMO,CAAc,CAAC,EAAG,IAAME,EAAU,SAAS,EACrE,UAAU,IAAM,EAAc,EAEjCM,GACEJ,EAAQ,OAAO,CACb,KAAMG,EACN,UAAAC,EACA,KAAM,CAAE,KAAA3B,CAAK,CACf,CAAC,CACL,CACF,CACF,CACF,CACF,CAAC,ECjED,IAAO4B,EAAQ,CACb,mBAAoBN,CACtB,ECDA,IAAOO,EAAQ,CACb,MAAAD,EACA,QAAS,CACP,YAAAvB,CACF,CACF","sourcesContent":["import { ESLintUtils } from '@typescript-eslint/utils';\nimport type { ESLintConfig } from 'eslint-define-config';\n\nimport { name, repository, version } from '../../package.json';\n\nexport const createRule = ESLintUtils.RuleCreator(\n (rule) => `${repository.url}/blob/${name}@${version}/packages/eslint/src/rules/${rule}.ts`,\n);\n\nexport function defineConfig<TConfig extends ESLintConfig>(config: TConfig): TConfig {\n return config;\n}\n","{\n \"name\": \"@2digits/eslint-plugin\",\n \"description\": \"An eslint plugin that provides a set of rules to enforce best practices for 2digits projects\",\n \"version\": \"0.0.5\",\n \"repository\": {\n \"url\": \"https://github.com/2digits-agency/configs\",\n \"directory\": \"packages/eslint-plugin\"\n },\n \"license\": \"MIT\",\n \"public\": true,\n \"sideEffects\": false,\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"import\": {\n \"default\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\"\n },\n \"require\": {\n \"default\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n }\n }\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint --ignore-path ../../.gitignore .\",\n \"types\": \"tsc --noEmit\",\n \"test\": \"vitest --run\"\n },\n \"keywords\": [\n \"eslint\",\n \"eslint-plugin\",\n \"2digits\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"dependencies\": {\n \"@types/eslint\": \"^8.44.7\",\n \"@typescript-eslint/utils\": \"5.62.0\",\n \"eslint\": \"^8.54.0\",\n \"magic-regexp\": \"^0.7.0\",\n \"ts-pattern\": \"^5.0.5\"\n },\n \"devDependencies\": {\n \"@2digits/tsconfig\": \"*\",\n \"eslint-define-config\": \"^2.0.0\",\n \"tsup\": \"^8.0.0\",\n \"turbo\": \"^1.10.16\",\n \"typescript\": \"^5.2.2\",\n \"vitest\": \"^0.34.0\"\n },\n \"eslintConfig\": {\n \"extends\": \"@2digits\",\n \"ignorePatterns\": [\n \"fixtures\"\n ]\n }\n}\n","import type { Rules } from 'eslint-define-config';\n\nimport type Rule from '../rules';\nimport { defineConfig } from '../utils';\n\nexport default defineConfig({\n plugins: ['@2digits'],\n rules: {\n '@2digits/type-param-names': 'error',\n } satisfies Record<`@2digits/${keyof typeof Rule}`, Rules[string]>,\n});\n","import { anyOf, createRegExp, digit, letter, oneOrMore } from 'magic-regexp';\nimport { match, P } from 'ts-pattern';\n\nimport { createRule } from '../utils';\n\nconst prefix = anyOf('T', '$').at.lineStart();\nconst initial = letter.uppercase;\nconst remainder = oneOrMore(letter);\nconst digits = digit.times.any().at.lineEnd();\n\nconst PrefixRegex = createRegExp(prefix);\nconst InitialRegex = createRegExp(prefix, initial);\nconst RemainderRegex = createRegExp(prefix, initial, remainder);\nconst TypeParamRegex = createRegExp(prefix, initial, remainder, digits);\n\ntype MessageId = (typeof MessageId)[keyof typeof MessageId];\nconst MessageId = {\n prefix: 'prefix',\n initial: 'initial',\n remainder: 'remainder',\n regex: 'regex',\n} as const;\n\nexport default createRule<[], MessageId>({\n name: __filename,\n meta: {\n type: 'suggestion',\n docs: {\n description: 'Enforce giving proper names to type parameters when there are two or more',\n recommended: 'error',\n },\n schema: [],\n messages: {\n prefix: 'Type parameter {{name}} should have a prefix of \"T\" or \"$\"',\n initial: \"Type parameter {{name}}'s name should start with an uppercase letter\",\n remainder: \"Type parameter {{name}}'s name should contain at least one lowercase letter\",\n regex: 'Type parameter {{name}} should match the regex {{regex}}',\n },\n },\n defaultOptions: [],\n create(context) {\n return {\n TSTypeParameterDeclaration(node) {\n const { params } = node;\n\n if (params.length === 1 && params.at(0)?.name.name === 'T') return;\n\n for (const param of params) {\n const { name } = param.name;\n\n const messageId = match(name)\n .with(P.string.regex(TypeParamRegex), () => false as const)\n .with(P.not(P.string.regex(PrefixRegex)), () => MessageId.prefix)\n .with(P.not(P.string.regex(InitialRegex)), () => MessageId.initial)\n .with(P.not(P.string.regex(RemainderRegex)), () => MessageId.remainder)\n .otherwise(() => false as const);\n\n messageId &&\n context.report({\n node: param,\n messageId,\n data: { name },\n });\n }\n },\n };\n },\n});\n","import typeParamNames from './type-param-names';\n\nexport default {\n 'type-param-names': typeParamNames,\n};\n","import recommended from './configs/recommended';\nimport rules from './rules';\n\nexport default {\n rules,\n configs: {\n recommended,\n },\n};\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { ESLintUtils } from '@typescript-eslint/utils';
|
|
|
3
3
|
import { anyOf, letter, oneOrMore, digit, createRegExp } from 'magic-regexp';
|
|
4
4
|
import { match, P as P$1 } from 'ts-pattern';
|
|
5
5
|
|
|
6
|
-
var E=()=>fileURLToPath(import.meta.url);var t=E();var f="@2digits/eslint-plugin";var c="0.0.
|
|
6
|
+
var E=()=>fileURLToPath(import.meta.url);var t=E();var f="@2digits/eslint-plugin";var c="0.0.5",u={url:"https://github.com/2digits-agency/configs",directory:"packages/eslint-plugin"};var x=ESLintUtils.RuleCreator(n=>`${u.url}/blob/${f}@${c}/packages/eslint/src/rules/${n}.ts`);var y={plugins:["@2digits"],rules:{"@2digits/type-param-names":"error"}};var s=anyOf("T","$").at.lineStart(),m=letter.uppercase,R=oneOrMore(letter),P=digit.times.any().at.lineEnd(),$=createRegExp(s),S=createRegExp(s,m),L=createRegExp(s,m,R),_=createRegExp(s,m,R,P),p={prefix:"prefix",initial:"initial",remainder:"remainder",regex:"regex"},T=x({name:t,meta:{type:"suggestion",docs:{description:"Enforce giving proper names to type parameters when there are two or more",recommended:"error"},schema:[],messages:{prefix:'Type parameter {{name}} should have a prefix of "T" or "$"',initial:"Type parameter {{name}}'s name should start with an uppercase letter",remainder:"Type parameter {{name}}'s name should contain at least one lowercase letter",regex:"Type parameter {{name}} should match the regex {{regex}}"}},defaultOptions:[],create(n){return {TSTypeParameterDeclaration(v){let{params:o}=v;if(!(o.length===1&&o.at(0)?.name.name==="T"))for(let d of o){let{name:g}=d.name,l=match(g).with(P$1.string.regex(_),()=>!1).with(P$1.not(P$1.string.regex($)),()=>p.prefix).with(P$1.not(P$1.string.regex(S)),()=>p.initial).with(P$1.not(P$1.string.regex(L)),()=>p.remainder).otherwise(()=>!1);l&&n.report({node:d,messageId:l,data:{name:g}});}}}}});var w={"type-param-names":T};var ee={rules:w,configs:{recommended:y}};
|
|
7
7
|
|
|
8
8
|
export { ee as default };
|
|
9
9
|
//# sourceMappingURL=out.js.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/tsup@
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.0_postcss@8.4.31_typescript@5.2.2/node_modules/tsup/assets/esm_shims.js","../src/utils/index.ts","../package.json","../src/configs/recommended.ts","../src/rules/type-param-names.ts","../src/rules/index.ts","../src/index.ts"],"names":["fileURLToPath","getFilename","__filename","ESLintUtils","name","version","repository","createRule","rule","recommended_default","anyOf","createRegExp","digit","letter","oneOrMore","match","P","prefix","initial","remainder","digits","PrefixRegex","InitialRegex","RemainderRegex","TypeParamRegex","MessageId","type_param_names_default","context","node","params","param","messageId","rules_default","src_default"],"mappings":"AACA,OAAS,iBAAAA,MAAqB,MAG9B,IAAMC,EAAc,IAAMD,EAAc,YAAY,GAAG,EAIhD,IAAME,EAA6BD,EAAY,ECRtD,OAAS,eAAAE,MAAmB,2BCC1B,IAAAC,EAAQ,yBAER,IAAAC,EAAW,QACXC,EAAc,CACZ,IAAO,4CACP,UAAa,wBACf,EDFK,IAAMC,EAAaJ,EAAY,YACnCK,GAAS,GAAGF,EAAW,GAAG,SAASF,CAAI,IAAIC,CAAO,8BAA8BG,CAAI,KACvF,EEFA,IAAOC,EAAqB,CAC1B,QAAS,CAAC,UAAU,EACpB,MAAO,CACL,4BAA6B,OAC/B,CACF,ECVA,OAAS,SAAAC,EAAO,gBAAAC,EAAc,SAAAC,EAAO,UAAAC,EAAQ,aAAAC,MAAiB,eAC9D,OAAS,SAAAC,EAAO,KAAAC,MAAS,aAIzB,IAAMC,EAASP,EAAM,IAAK,GAAG,EAAE,GAAG,UAAU,EACtCQ,EAAUL,EAAO,UACjBM,EAAYL,EAAUD,CAAM,EAC5BO,EAASR,EAAM,MAAM,IAAI,EAAE,GAAG,QAAQ,EAEtCS,EAAcV,EAAaM,CAAM,EACjCK,EAAeX,EAAaM,EAAQC,CAAO,EAC3CK,EAAiBZ,EAAaM,EAAQC,EAASC,CAAS,EACxDK,EAAiBb,EAAaM,EAAQC,EAASC,EAAWC,CAAM,EAGhEK,EAAY,CAChB,OAAQ,SACR,QAAS,UACT,UAAW,YACX,MAAO,OACT,EAEOC,EAAQnB,EAA0B,CACvC,KAAML,EACN,KAAM,CACJ,KAAM,aACN,KAAM,CACJ,YAAa,4EACb,YAAa,OACf,EACA,OAAQ,CAAC,EACT,SAAU,CACR,OAAQ,6DACR,QAAS,uEACT,UAAW,8EACX,MAAO,0DACT,CACF,EACA,eAAgB,CAAC,EACjB,OAAOyB,EAAS,CACd,MAAO,CACL,2BAA2BC,EAAM,CAC/B,GAAM,CAAE,OAAAC,CAAO,EAAID,EAEnB,GAAI,EAAAC,EAAO,SAAW,GAAKA,EAAO,GAAG,CAAC,GAAG,KAAK,OAAS,KAEvD,QAAWC,KAASD,EAAQ,CAC1B,GAAM,CAAE,KAAAzB,CAAK,EAAI0B,EAAM,KAEjBC,EAAYhB,EAAMX,CAAI,EACzB,KAAKY,EAAE,OAAO,MAAMQ,CAAc,EAAG,IAAM,EAAc,EACzD,KAAKR,EAAE,IAAIA,EAAE,OAAO,MAAMK,CAAW,CAAC,EAAG,IAAMI,EAAU,MAAM,EAC/D,KAAKT,EAAE,IAAIA,EAAE,OAAO,MAAMM,CAAY,CAAC,EAAG,IAAMG,EAAU,OAAO,EACjE,KAAKT,EAAE,IAAIA,EAAE,OAAO,MAAMO,CAAc,CAAC,EAAG,IAAME,EAAU,SAAS,EACrE,UAAU,IAAM,EAAc,EAEjCM,GACEJ,EAAQ,OAAO,CACb,KAAMG,EACN,UAAAC,EACA,KAAM,CAAE,KAAA3B,CAAK,CACf,CAAC,CACL,CACF,CACF,CACF,CACF,CAAC,ECjED,IAAO4B,EAAQ,CACb,mBAAoBN,CACtB,ECDA,IAAOO,GAAQ,CACb,MAAAD,EACA,QAAS,CACP,YAAAvB,CACF,CACF","sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { ESLintUtils } from '@typescript-eslint/utils';\nimport type { ESLintConfig } from 'eslint-define-config';\n\nimport { name, repository, version } from '../../package.json';\n\nexport const createRule = ESLintUtils.RuleCreator(\n (rule) => `${repository.url}/blob/${name}@${version}/packages/eslint/src/rules/${rule}.ts`,\n);\n\nexport function defineConfig<TConfig extends ESLintConfig>(config: TConfig): TConfig {\n return config;\n}\n","{\n \"name\": \"@2digits/eslint-plugin\",\n \"description\": \"An eslint plugin that provides a set of rules to enforce best practices for 2digits projects\",\n \"version\": \"0.0.5\",\n \"repository\": {\n \"url\": \"https://github.com/2digits-agency/configs\",\n \"directory\": \"packages/eslint-plugin\"\n },\n \"license\": \"MIT\",\n \"public\": true,\n \"sideEffects\": false,\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"import\": {\n \"default\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\"\n },\n \"require\": {\n \"default\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n }\n }\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint --ignore-path ../../.gitignore .\",\n \"types\": \"tsc --noEmit\",\n \"test\": \"vitest --run\"\n },\n \"keywords\": [\n \"eslint\",\n \"eslint-plugin\",\n \"2digits\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"dependencies\": {\n \"@types/eslint\": \"^8.44.7\",\n \"@typescript-eslint/utils\": \"5.62.0\",\n \"eslint\": \"^8.54.0\",\n \"magic-regexp\": \"^0.7.0\",\n \"ts-pattern\": \"^5.0.5\"\n },\n \"devDependencies\": {\n \"@2digits/tsconfig\": \"*\",\n \"eslint-define-config\": \"^2.0.0\",\n \"tsup\": \"^8.0.0\",\n \"turbo\": \"^1.10.16\",\n \"typescript\": \"^5.2.2\",\n \"vitest\": \"^0.34.0\"\n },\n \"eslintConfig\": {\n \"extends\": \"@2digits\",\n \"ignorePatterns\": [\n \"fixtures\"\n ]\n }\n}\n","import type { Rules } from 'eslint-define-config';\n\nimport type Rule from '../rules';\nimport { defineConfig } from '../utils';\n\nexport default defineConfig({\n plugins: ['@2digits'],\n rules: {\n '@2digits/type-param-names': 'error',\n } satisfies Record<`@2digits/${keyof typeof Rule}`, Rules[string]>,\n});\n","import { anyOf, createRegExp, digit, letter, oneOrMore } from 'magic-regexp';\nimport { match, P } from 'ts-pattern';\n\nimport { createRule } from '../utils';\n\nconst prefix = anyOf('T', '$').at.lineStart();\nconst initial = letter.uppercase;\nconst remainder = oneOrMore(letter);\nconst digits = digit.times.any().at.lineEnd();\n\nconst PrefixRegex = createRegExp(prefix);\nconst InitialRegex = createRegExp(prefix, initial);\nconst RemainderRegex = createRegExp(prefix, initial, remainder);\nconst TypeParamRegex = createRegExp(prefix, initial, remainder, digits);\n\ntype MessageId = (typeof MessageId)[keyof typeof MessageId];\nconst MessageId = {\n prefix: 'prefix',\n initial: 'initial',\n remainder: 'remainder',\n regex: 'regex',\n} as const;\n\nexport default createRule<[], MessageId>({\n name: __filename,\n meta: {\n type: 'suggestion',\n docs: {\n description: 'Enforce giving proper names to type parameters when there are two or more',\n recommended: 'error',\n },\n schema: [],\n messages: {\n prefix: 'Type parameter {{name}} should have a prefix of \"T\" or \"$\"',\n initial: \"Type parameter {{name}}'s name should start with an uppercase letter\",\n remainder: \"Type parameter {{name}}'s name should contain at least one lowercase letter\",\n regex: 'Type parameter {{name}} should match the regex {{regex}}',\n },\n },\n defaultOptions: [],\n create(context) {\n return {\n TSTypeParameterDeclaration(node) {\n const { params } = node;\n\n if (params.length === 1 && params.at(0)?.name.name === 'T') return;\n\n for (const param of params) {\n const { name } = param.name;\n\n const messageId = match(name)\n .with(P.string.regex(TypeParamRegex), () => false as const)\n .with(P.not(P.string.regex(PrefixRegex)), () => MessageId.prefix)\n .with(P.not(P.string.regex(InitialRegex)), () => MessageId.initial)\n .with(P.not(P.string.regex(RemainderRegex)), () => MessageId.remainder)\n .otherwise(() => false as const);\n\n messageId &&\n context.report({\n node: param,\n messageId,\n data: { name },\n });\n }\n },\n };\n },\n});\n","import typeParamNames from './type-param-names';\n\nexport default {\n 'type-param-names': typeParamNames,\n};\n","import recommended from './configs/recommended';\nimport rules from './rules';\n\nexport default {\n rules,\n configs: {\n recommended,\n },\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@2digits/eslint-plugin",
|
|
3
3
|
"description": "An eslint plugin that provides a set of rules to enforce best practices for 2digits projects",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.5",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/2digits-agency/configs",
|
|
7
7
|
"directory": "packages/eslint-plugin"
|
|
@@ -34,19 +34,19 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@types/eslint": "^8.
|
|
38
|
-
"@typescript-eslint/utils": "5.
|
|
39
|
-
"eslint": "
|
|
37
|
+
"@types/eslint": "^8.44.7",
|
|
38
|
+
"@typescript-eslint/utils": "5.62.0",
|
|
39
|
+
"eslint": "^8.54.0",
|
|
40
40
|
"magic-regexp": "^0.7.0",
|
|
41
|
-
"ts-pattern": "^5.0.
|
|
41
|
+
"ts-pattern": "^5.0.5"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@2digits/tsconfig": "*",
|
|
45
|
-
"eslint-define-config": "^
|
|
46
|
-
"tsup": "^
|
|
47
|
-
"turbo": "^1.10.
|
|
48
|
-
"typescript": "^5.
|
|
49
|
-
"vitest": "^0.
|
|
45
|
+
"eslint-define-config": "^2.0.0",
|
|
46
|
+
"tsup": "^8.0.0",
|
|
47
|
+
"turbo": "^1.10.16",
|
|
48
|
+
"typescript": "^5.2.2",
|
|
49
|
+
"vitest": "^0.34.0"
|
|
50
50
|
},
|
|
51
51
|
"eslintConfig": {
|
|
52
52
|
"extends": "@2digits",
|