ag-common 0.0.94 → 0.0.95
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/api/helpers/enforceDynamoProvisionCap.d.ts +11 -0
- package/dist/api/helpers/enforceDynamoProvisionCap.js +30 -0
- package/dist/api/helpers/index.d.ts +1 -0
- package/dist/api/helpers/index.js +1 -0
- package/dist/common/helpers/string.d.ts +7 -0
- package/dist/common/helpers/string.js +20 -1
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enforceDynamoProvisionCap = void 0;
|
|
4
|
+
const log_1 = require("../../common/helpers/log");
|
|
5
|
+
const math_1 = require("../../common/helpers/math");
|
|
6
|
+
const string_1 = require("../../common/helpers/string");
|
|
7
|
+
const extractSum = ({ str, regex }) => {
|
|
8
|
+
var _a;
|
|
9
|
+
return (0, math_1.sumArray)(((_a = str
|
|
10
|
+
.match(regex)) === null || _a === void 0 ? void 0 : _a.map((s2) => (0, string_1.trim)(s2.substring(s2.indexOf(':') + 1), ':', ',', ' ')).filter((r) => r && Number(r)).map((r) => Number(r))) || []);
|
|
11
|
+
};
|
|
12
|
+
const enforceDynamoProvisionCap = ({ tables, readsMax = 25, writesMax = 25, }) => {
|
|
13
|
+
if (!tables || tables.length === 0) {
|
|
14
|
+
(0, log_1.warn)('error in dynamo FT enforce');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
const t = tables[0];
|
|
19
|
+
const s = (0, string_1.safeStringify)(t.node._children.Resource.node.scope);
|
|
20
|
+
const reads = extractSum({ str: s, regex: /readCapacityUnits.*/gim });
|
|
21
|
+
const writes = extractSum({ str: s, regex: /writeCapacityUnits.*/gim });
|
|
22
|
+
if (reads > readsMax) {
|
|
23
|
+
throw new Error(`dynamo table provisioned reads:${reads} greater than max:${readsMax}`);
|
|
24
|
+
}
|
|
25
|
+
if (writes > writesMax) {
|
|
26
|
+
throw new Error(`dynamo table provisioned writes:${writes} greater than max:${writesMax}`);
|
|
27
|
+
}
|
|
28
|
+
(0, log_1.warn)(`dynamo provisioned total: R=${reads} W=${writes}`);
|
|
29
|
+
};
|
|
30
|
+
exports.enforceDynamoProvisionCap = enforceDynamoProvisionCap;
|
|
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
__exportStar(require("./api"), exports);
|
|
14
14
|
__exportStar(require("./aws"), exports);
|
|
15
15
|
__exportStar(require("./dynamo"), exports);
|
|
16
|
+
__exportStar(require("./enforceDynamoProvisionCap"), exports);
|
|
16
17
|
__exportStar(require("./dynamoInfra"), exports);
|
|
17
18
|
__exportStar(require("./openApiHelpers"), exports);
|
|
18
19
|
__exportStar(require("./s3"), exports);
|
|
@@ -24,3 +24,10 @@ export declare function toTitleCase(str: string): string;
|
|
|
24
24
|
*/
|
|
25
25
|
export declare function replaceRemove(str: string, ...params: string[]): string;
|
|
26
26
|
export declare function containsInsensitive(str: string, ...args: string[]): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* safely handles circular references
|
|
29
|
+
* @param obj
|
|
30
|
+
* @param indent
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export declare const safeStringify: (obj: any, indent?: number) => string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.containsInsensitive = exports.replaceRemove = exports.toTitleCase = exports.niceUrl = exports.truncate = exports.trim = exports.trimSide = exports.csvJSON = void 0;
|
|
3
|
+
exports.safeStringify = exports.containsInsensitive = exports.replaceRemove = exports.toTitleCase = exports.niceUrl = exports.truncate = exports.trim = exports.trimSide = exports.csvJSON = void 0;
|
|
4
4
|
const csvJSON = (csv) => {
|
|
5
5
|
const lines = csv.split('\n');
|
|
6
6
|
const result = [];
|
|
@@ -117,3 +117,22 @@ function containsInsensitive(str, ...args) {
|
|
|
117
117
|
return !!args.find((a) => l.includes(a));
|
|
118
118
|
}
|
|
119
119
|
exports.containsInsensitive = containsInsensitive;
|
|
120
|
+
/**
|
|
121
|
+
* safely handles circular references
|
|
122
|
+
* @param obj
|
|
123
|
+
* @param indent
|
|
124
|
+
* @returns
|
|
125
|
+
*/
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
+
const safeStringify = (obj, indent = 2) => {
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
129
|
+
let cache = [];
|
|
130
|
+
const retVal = JSON.stringify(obj, (_key, value) => typeof value === 'object' && value !== null
|
|
131
|
+
? cache.includes(value)
|
|
132
|
+
? undefined // Duplicate reference found, discard key
|
|
133
|
+
: cache.push(value) && value // Store value in our collection
|
|
134
|
+
: value, indent);
|
|
135
|
+
cache = null;
|
|
136
|
+
return retVal;
|
|
137
|
+
};
|
|
138
|
+
exports.safeStringify = safeStringify;
|