UNPKG

@mypaas/hcm-cli

Version:

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

180 lines (179 loc) 7.31 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; 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; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.putSymlink = exports.copyByPrefix = exports.copy = exports.deleteByPrefix = exports.deleteObjects = exports.list = exports.putMeta = exports.putMulti = exports.put = exports.getMultiByUris = exports.getMulti = exports.get = exports.traversalObject = void 0; const path_1 = __importStar(require("path")); const fs_extra_1 = require("fs-extra"); const traversal_dir_1 = require("./traversal-dir"); function noopTrue() { return true; } function waitMultiPromise(items) { return Promise.all(items); } function getDirReplacer(regExp, includeRoot = false) { return includeRoot ? (data) => data : (data) => data.replace(regExp, ''); } function traversalObject(client, prefix, callback, options) { const _a = options || {}, { 'max-keys': maxKeys = 100, marker = undefined } = _a, opts = __rest(_a, ['max-keys', "marker"]); return client .list(Object.assign({ 'max-keys': maxKeys, prefix, marker }, opts), {}) .then(({ objects = [], nextMarker = null }) => { const data = []; // eslint-disable-next-line no-restricted-syntax for (const object of objects) { const item = callback(object); if (item === false) { return data; } if (item) { data.push(item); } } if (nextMarker) { return traversalObject(client, prefix, callback, Object.assign(Object.assign({}, options), { marker: nextMarker, 'max-keys': maxKeys })).then((next) => { if (next.length) { return data.concat(next); } return next; }); } return data; }); } exports.traversalObject = traversalObject; function list(client, prefix, options) { const filter = options.filter || noopTrue; return traversalObject(client, prefix, (object) => { const { name } = object; if (!name.endsWith('/') && filter(name, object)) { return name; } return null; }, options); } exports.list = list; function copy(client, sourceUri, targetUri, options) { return client.copy(targetUri, sourceUri, Object.assign({}, options)).then(() => targetUri); } exports.copy = copy; function get(client, uri, file, options) { if (file) { return fs_extra_1.ensureDir(path_1.default.dirname(file)) .then(() => client.get(uri, file, Object.assign({}, options))) .then((data) => (options && options.origin ? data : file)); } return client.get(uri, file, Object.assign({}, options)); } exports.get = get; function getMulti(client, uri, dir, options) { const filter = options.filter || noopTrue; const { includeRoot = false } = options; const includeSelfRegExp = new RegExp(`^${uri}/`, 'i'); const replace = getDirReplacer(includeSelfRegExp, includeRoot); return traversalObject(client, uri, (object) => { const { name } = object; if (!name.endsWith('/') && filter(name, object)) { return get(client, name, path_1.join(dir, replace(name)), options); } return null; }).then(waitMultiPromise); } exports.getMulti = getMulti; function getMultiByUris(client, uris, dir, options) { return waitMultiPromise(uris.reduce((array, item) => { const type = typeof item; if (type === 'string') { array.push(get(client, item, path_1.join(dir, item), options)); } if (type === 'object') { array.push(get(client, item.uri, path_1.join(dir, item.file), options)); } return array; }, [])); } exports.getMultiByUris = getMultiByUris; function put(client, uri, file, options = {}) { return client.put(uri, file, Object.assign({}, options)).then((data) => (options.origin ? data : data.name)); } exports.put = put; function putMulti(client, uri, dir, options = {}) { const { includeRoot = false, filter } = options; const includeSelfRegExp = new RegExp(`^${dir}/`, 'i'); const filterFn = (filter || ((arg) => arg)); const replace = getDirReplacer(includeSelfRegExp, includeRoot); return traversal_dir_1.traversalDir(dir, (file) => { const value = filterFn(file); if (value) { const filepath = typeof value === 'string' ? value : file; const target = path_1.join(uri, replace(filepath)); return put(client, target, filepath, options); } return undefined; }, options); } exports.putMulti = putMulti; function putMeta(client, uri, meta, options) { return client.putMeta(uri, meta, Object.assign({}, options)); } exports.putMeta = putMeta; function deleteObjects(client, names, options) { if (names.length) { const opts = Object.assign(Object.assign({}, options), { quiet: true }); return client.deleteMulti(names, opts).then(() => names); } return Promise.resolve(names); } exports.deleteObjects = deleteObjects; function deleteByPrefix(client, prefix, options) { return list(client, prefix, options).then((names) => deleteObjects(client, names, options)); } exports.deleteByPrefix = deleteByPrefix; function copyByPrefix(client, sourcePrefix, targetPrefix, options) { const filter = options.filter || noopTrue; const sourceRegExp = new RegExp(`^${sourcePrefix}`, 'i'); return traversalObject(client, sourcePrefix, (object) => { const { name } = object; if (!name.endsWith('/') && filter(name, object)) { const newName = name.replace(sourceRegExp, targetPrefix); return copy(client, name, newName, options); } return null; }).then(waitMultiPromise); } exports.copyByPrefix = copyByPrefix; function putSymlink(client, symlinkUri, targetUri, options) { return client .putSymlink(symlinkUri, targetUri, options); } exports.putSymlink = putSymlink;