UNPKG

@lcap/cli

Version:

utils for lcap

54 lines 1.97 kB
"use strict"; 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