@lcap/cli
Version:
utils for lcap
54 lines • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LcapClient = void 0;
const mime_1 = require("mime");
const minio_1 = require("minio");
const utils_1 = require("../../utils");
class LcapClient {
constructor({ bucketName, ...restOpt }) {
this.client = new minio_1.Client(restOpt);
this.bucketName = bucketName;
}
listFiles(basePath) {
const files = [];
return new Promise((resolve, reject) => {
this.client
.listObjectsV2(this.bucketName, basePath, true)
.on('data', (item) => item.name && files.push(item.name))
.on('end', () => resolve(files))
.on('error', (err) => reject(err));
});
}
readFile(fileName) {
return new Promise((resolve, reject) => {
this.client.getObject(this.bucketName, fileName, (error, read) => {
if (error) {
reject(error);
return;
}
let buf = new Uint8Array([]);
read
.on('data', (chunk) => buf = (0, utils_1.mergeUint8Array)(buf, chunk))
.on('end', () => resolve(Buffer.from(buf)))
.on('error', (err) => reject(err));
});
});
}
async putFiles(files, metaData, progress) {
// 这里需要等待日志打印
await (0, utils_1.delay)(100);
for (let i = 0; i < files.length; i++) {
const { from, to, content } = files[i];
progress?.(from, i + 1);
await this.client.putObject(this.bucketName, to, content, {
'Content-Type': (0, mime_1.getType)(from),
...metaData,
});
}
}
deleteFiles(...fileNames) {
return this.client.removeObjects(this.bucketName, fileNames);
}
}
exports.LcapClient = LcapClient;
//# sourceMappingURL=client.js.map