@checkdigit/eslint-plugin 7.16.0-PR.136-c0c4 → 7.16.0-PR.136-d0cb
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.
|
@@ -45,13 +45,13 @@ function getReadCommandInfo(objectExpression) {
|
|
|
45
45
|
const extractedProperties = extractObjectProperties(objectExpression);
|
|
46
46
|
let readCommandInfo;
|
|
47
47
|
if (existsRequestItemsProperty(extractedProperties)) {
|
|
48
|
-
readCommandInfo = { type: "
|
|
48
|
+
readCommandInfo = { type: "BatchGet" };
|
|
49
49
|
} else {
|
|
50
50
|
const hasTableName = "TableName" in extractedProperties;
|
|
51
51
|
const hasKey = existsKeyProperty(extractedProperties);
|
|
52
52
|
if (hasTableName && hasKey) {
|
|
53
53
|
if (!("UpdateExpression" in extractedProperties) && !("ConditionExpression" in extractedProperties)) {
|
|
54
|
-
readCommandInfo = { type: "
|
|
54
|
+
readCommandInfo = { type: "Get" };
|
|
55
55
|
}
|
|
56
56
|
} else {
|
|
57
57
|
const hasKeyCondExpr = extractedProperties["KeyConditionExpression"]?.value.type === AST_NODE_TYPES.Literal;
|
|
@@ -80,7 +80,7 @@ var rule = createRule({
|
|
|
80
80
|
meta: {
|
|
81
81
|
type: "problem",
|
|
82
82
|
docs: {
|
|
83
|
-
description: "For AWS dynamodb commands Query/
|
|
83
|
+
description: "For AWS dynamodb commands Query/Get/BatchGet, 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."
|
|
84
84
|
},
|
|
85
85
|
messages: {
|
|
86
86
|
[MESSAGE_ID_CONSISTENT_READ_TRUE]: "ConsistentRead option should always be set as true for {{readCommandType}} command.",
|
|
@@ -125,4 +125,4 @@ export {
|
|
|
125
125
|
getReadCommandInfo,
|
|
126
126
|
ruleId
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2F3cy9yZXF1aXJlLWNvbnNpc3RlbnQtcmVhZC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBNkI7QUFDdEQsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBQ2YsSUFBTSxrQ0FBa0M7QUFDeEMsSUFBTSxtQ0FBbUM7QUFRaEQsU0FBUyxnQkFBZ0IsVUFBaUQ7QUFDeEUsTUFBSSxTQUFTLFVBQVU7QUFDckIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLGNBQWMsU0FBUztBQUU3QixTQUFPLFlBQVksU0FBUyxlQUFlLGFBQ3ZDLFlBQVksT0FDWixPQUFPLFlBQVksVUFBVSxXQUMzQixZQUFZLFFBQ1o7QUFDUjtBQUVBLFNBQVMsd0JBQXdCLGtCQUFnRjtBQUMvRyxRQUFNLG1CQUFzRCxDQUFDO0FBQzdELGFBQVcsWUFBWSxpQkFBaUIsWUFBWTtBQUNsRCxRQUFJLFNBQVMsU0FBUyxlQUFlLFlBQVksU0FBUyxVQUFVO0FBQ2xFO0FBQUEsSUFDRjtBQUNBLFVBQU0sZUFBZSxnQkFBZ0IsUUFBUTtBQUM3QyxRQUFJLGlCQUFpQixRQUFXO0FBQzlCLHVCQUFpQixZQUFZLElBQUk7QUFBQSxJQUNuQztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLDJCQUEyQiwyQkFBdUU7QUFDekcsUUFBTSxzQkFBc0IsMEJBQTBCLGNBQWM7QUFDcEUsTUFBSSxxQkFBcUIsU0FBUyxlQUFlLFVBQVU7QUFDekQsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLG1CQUFtQixvQkFBb0I7QUFDN0MsTUFBSSxpQkFBaUIsU0FBUyxlQUFlLGtCQUFrQjtBQUM3RCxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8saUJBQWlCLFdBQVc7QUFBQSxJQUNqQyxDQUFDLGFBQ0MsU0FBUyxTQUFTLGVBQWUsWUFDakMsU0FBUyxNQUFNLFNBQVMsZUFBZSxvQkFDdkMsd0JBQXdCLFNBQVMsS0FBSyxFQUFFLE1BQU0sR0FB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
|
|
@@ -3,7 +3,7 @@ export declare const ruleId = "require-consistent-read";
|
|
|
3
3
|
export declare const MESSAGE_ID_CONSISTENT_READ_TRUE = "MESSAGE_ID_CONSISTENT_READ_TRUE";
|
|
4
4
|
export declare const MESSAGE_ID_CONSISTENT_READ_FALSE = "MESSAGE_ID_CONSISTENT_READ_FALSE";
|
|
5
5
|
interface ReadCommandInfo {
|
|
6
|
-
type: '
|
|
6
|
+
type: 'Get' | 'Query' | 'BatchGet';
|
|
7
7
|
consistentRead?: boolean;
|
|
8
8
|
usedIndex?: boolean;
|
|
9
9
|
}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.16.0-PR.136-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.16.0-PR.136-d0cb","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.46.0","@typescript-eslint/utils":"^8.46.0","http-status-codes":"^2.3.0","ts-api-utils":"^2.1.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.1.0","@checkdigit/typescript-config":"^9.3.2","@eslint/js":"^9.37.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.46.0","@typescript-eslint/rule-tester":"^8.46.0","eslint":"^9.37.0","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-eslint-plugin":"^6.4.0","eslint-plugin-import":"^2.32.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.46.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=22.18"}}
|
|
@@ -14,7 +14,7 @@ export const MESSAGE_ID_CONSISTENT_READ_TRUE = 'MESSAGE_ID_CONSISTENT_READ_TRUE'
|
|
|
14
14
|
export const MESSAGE_ID_CONSISTENT_READ_FALSE = 'MESSAGE_ID_CONSISTENT_READ_FALSE';
|
|
15
15
|
|
|
16
16
|
interface ReadCommandInfo {
|
|
17
|
-
type: '
|
|
17
|
+
type: 'Get' | 'Query' | 'BatchGet';
|
|
18
18
|
consistentRead?: boolean;
|
|
19
19
|
usedIndex?: boolean;
|
|
20
20
|
}
|
|
@@ -75,7 +75,7 @@ export function getReadCommandInfo(objectExpression: TSESTree.ObjectExpression):
|
|
|
75
75
|
let readCommandInfo: ReadCommandInfo | undefined;
|
|
76
76
|
|
|
77
77
|
if (existsRequestItemsProperty(extractedProperties)) {
|
|
78
|
-
readCommandInfo = { type: '
|
|
78
|
+
readCommandInfo = { type: 'BatchGet' };
|
|
79
79
|
} else {
|
|
80
80
|
const hasTableName = 'TableName' in extractedProperties;
|
|
81
81
|
const hasKey = existsKeyProperty(extractedProperties);
|
|
@@ -83,7 +83,7 @@ export function getReadCommandInfo(objectExpression: TSESTree.ObjectExpression):
|
|
|
83
83
|
// make sure it is not an update or conditional write;
|
|
84
84
|
// we can't really tell if it's a delete, but we simply ignore that case assuming they'll never be used
|
|
85
85
|
if (!('UpdateExpression' in extractedProperties) && !('ConditionExpression' in extractedProperties)) {
|
|
86
|
-
readCommandInfo = { type: '
|
|
86
|
+
readCommandInfo = { type: 'Get' };
|
|
87
87
|
}
|
|
88
88
|
} else {
|
|
89
89
|
const hasKeyCondExpr = extractedProperties['KeyConditionExpression']?.value.type === AST_NODE_TYPES.Literal;
|
|
@@ -129,7 +129,7 @@ const rule: ESLintUtils.RuleModule<typeof MESSAGE_ID_CONSISTENT_READ_TRUE | type
|
|
|
129
129
|
type: 'problem',
|
|
130
130
|
docs: {
|
|
131
131
|
description:
|
|
132
|
-
'For AWS dynamodb commands Query/
|
|
132
|
+
'For AWS dynamodb commands Query/Get/BatchGet, 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.',
|
|
133
133
|
},
|
|
134
134
|
messages: {
|
|
135
135
|
[MESSAGE_ID_CONSISTENT_READ_TRUE]:
|