UNPKG

@mypaas/hcm-cli

Version:

Vant Cli 是一个 Vue 组件库构建工具,通过 Vant Cli 可以快速搭建一套功能完备的 Vue 组件库。

315 lines (314 loc) 10 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Oss = void 0; const path_1 = __importDefault(require("path")); const fs_extra_1 = require("fs-extra"); const utils_1 = require("./utils"); const ali_oss_1 = __importDefault(require("ali-oss")); class Oss { constructor(options) { this.client = new ali_oss_1.default(options); this.options = options; } /** * 遍历 object * @param prefix * @param callback * @param options * @return {Promise} */ traversal(prefix, callback, options) { if (!prefix) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('prefix is required'); } if (!callback) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('callback is required'); } return utils_1.traversalObject(this.client, prefix, callback, options); } /** * 判断是否存在 * @param uri * @param options * @return {Promise<boolean>} */ exists(uri, options) { return this.head(uri, options) .then((data) => data) // eslint-disable-next-line prefer-promise-reject-errors .catch((err) => Promise.reject(`文件不存在: ${JSON.stringify(err)}`)); // 请勿修改文案,会根据字符串判断 } /** * 获取 meta 信息 * @param uri * @param options * @return {Promise} */ getMeta(uri, options) { const defaultValue = {}; return this.head(uri, options) .then((data) => data.meta || defaultValue) .catch(() => defaultValue); } putMeta(uri, meta, options = {}) { return utils_1.putMeta(this.client, uri, meta, options); } /** * 获取 head 信息 * @param uri * @param options * @return {Promise} */ head(uri, options = {}) { return this.client.head(uri, options); } /** * 下载文件 * @param uri * @param file * @param options * @return {Promise} */ download(uri, file, options) { const { pathname: currentPathname, filename } = options, opts = __rest(options, ["pathname", "filename"]); if (!uri) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('uri is required'); } if (!file) { file = path_1.default.basename(uri); } const dir = currentPathname; file = path_1.default.resolve(dir, filename || file); return utils_1.get(this.client, uri, file, opts); } /** * 获取 String 资源到内存 * @param uri * @param options * @return {PromiseLike<string> | Promise<string>} */ getString(uri, options = {}) { return utils_1.get(this.client, uri, null, options).then((data) => data.content.toString()); } /** * 从内存写 String 数据到 OSS * @param uri * @param data * @param options * @return {*} */ putString(uri, data, options = {}) { return utils_1.put(this.client, uri, Buffer.from(data), options); } /** * 获取 JSON 资源到内存 * @param uri * @param options * @return {PromiseLike<Object|Array> | Promise<Object|Array>} */ getJSON(uri, options = {}) { return this.getString(uri, options).then((data) => { try { return JSON.parse(data); } catch (e) { return {}; } }); } /** * 从内存写 JSON 数据到 OSS * @param uri * @param data * @param options * @return {*} */ putJSON(uri, data, options = {}) { data = typeof data === 'string' ? data : JSON.stringify(data, null, options.spaces || 4); return this.putString(uri, data, options); } /** * 下载整个目录到指定目录 * @param uri * @param dir * @param options * @return {Promise} */ downloadDir(uri, dir, options = {}) { if (!uri) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('uri is required'); } if (!dir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('dir is required'); } return fs_extra_1.ensureDir(dir).then(() => utils_1.getMulti(this.client, uri, dir, options)); } /** * 下载给定 uris 数组的所有文件 * @param uris * @param dir * @param options * @return {Promise} */ downloadFiles(uris, dir, options = {}) { if (!uris || uris.length) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('a non-empty uris is required'); } if (!dir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('dir is required'); } return fs_extra_1.ensureDir(dir).then(() => utils_1.getMultiByUris(this.client, uris, dir, options)); } /** * 上传文件 * @param uri * @param file * @param options * @return {*} */ upload(uri, file, options = {}) { if (!uri) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('uri is required'); } if (!file) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('file is required'); } return utils_1.put(this.client, uri, file, options); } /** * 上传整个目录 * @param uri * @param dir * @param options * @return {*} */ uploadDir(uri, dir, options = {}) { if (!uri) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('uri is required'); } if (!dir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('dir is required'); } return utils_1.putMulti(this.client, uri, dir, options); } /** * 列出指定前缀的 objects * @param dir * @param options * @return {*} */ list(dir, options = {}) { if (!dir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('dir is required'); } return utils_1.list(this.client, dir, options); } /** * 删除指定前缀的 objects * @param dir * @param options * @return {*} */ deleteDir(dir, options = {}) { if (!dir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('dir is required'); } return utils_1.deleteByPrefix(this.client, dir, options); } /** * 删除指定的 object * @param file * @param options * @return {Promise} */ delete(file, options = {}) { if (!file) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('file is required'); } return utils_1.deleteObjects(this.client, [file], options).then((names) => names); } /** * 删除指定的 objects * @param files * @param options * @return {*} */ deleteFiles(files, options = {}) { return utils_1.deleteObjects(this.client, files, options); } copy(sourceFile, targetFile, options = {}) { if (!sourceFile) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('sourceFile is required'); } if (!targetFile) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('targetFile is required'); } return utils_1.copy(this.client, sourceFile, targetFile, options); } /** * 根据指定 sourceDir、targetDir 进行拷贝 * @param sourceDir * @param targetDir * @param options * @return {*} */ copyDir(sourceDir, targetDir, options = {}) { if (!sourceDir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('sourceDir is required'); } if (!targetDir) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('targetDir is required'); } return utils_1.copyByPrefix(this.client, path_1.default.join(sourceDir, '/'), path_1.default.join(targetDir, '/'), options); } /** * 创建软链接 * @param symlinkUri * @param targetUri * @param options */ putSymlink(symlinkUri, targetUri, options = {}) { if (!symlinkUri) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('symlinkUri is required'); } if (!targetUri) { // eslint-disable-next-line prefer-promise-reject-errors return Promise.reject('targetUri is required'); } return utils_1.putSymlink(this.client, symlinkUri, targetUri, options); } } exports.Oss = Oss;