eslint-plugin-operability 4.1.1 → 4.1.2
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-operability",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"description": "ESLint plugin for production operability — bans debug code and console logging in production, verbose error messages, and process.exit calls.",
|
|
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-console-log"(){return require("./rules/operability/no-console-log").noConsoleLog},get"no-process-exit"(){return require("./rules/operability/no-process-exit").noProcessExit},get"no-debug-code-in-production"(){return require("./rules/operability/no-debug-code-in-production").noDebugCodeInProduction},get"no-verbose-error-messages"(){return require("./rules/operability/no-verbose-error-messages").noVerboseErrorMessages},get"require-code-minification"(){return require("./rules/operability/require-code-minification").requireCodeMinification},get"require-data-minimization"(){return require("./rules/operability/require-data-minimization").requireDataMinimization},get"operability/no-console-log"(){return require("./rules/operability/no-console-log").noConsoleLog},get"operability/no-process-exit"(){return require("./rules/operability/no-process-exit").noProcessExit},get"operability/no-debug-code-in-production"(){return require("./rules/operability/no-debug-code-in-production").noDebugCodeInProduction},get"operability/no-verbose-error-messages"(){return require("./rules/operability/no-verbose-error-messages").noVerboseErrorMessages},get"operability/require-code-minification"(){return require("./rules/operability/require-code-minification").requireCodeMinification},get"operability/require-data-minimization"(){return require("./rules/operability/require-data-minimization").requireDataMinimization}};(0,eslint_devkit_1.withCanonicalDocsUrls)("plugin-operability",exports.rules);exports.plugin={meta:{name:"eslint-plugin-operability",version:"4.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-console-log"(){return require("./rules/operability/no-console-log").noConsoleLog},get"no-process-exit"(){return require("./rules/operability/no-process-exit").noProcessExit},get"no-debug-code-in-production"(){return require("./rules/operability/no-debug-code-in-production").noDebugCodeInProduction},get"no-verbose-error-messages"(){return require("./rules/operability/no-verbose-error-messages").noVerboseErrorMessages},get"require-code-minification"(){return require("./rules/operability/require-code-minification").requireCodeMinification},get"require-data-minimization"(){return require("./rules/operability/require-data-minimization").requireDataMinimization},get"operability/no-console-log"(){return require("./rules/operability/no-console-log").noConsoleLog},get"operability/no-process-exit"(){return require("./rules/operability/no-process-exit").noProcessExit},get"operability/no-debug-code-in-production"(){return require("./rules/operability/no-debug-code-in-production").noDebugCodeInProduction},get"operability/no-verbose-error-messages"(){return require("./rules/operability/no-verbose-error-messages").noVerboseErrorMessages},get"operability/require-code-minification"(){return require("./rules/operability/require-code-minification").requireCodeMinification},get"operability/require-data-minimization"(){return require("./rules/operability/require-data-minimization").requireDataMinimization}};(0,eslint_devkit_1.withCanonicalDocsUrls)("plugin-operability",exports.rules);exports.plugin={meta:{name:"eslint-plugin-operability",version:"4.1.2"},rules:exports.rules};exports.configs={recommended:{plugins:{"operability":exports.plugin},rules:{"operability/no-console-log":"warn","operability/no-debug-code-in-production":"error","operability/no-verbose-error-messages":"warn"}}};exports.default=exports.plugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.requireDataMinimization=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");exports.requireDataMinimization=(0,eslint_devkit_1.createRule)({name:"require-data-minimization",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-operability/docs/rules/require-data-minimization.md",description:"Identify excessive data collection patterns",cwe:"CWE-213",cvss:5},messages:{violationDetected:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.SECURITY,issueName:"violation Detected",cwe:"CWE-213",description:"Excessive data collection detected - only collect data that is necessary",severity:"MEDIUM",fix:"Review and apply secure practices",documentationLink:"https://cwe.mitre.org/data/definitions/213.html"})},schema:[{type:"object",properties:{piiFields:{type:"array",items:{type:"string"},description:"Property names this project treats as personal data. Replaces the default. Empty means the rule stays silent.",default:[]},maxProperties:{type:"number",description:"How many properties in one object literal count as excessive breadth.",default:10,minimum:1}},additionalProperties:false}]},defaultOptions:[{piiFields:[],maxProperties:10}],create(context,[options]){const piiFields=new Set(options.piiFields);const{maxProperties}=options;function report(node){context.report({node,messageId:"violationDetected"})}if(piiFields.size===0)return{};return{ObjectExpression(node){if(node.properties.length<=maxProperties)return;const carriesPersonalData=node.properties.some(p=>{if(p.type!==eslint_devkit_1.AST_NODE_TYPES.Property)return false;const name=(0,eslint_devkit_1.objectKeyName)(p);return name!==null&&piiFields.has(name)});if(carriesPersonalData)report(node)}}}});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.requireDataMinimization=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");function isStaticValue(node,scope){if(node.type===eslint_devkit_1.AST_NODE_TYPES.ArrayExpression){return node.elements.every(element=>element!==null&&element.type!==eslint_devkit_1.AST_NODE_TYPES.SpreadElement&&isStaticValue(element,scope))}if(node.type===eslint_devkit_1.AST_NODE_TYPES.ObjectExpression){return node.properties.every(property=>property.type===eslint_devkit_1.AST_NODE_TYPES.Property&&isStaticValue(property.value,scope))}return(0,eslint_devkit_1.isStaticExpression)({node,scope})}exports.requireDataMinimization=(0,eslint_devkit_1.createRule)({name:"require-data-minimization",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-operability/docs/rules/require-data-minimization.md",description:"Identify excessive data collection patterns",cwe:"CWE-213",cvss:5},messages:{violationDetected:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.SECURITY,issueName:"violation Detected",cwe:"CWE-213",description:"Excessive data collection detected - only collect data that is necessary",severity:"MEDIUM",fix:"Review and apply secure practices",documentationLink:"https://cwe.mitre.org/data/definitions/213.html"})},schema:[{type:"object",properties:{piiFields:{type:"array",items:{type:"string"},description:"Property names this project treats as personal data. Replaces the default. Empty means the rule stays silent.",default:[]},maxProperties:{type:"number",description:"How many properties in one object literal count as excessive breadth.",default:10,minimum:1}},additionalProperties:false}]},defaultOptions:[{piiFields:[],maxProperties:10}],create(context,[options]){const piiFields=new Set(options.piiFields);const{maxProperties}=options;function report(node){context.report({node,messageId:"violationDetected"})}if(piiFields.size===0)return{};return{ObjectExpression(node){if(node.properties.length<=maxProperties)return;const carriesPersonalData=node.properties.some(p=>{if(p.type!==eslint_devkit_1.AST_NODE_TYPES.Property)return false;const name=(0,eslint_devkit_1.objectKeyName)(p);return name!==null&&piiFields.has(name)});if(!carriesPersonalData)return;if(isStaticValue(node,context.sourceCode.getScope(node)))return;report(node)}}}});
|