eslint-plugin-conventions 5.3.3 → 5.3.4
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-conventions",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.4",
|
|
4
4
|
"description": "ESLint plugin for team code conventions — enforces filename case, magic-number bans, commented-out code, expiring TODOs, and deprecated-API usage.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/index.js",
|
package/src/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.configs=exports.plugin=exports.rules=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");exports.rules={get"no-commented-code"(){return require("./rules/conventions/no-commented-code").noCommentedCode},get"expiring-todo-comments"(){return require("./rules/conventions/expiring-todo-comments").expiringTodoComments},get"prefer-code-point"(){return require("./rules/conventions/prefer-code-point").preferCodePoint},get"prefer-dom-node-text-content"(){return require("./rules/conventions/prefer-dom-node-text-content").preferDomNodeTextContent},get"no-console-spaces"(){return require("./rules/conventions/no-console-spaces").noConsoleSpaces},get"no-deprecated-api"(){return require("./rules/deprecation/no-deprecated-api").noDeprecatedApi},get"prefer-dependency-version-strategy"(){return require("./rules/conventions/prefer-dependency-version-strategy").preferDependencyVersionStrategy},get"filename-case"(){return require("./rules/conventions/filename-case").filenameCase},get"consistent-existence-index-check"(){return require("./rules/conventions/consistent-existence-index-check").consistentExistenceIndexCheck},get"no-json-schema-tags"(){return require("./rules/conventions/no-json-schema-tags").noJsonSchemaTags},get"require-data-testid"(){return require("./rules/conventions/require-data-testid").requireDataTestId},get"utm-taxonomy"(){return require("./rules/conventions/utm-taxonomy").utmTaxonomy},get"no-raw-cross-property-href"(){return require("./rules/conventions/no-raw-cross-property-href").noRawCrossPropertyHref},get"analytics-event-naming"(){return require("./rules/conventions/analytics-event-naming").analyticsEventNaming},get"no-magic-numbers"(){return require("./rules/conventions/no-magic-numbers").noMagicNumbers}};(0,eslint_devkit_1.withCanonicalDocsUrls)("plugin-conventions",exports.rules);exports.plugin={meta:{name:"eslint-plugin-conventions",version:"5.3.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.configs=exports.plugin=exports.rules=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");exports.rules={get"no-commented-code"(){return require("./rules/conventions/no-commented-code").noCommentedCode},get"expiring-todo-comments"(){return require("./rules/conventions/expiring-todo-comments").expiringTodoComments},get"prefer-code-point"(){return require("./rules/conventions/prefer-code-point").preferCodePoint},get"prefer-dom-node-text-content"(){return require("./rules/conventions/prefer-dom-node-text-content").preferDomNodeTextContent},get"no-console-spaces"(){return require("./rules/conventions/no-console-spaces").noConsoleSpaces},get"no-deprecated-api"(){return require("./rules/deprecation/no-deprecated-api").noDeprecatedApi},get"prefer-dependency-version-strategy"(){return require("./rules/conventions/prefer-dependency-version-strategy").preferDependencyVersionStrategy},get"filename-case"(){return require("./rules/conventions/filename-case").filenameCase},get"consistent-existence-index-check"(){return require("./rules/conventions/consistent-existence-index-check").consistentExistenceIndexCheck},get"no-json-schema-tags"(){return require("./rules/conventions/no-json-schema-tags").noJsonSchemaTags},get"require-data-testid"(){return require("./rules/conventions/require-data-testid").requireDataTestId},get"utm-taxonomy"(){return require("./rules/conventions/utm-taxonomy").utmTaxonomy},get"no-raw-cross-property-href"(){return require("./rules/conventions/no-raw-cross-property-href").noRawCrossPropertyHref},get"analytics-event-naming"(){return require("./rules/conventions/analytics-event-naming").analyticsEventNaming},get"no-magic-numbers"(){return require("./rules/conventions/no-magic-numbers").noMagicNumbers}};(0,eslint_devkit_1.withCanonicalDocsUrls)("plugin-conventions",exports.rules);exports.plugin={meta:{name:"eslint-plugin-conventions",version:"5.3.4"},rules:exports.rules};exports.configs={recommended:{plugins:{conventions:exports.plugin},rules:{"conventions/no-commented-code":"warn","conventions/expiring-todo-comments":"warn","conventions/no-deprecated-api":"warn","conventions/utm-taxonomy":"error","conventions/no-raw-cross-property-href":"error","conventions/analytics-event-naming":"error"}}};exports.default=exports.plugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.preferDependencyVersionStrategy=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");exports.preferDependencyVersionStrategy=(0,eslint_devkit_2.createRule)({name:"prefer-dependency-version-strategy",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-conventions/docs/rules/prefer-dependency-version-strategy.md",description:"Enforce consistent version strategy (caret, tilde, exact, etc.) for package.json dependencies"},fixable:"code",messages:{preferStrategy:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.PACKAGE,issueName:"Dependency Version Strategy",description:'Dependency "{{name}}" should use {{strategy}} version',severity:"MEDIUM",fix:'Change "{{current}}" to "{{expected}}" for version flexibility',documentationLink:"https://docs.npmjs.com/cli/v10/configuring-npm/package-json#dependencies"}),invalidStrategy:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.WARNING,issueName:"Invalid Version Strategy",description:'Strategy "{{strategy}}" is not valid',severity:"MEDIUM",fix:"Use one of: caret (^), tilde (~), exact (no prefix), range (<, >, ||), or any",documentationLink:"https://docs.npmjs.com/cli/v10/configuring-npm/package-json#dependencies"})},schema:[{type:"object",properties:{strategy:{type:"string",enum:["caret","tilde","exact","range","any"],description:"Version strategy to enforce: caret (^), tilde (~), exact (no prefix), range (allows <, >, ||), or any (allows all)"},allowWorkspace:{type:"boolean",description:"Allow workspace: protocol versions",default:true},allowFile:{type:"boolean",description:"Allow file: protocol versions",default:true},allowLink:{type:"boolean",description:"Allow link: protocol versions",default:true},overrides:{type:"object",additionalProperties:{type:"string",enum:["caret","tilde","exact","range","any"]},description:'Package-specific strategy overrides. Key is package name, value is strategy. Example: { "react": "exact", "lodash": "tilde" }'}},additionalProperties:false}]},defaultOptions:[{strategy:"caret",allowWorkspace:true,allowFile:true,allowLink:true,overrides:{}}],create(context){const options=context.options[0]||{};const{strategy="caret",allowWorkspace=true,allowFile=true,allowLink=true,overrides={}}=options;const validStrategies=["caret","tilde","exact","range","any"];if(!validStrategies.includes(strategy)){context.report({loc:{line:1,column:0},messageId:"invalidStrategy",data:{strategy}});return{}}if(strategy==="any"){return{}}function checkVersion(node,depName,version){if(allowWorkspace&&version.startsWith("workspace:"))return;if(allowFile&&version.startsWith("file:"))return;if(allowLink&&version.startsWith("link:"))return;if(!version.match(/^[\^~<>=]?\d+\.\d+\.\d+/))return;const packageStrategy=overrides[depName]||strategy;if(packageStrategy==="any")return;let expectedVersion=version;let needsFix=false;const baseVersion=version.replace(/^[\^~<>=]+/,"");switch(packageStrategy){case"caret":if(!version.startsWith("^")){expectedVersion=`^${baseVersion}`;needsFix=true}break;case"tilde":if(!version.startsWith("~")){expectedVersion=`~${baseVersion}`;needsFix=true}break;case"exact":{if(version!==baseVersion){expectedVersion=baseVersion;needsFix=true}break}case"range":if(!version.includes("||")&&!version.includes(">=")&&!version.includes("<=")&&!version.includes(">")&&!version.includes("<")&&!version.includes(" - ")){expectedVersion=`^${baseVersion}`;needsFix=true}break}if(needsFix){context.report({node:node.value,messageId:"preferStrategy",data:{name:depName,strategy:packageStrategy,current:version,expected:expectedVersion},fix(fixer){return fixer.replaceText(node.value,JSON.stringify(expectedVersion))}})}}const checkObjectExpression=node=>{for(const prop of node.properties){if(prop.type==="Property"&&prop.key&&prop.value&&prop.value.type==="Literal"){const depName=prop.key.type==="Identifier"?prop.key.name:prop.key.type==="Literal"?String(prop.key.value):null;if(depName&&typeof prop.value.value==="string"){checkVersion(prop,depName,prop.value.value)}}}};return{'Property[key.value="dependencies"], Property[key.value="devDependencies"], Property[key.value="peerDependencies"]'(node){if(node.value.type!=="ObjectExpression")return;checkObjectExpression(node.value)},ObjectExpression(node){const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.preferDependencyVersionStrategy=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");const VERSION_SPECIFIER=/^(?:[\^~<>=]*\s*\d|[*x]$|latest$|next$|(?:workspace|file|link|npm|git\+[a-z]+|github|https?):)/i;exports.preferDependencyVersionStrategy=(0,eslint_devkit_2.createRule)({name:"prefer-dependency-version-strategy",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-conventions/docs/rules/prefer-dependency-version-strategy.md",description:"Enforce consistent version strategy (caret, tilde, exact, etc.) for package.json dependencies"},fixable:"code",messages:{preferStrategy:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.PACKAGE,issueName:"Dependency Version Strategy",description:'Dependency "{{name}}" should use {{strategy}} version',severity:"MEDIUM",fix:'Change "{{current}}" to "{{expected}}" for version flexibility',documentationLink:"https://docs.npmjs.com/cli/v10/configuring-npm/package-json#dependencies"}),invalidStrategy:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.WARNING,issueName:"Invalid Version Strategy",description:'Strategy "{{strategy}}" is not valid',severity:"MEDIUM",fix:"Use one of: caret (^), tilde (~), exact (no prefix), range (<, >, ||), or any",documentationLink:"https://docs.npmjs.com/cli/v10/configuring-npm/package-json#dependencies"})},schema:[{type:"object",properties:{strategy:{type:"string",enum:["caret","tilde","exact","range","any"],description:"Version strategy to enforce: caret (^), tilde (~), exact (no prefix), range (allows <, >, ||), or any (allows all)"},allowWorkspace:{type:"boolean",description:"Allow workspace: protocol versions",default:true},allowFile:{type:"boolean",description:"Allow file: protocol versions",default:true},allowLink:{type:"boolean",description:"Allow link: protocol versions",default:true},overrides:{type:"object",additionalProperties:{type:"string",enum:["caret","tilde","exact","range","any"]},description:'Package-specific strategy overrides. Key is package name, value is strategy. Example: { "react": "exact", "lodash": "tilde" }'}},additionalProperties:false}]},defaultOptions:[{strategy:"caret",allowWorkspace:true,allowFile:true,allowLink:true,overrides:{}}],create(context){const options=context.options[0]||{};const{strategy="caret",allowWorkspace=true,allowFile=true,allowLink=true,overrides={}}=options;const validStrategies=["caret","tilde","exact","range","any"];if(!validStrategies.includes(strategy)){context.report({loc:{line:1,column:0},messageId:"invalidStrategy",data:{strategy}});return{}}if(strategy==="any"){return{}}function checkVersion(node,depName,version){if(allowWorkspace&&version.startsWith("workspace:"))return;if(allowFile&&version.startsWith("file:"))return;if(allowLink&&version.startsWith("link:"))return;if(!version.match(/^[\^~<>=]?\d+\.\d+\.\d+/))return;const packageStrategy=overrides[depName]||strategy;if(packageStrategy==="any")return;let expectedVersion=version;let needsFix=false;const baseVersion=version.replace(/^[\^~<>=]+/,"");switch(packageStrategy){case"caret":if(!version.startsWith("^")){expectedVersion=`^${baseVersion}`;needsFix=true}break;case"tilde":if(!version.startsWith("~")){expectedVersion=`~${baseVersion}`;needsFix=true}break;case"exact":{if(version!==baseVersion){expectedVersion=baseVersion;needsFix=true}break}case"range":if(!version.includes("||")&&!version.includes(">=")&&!version.includes("<=")&&!version.includes(">")&&!version.includes("<")&&!version.includes(" - ")){expectedVersion=`^${baseVersion}`;needsFix=true}break}if(needsFix){context.report({node:node.value,messageId:"preferStrategy",data:{name:depName,strategy:packageStrategy,current:version,expected:expectedVersion},fix(fixer){return fixer.replaceText(node.value,JSON.stringify(expectedVersion))}})}}const checkObjectExpression=node=>{for(const prop of node.properties){if(prop.type==="Property"&&prop.key&&prop.value&&prop.value.type==="Literal"){const depName=prop.key.type==="Identifier"?prop.key.name:prop.key.type==="Literal"?String(prop.key.value):null;if(depName&&typeof prop.value.value==="string"){checkVersion(prop,depName,prop.value.value)}}}};return{'Property[key.value="dependencies"], Property[key.value="devDependencies"], Property[key.value="peerDependencies"]'(node){if(node.value.type!=="ObjectExpression")return;checkObjectExpression(node.value)},ObjectExpression(node){let sawSpecifier=false;for(const prop of node.properties){if(prop.type!=="Property")continue;if(prop.value.type!=="Literal"||typeof prop.value.value!=="string"||!VERSION_SPECIFIER.test(prop.value.value)){return}sawSpecifier=true}if(sawSpecifier){checkObjectExpression(node)}}}}});
|