@lazy-ipfs/compatible-files
Version:
70 lines • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ipfsFilesCopy = exports._ipfsFilesCopy = void 0;
const _getExtraOptions_1 = require("./util/_getExtraOptions");
const path_1 = require("path");
const _promise_1 = require("./util/_promise");
const mkdir_1 = require("./mkdir");
const stat_1 = require("./stat");
const rm_1 = require("./rm");
const _dummy_1 = require("./util/_dummy");
const is_same_cid_1 = require("@lazy-ipfs/is-same-cid");
const lazy_aggregate_error_1 = require("lazy-aggregate-error");
const _promiseCatchAggregateError_1 = require("./util/_promiseCatchAggregateError");
/**
* @see https://github.com/ipfs/js-ipfs/issues/3747
*/
async function _ipfsFilesCopy(ipfs, from, to, options) {
if (options === null || options === void 0 ? void 0 : options.parents) {
const dir_path = path_1.posix.dirname(to);
if (dir_path.length && dir_path !== '/') {
await (0, _promise_1._promiseIgnoreError)((0, mkdir_1.ipfsFilesMakeDirectory)(ipfs, dir_path, options));
}
}
return ipfs.files.cp(from, to, options);
}
exports._ipfsFilesCopy = _ipfsFilesCopy;
async function ipfsFilesCopy(ipfs, from, to, options) {
var _a;
let extraOptions = (0, _getExtraOptions_1._getExtraOptions)(options);
if (extraOptions.validCheck) {
// @ts-ignore
if (typeof from !== 'string' && typeof from.length === 'number') {
throw new TypeError('Not support multiple cids when validCheck is enabled');
}
}
const err = new lazy_aggregate_error_1.AggregateErrorExtra();
if (extraOptions.overwrite) {
await (0, _promise_1._promiseIgnoreError)((0, rm_1.ipfsFilesRemove)(ipfs, to, {
timeout: options === null || options === void 0 ? void 0 : options.timeout,
}), null, err);
}
let p = _ipfsFilesCopy(ipfs, from, to, options);
if (extraOptions.validCheck) {
extraOptions = {
...extraOptions,
returnStat: true,
};
p = p.catch(e => {
err.push(e);
return (0, _dummy_1._dummyNull)();
});
}
if (options === null || options === void 0 ? void 0 : options.timeout) {
(_a = extraOptions.statOptions) !== null && _a !== void 0 ? _a : (extraOptions.statOptions = {});
extraOptions.statOptions.timeout = options.timeout;
}
p = (0, stat_1._returnStat02)(p, ipfs, to, extraOptions);
if (extraOptions.validCheck) {
p = p.then(file_stat => {
if (!file_stat || !(0, is_same_cid_1.isSameCID)(file_stat.cid, from)) {
return Promise.reject((0, is_same_cid_1.newAssertionSameCIDError)(file_stat === null || file_stat === void 0 ? void 0 : file_stat.cid, from));
}
return file_stat;
});
}
p = (0, _promiseCatchAggregateError_1._promiseCatchAggregateError)(p, err);
return p;
}
exports.ipfsFilesCopy = ipfsFilesCopy;
//# sourceMappingURL=cp.js.map