@checkdigit/eslint-plugin 7.15.0-PR.136-a1e2 → 7.15.0-PR.136-c0a3
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.
|
@@ -9,10 +9,7 @@ function getPropertyName(property) {
|
|
|
9
9
|
return void 0;
|
|
10
10
|
}
|
|
11
11
|
const propertyKey = property.key;
|
|
12
|
-
return propertyKey.type === AST_NODE_TYPES.Identifier ? propertyKey.name :
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
14
|
-
propertyKey.type === AST_NODE_TYPES.Literal && typeof propertyKey.value === "string" ? propertyKey.value : void 0
|
|
15
|
-
);
|
|
12
|
+
return propertyKey.type === AST_NODE_TYPES.Identifier ? propertyKey.name : typeof propertyKey.value === "string" ? propertyKey.value : void 0;
|
|
16
13
|
}
|
|
17
14
|
function extractObjectProperties(objectExpression) {
|
|
18
15
|
const objectProperties = {};
|
|
@@ -53,7 +50,9 @@ function getReadCommandInfo(objectExpression) {
|
|
|
53
50
|
const hasTableName = "TableName" in extractedProperties;
|
|
54
51
|
const hasKey = existsKeyProperty(extractedProperties);
|
|
55
52
|
if (hasTableName && hasKey) {
|
|
56
|
-
|
|
53
|
+
if (!("UpdateExpression" in extractedProperties) && !("ConditionExpression" in extractedProperties)) {
|
|
54
|
+
readCommandInfo = { type: "GetItem" };
|
|
55
|
+
}
|
|
57
56
|
} else {
|
|
58
57
|
const hasKeyCondExpr = extractedProperties["KeyConditionExpression"]?.value.type === AST_NODE_TYPES.Literal;
|
|
59
58
|
const hasLegacyKeyConditions = extractedProperties["KeyConditions"]?.value.type === AST_NODE_TYPES.ObjectExpression;
|
|
@@ -81,11 +80,11 @@ var rule = createRule({
|
|
|
81
80
|
meta: {
|
|
82
81
|
type: "problem",
|
|
83
82
|
docs: {
|
|
84
|
-
description: "For AWS dynamodb commands Query/GetItem/BatchGetItem, ConsistentRead option should be set as true unless global index is used. This will make the service more robust at the ignorable cost of RCU."
|
|
83
|
+
description: "For AWS dynamodb commands Query/GetItem/BatchGetItem, ConsistentRead option should always be set as true unless global index is used. This will make the service more robust at the ignorable cost of RCU."
|
|
85
84
|
},
|
|
86
85
|
messages: {
|
|
87
|
-
[MESSAGE_ID_CONSISTENT_READ_TRUE]: "ConsistentRead option should be set as true for {{readCommandType}} command.",
|
|
88
|
-
[MESSAGE_ID_CONSISTENT_READ_FALSE]: "ConsistentRead option should be set as
|
|
86
|
+
[MESSAGE_ID_CONSISTENT_READ_TRUE]: "ConsistentRead option should always be set as true for {{readCommandType}} command.",
|
|
87
|
+
[MESSAGE_ID_CONSISTENT_READ_FALSE]: "ConsistentRead option should not be set as true for {{readCommandType}} command when using a global secondary index."
|
|
89
88
|
},
|
|
90
89
|
schema: []
|
|
91
90
|
},
|
|
@@ -126,4 +125,4 @@ export {
|
|
|
126
125
|
getReadCommandInfo,
|
|
127
126
|
ruleId
|
|
128
127
|
};
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2F3cy9yZXF1aXJlLWNvbnNpc3RlbnQtcmVhZC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBNkI7QUFDdEQsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBQ2YsSUFBTSxrQ0FBa0M7QUFDeEMsSUFBTSxtQ0FBbUM7QUFRaEQsU0FBUyxnQkFBZ0IsVUFBaUQ7QUFDeEUsTUFBSSxTQUFTLFVBQVU7QUFDckIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLGNBQWMsU0FBUztBQUU3QixTQUFPLFlBQVksU0FBUyxlQUFlLGFBQ3ZDLFlBQVksT0FDWixPQUFPLFlBQVksVUFBVSxXQUMzQixZQUFZLFFBQ1o7QUFDUjtBQUVBLFNBQVMsd0JBQXdCLGtCQUFnRjtBQUMvRyxRQUFNLG1CQUFzRCxDQUFDO0FBQzdELGFBQVcsWUFBWSxpQkFBaUIsWUFBWTtBQUNsRCxRQUFJLFNBQVMsU0FBUyxlQUFlLFlBQVksU0FBUyxVQUFVO0FBQ2xFO0FBQUEsSUFDRjtBQUNBLFVBQU0sZUFBZSxnQkFBZ0IsUUFBUTtBQUM3QyxRQUFJLGlCQUFpQixRQUFXO0FBQzlCLHVCQUFpQixZQUFZLElBQUk7QUFBQSxJQUNuQztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLDJCQUEyQiwyQkFBdUU7QUFDekcsUUFBTSxzQkFBc0IsMEJBQTBCLGNBQWM7QUFDcEUsTUFBSSxxQkFBcUIsU0FBUyxlQUFlLFVBQVU7QUFDekQsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLG1CQUFtQixvQkFBb0I7QUFDN0MsTUFBSSxpQkFBaUIsU0FBUyxlQUFlLGtCQUFrQjtBQUM3RCxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8saUJBQWlCLFdBQVc7QUFBQSxJQUNqQyxDQUFDLGFBQ0MsU0FBUyxTQUFTLGVBQWUsWUFDakMsU0FBUyxNQUFNLFNBQVMsZUFBZSxvQkFDdkMsd0JBQXdCLFNBQVMsS0FBSyxFQUFFLE1BQU0sR0FB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
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.15.0-PR.136-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.15.0-PR.136-c0a3","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"^8.23.0","@typescript-eslint/utils":"^8.23.0","http-status-codes":"^2.3.0","ts-api-utils":"^2.0.1"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.1.0","@checkdigit/typescript-config":"^9.0.0","@eslint/js":"^9.19.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.23.0","@typescript-eslint/rule-tester":"^8.23.0","eslint":"^9.19.0","eslint-config-prettier":"^10.0.1","eslint-import-resolver-typescript":"^3.7.0","eslint-plugin-eslint-plugin":"^6.4.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^2.2.1","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","rimraf":"^6.0.1","typescript-eslint":"^8.23.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=22.14"}}
|
|
@@ -27,8 +27,7 @@ function getPropertyName(property: TSESTree.Property): string | undefined {
|
|
|
27
27
|
// eslint-disable-next-line no-nested-ternary
|
|
28
28
|
return propertyKey.type === AST_NODE_TYPES.Identifier
|
|
29
29
|
? propertyKey.name
|
|
30
|
-
:
|
|
31
|
-
propertyKey.type === AST_NODE_TYPES.Literal && typeof propertyKey.value === 'string'
|
|
30
|
+
: typeof propertyKey.value === 'string'
|
|
32
31
|
? propertyKey.value
|
|
33
32
|
: undefined;
|
|
34
33
|
}
|
|
@@ -81,7 +80,11 @@ export function getReadCommandInfo(objectExpression: TSESTree.ObjectExpression):
|
|
|
81
80
|
const hasTableName = 'TableName' in extractedProperties;
|
|
82
81
|
const hasKey = existsKeyProperty(extractedProperties);
|
|
83
82
|
if (hasTableName && hasKey) {
|
|
84
|
-
|
|
83
|
+
// make sure it is not an update or conditional write;
|
|
84
|
+
// we can't really tell if it's a delete, but we simply ignore that case assuming they'll never be used
|
|
85
|
+
if (!('UpdateExpression' in extractedProperties) && !('ConditionExpression' in extractedProperties)) {
|
|
86
|
+
readCommandInfo = { type: 'GetItem' };
|
|
87
|
+
}
|
|
85
88
|
} else {
|
|
86
89
|
const hasKeyCondExpr = extractedProperties['KeyConditionExpression']?.value.type === AST_NODE_TYPES.Literal;
|
|
87
90
|
const hasLegacyKeyConditions =
|
|
@@ -126,13 +129,13 @@ const rule: ESLintUtils.RuleModule<typeof MESSAGE_ID_CONSISTENT_READ_TRUE | type
|
|
|
126
129
|
type: 'problem',
|
|
127
130
|
docs: {
|
|
128
131
|
description:
|
|
129
|
-
'For AWS dynamodb commands Query/GetItem/BatchGetItem, ConsistentRead option should be set as true unless global index is used. This will make the service more robust at the ignorable cost of RCU.',
|
|
132
|
+
'For AWS dynamodb commands Query/GetItem/BatchGetItem, ConsistentRead option should always be set as true unless global index is used. This will make the service more robust at the ignorable cost of RCU.',
|
|
130
133
|
},
|
|
131
134
|
messages: {
|
|
132
135
|
[MESSAGE_ID_CONSISTENT_READ_TRUE]:
|
|
133
|
-
'ConsistentRead option should be set as true for {{readCommandType}} command.',
|
|
136
|
+
'ConsistentRead option should always be set as true for {{readCommandType}} command.',
|
|
134
137
|
[MESSAGE_ID_CONSISTENT_READ_FALSE]:
|
|
135
|
-
'ConsistentRead option should be set as
|
|
138
|
+
'ConsistentRead option should not be set as true for {{readCommandType}} command when using a global secondary index.',
|
|
136
139
|
},
|
|
137
140
|
schema: [],
|
|
138
141
|
},
|