ag-common 0.0.345 → 0.0.347
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/dynamo.js +13 -7
- package/dist/api/helpers/s3.d.ts +21 -1
- package/dist/api/helpers/s3.js +85 -5
- package/package.json +1 -1
|
@@ -80,7 +80,7 @@ let batchWriteRaw = (req) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
80
80
|
const batchWrite = (tableName, itemsIn, breakOnError = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
81
|
var _a, _b;
|
|
82
82
|
let items = JSON.parse(JSON.stringify(itemsIn));
|
|
83
|
-
(0, log_1.
|
|
83
|
+
(0, log_1.debug)(`push to dynamo:${tableName} - count=${itemsIn.length}`);
|
|
84
84
|
const error = [];
|
|
85
85
|
while (items.length > 0) {
|
|
86
86
|
const { part, rest } = (0, array_1.take)(items, 25);
|
|
@@ -320,15 +320,21 @@ const wipeTable = (tableName) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
320
320
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
321
321
|
// @ts-ignore
|
|
322
322
|
let keyHash = infoV.Table.KeySchema.find((k) => k.KeyType === 'HASH').AttributeName;
|
|
323
|
-
|
|
324
|
-
.scan({
|
|
323
|
+
const params = {
|
|
325
324
|
TableName: tableName,
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
325
|
+
ExclusiveStartKey: undefined,
|
|
326
|
+
};
|
|
327
|
+
let all = [];
|
|
328
|
+
let working;
|
|
329
|
+
do {
|
|
330
|
+
working = yield dbRaw.scan(params).promise();
|
|
331
|
+
(_h = working.Items) === null || _h === void 0 ? void 0 : _h.forEach((item) => all.push(item));
|
|
332
|
+
params.ExclusiveStartKey = working.LastEvaluatedKey;
|
|
333
|
+
} while (typeof working.LastEvaluatedKey !== 'undefined');
|
|
334
|
+
(0, log_1.warn)(`will delete ${all === null || all === void 0 ? void 0 : all.length} items from ${tableName}`);
|
|
329
335
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
330
336
|
// @ts-ignore
|
|
331
|
-
const datagr = (0, array_1.chunk)(all
|
|
337
|
+
const datagr = (0, array_1.chunk)(all, 25);
|
|
332
338
|
let res = yield Promise.all(datagr.map((group) => dbRaw
|
|
333
339
|
.batchWriteItem({
|
|
334
340
|
RequestItems: {
|
package/dist/api/helpers/s3.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Blob } from 'aws-sdk/lib/dynamodb/document_client';
|
|
3
3
|
import S3 from 'aws-sdk/clients/s3';
|
|
4
|
+
import { PromiseResult } from 'aws-sdk/lib/request';
|
|
5
|
+
import { AWSError } from 'aws-sdk/lib/core';
|
|
6
|
+
import { error } from '../../common/helpers/log';
|
|
4
7
|
export declare const setS3: (region: string) => void;
|
|
5
8
|
export declare const getS3Object: ({ fileurl, }: {
|
|
6
9
|
fileurl: {
|
|
7
10
|
Bucket: string;
|
|
8
11
|
Key: string;
|
|
9
12
|
};
|
|
10
|
-
}) => Promise<
|
|
13
|
+
}) => Promise<PromiseResult<S3.GetObjectOutput, AWSError>>;
|
|
14
|
+
export interface IS3Object {
|
|
15
|
+
bucket: string;
|
|
16
|
+
key: string;
|
|
17
|
+
content: S3.Body | undefined;
|
|
18
|
+
}
|
|
19
|
+
/** function generator to get s3 files */
|
|
20
|
+
export declare function getS3Objects({ bucket, keys, }: {
|
|
21
|
+
bucket: string;
|
|
22
|
+
keys: string[];
|
|
23
|
+
}): AsyncGenerator<IS3Object, void, unknown>;
|
|
11
24
|
export declare const putS3Object: ({ Body, Bucket, Key, ContentType, }: {
|
|
12
25
|
ContentType?: string | undefined;
|
|
13
26
|
Body: string | Blob;
|
|
@@ -27,3 +40,10 @@ export declare const deleteFile: ({ Bucket, Key, }: {
|
|
|
27
40
|
}) => Promise<{
|
|
28
41
|
error?: string;
|
|
29
42
|
}>;
|
|
43
|
+
export declare const deleteFiles: ({ Bucket, Keys, }: {
|
|
44
|
+
Bucket: string;
|
|
45
|
+
Keys: string[];
|
|
46
|
+
}) => Promise<{
|
|
47
|
+
error?: string;
|
|
48
|
+
}>;
|
|
49
|
+
export declare function listFiles(bucketName: string): Promise<string[]>;
|
package/dist/api/helpers/s3.js
CHANGED
|
@@ -8,22 +8,55 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
12
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
13
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
15
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
16
|
+
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
17
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
18
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
19
|
+
function fulfill(value) { resume("next", value); }
|
|
20
|
+
function reject(value) { resume("throw", value); }
|
|
21
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
22
|
+
};
|
|
11
23
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
24
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
25
|
};
|
|
14
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.deleteFile = exports.uploadFile = exports.putS3Object = exports.getS3Object = exports.setS3 = void 0;
|
|
27
|
+
exports.listFiles = exports.deleteFiles = exports.deleteFile = exports.uploadFile = exports.putS3Object = exports.getS3Objects = exports.getS3Object = exports.setS3 = void 0;
|
|
16
28
|
const s3_1 = __importDefault(require("aws-sdk/clients/s3"));
|
|
29
|
+
const log_1 = require("../../common/helpers/log");
|
|
30
|
+
const array_1 = require("../../common/helpers/array");
|
|
17
31
|
let s3 = new s3_1.default();
|
|
18
32
|
const setS3 = (region) => {
|
|
19
33
|
s3 = new s3_1.default({ region });
|
|
20
34
|
};
|
|
21
35
|
exports.setS3 = setS3;
|
|
22
|
-
const getS3Object = ({ fileurl, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
-
const content = yield s3.getObject(fileurl).promise();
|
|
24
|
-
return content;
|
|
25
|
-
});
|
|
36
|
+
const getS3Object = ({ fileurl, }) => __awaiter(void 0, void 0, void 0, function* () { return s3.getObject(fileurl).promise(); });
|
|
26
37
|
exports.getS3Object = getS3Object;
|
|
38
|
+
/** function generator to get s3 files */
|
|
39
|
+
function getS3Objects({ bucket, keys, }) {
|
|
40
|
+
return __asyncGenerator(this, arguments, function* getS3Objects_1() {
|
|
41
|
+
let toProcess = keys.map((Key) => ({
|
|
42
|
+
Bucket: bucket,
|
|
43
|
+
Key,
|
|
44
|
+
}));
|
|
45
|
+
while (toProcess.length > 0) {
|
|
46
|
+
const { part, rest } = (0, array_1.take)(toProcess, 1);
|
|
47
|
+
toProcess = rest;
|
|
48
|
+
const fileurl = part[0];
|
|
49
|
+
const content = yield __await((0, exports.getS3Object)({ fileurl }));
|
|
50
|
+
const ret1 = {
|
|
51
|
+
bucket: fileurl.Bucket,
|
|
52
|
+
key: fileurl.Key,
|
|
53
|
+
content: content.Body,
|
|
54
|
+
};
|
|
55
|
+
yield yield __await(ret1);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
exports.getS3Objects = getS3Objects;
|
|
27
60
|
const putS3Object = ({ Body, Bucket, Key, ContentType, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
61
|
const r = yield s3
|
|
29
62
|
.putObject({
|
|
@@ -52,3 +85,50 @@ const deleteFile = ({ Bucket, Key, }) => __awaiter(void 0, void 0, void 0, funct
|
|
|
52
85
|
return {};
|
|
53
86
|
});
|
|
54
87
|
exports.deleteFile = deleteFile;
|
|
88
|
+
const deleteFiles = ({ Bucket, Keys, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
+
let toDelete = Keys.map((Key) => ({ Key }));
|
|
90
|
+
while (toDelete.length > 0) {
|
|
91
|
+
const { part, rest } = (0, array_1.take)(toDelete, 900);
|
|
92
|
+
toDelete = rest;
|
|
93
|
+
const res = yield s3
|
|
94
|
+
.deleteObjects({
|
|
95
|
+
Bucket,
|
|
96
|
+
Delete: { Objects: part },
|
|
97
|
+
})
|
|
98
|
+
.promise();
|
|
99
|
+
if (res.$response.error) {
|
|
100
|
+
return { error: res.$response.error.message };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return {};
|
|
104
|
+
});
|
|
105
|
+
exports.deleteFiles = deleteFiles;
|
|
106
|
+
function listFiles(bucketName) {
|
|
107
|
+
var _a, _b;
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
try {
|
|
110
|
+
const ret = [];
|
|
111
|
+
let response = {
|
|
112
|
+
IsTruncated: true,
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
114
|
+
};
|
|
115
|
+
while (response.IsTruncated) {
|
|
116
|
+
response = yield s3
|
|
117
|
+
.listObjectsV2({
|
|
118
|
+
Bucket: bucketName,
|
|
119
|
+
ContinuationToken: response.NextContinuationToken,
|
|
120
|
+
})
|
|
121
|
+
.promise();
|
|
122
|
+
(_b = (_a = response.Contents) === null || _a === void 0 ? void 0 : _a.filter((r) => r.Key)) === null || _b === void 0 ? void 0 : _b.map((c) => {
|
|
123
|
+
ret.push(c.Key);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return (0, array_1.distinct)(ret.filter((r) => r));
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
(0, log_1.error)('Error', err);
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
exports.listFiles = listFiles;
|