@pando/git-remote-pando
Version:
git-remote-helper for pando
103 lines (102 loc) • 3.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const cids_1 = __importDefault(require("cids"));
const ipfs_http_client_1 = __importDefault(require("ipfs-http-client"));
const ipld_1 = __importDefault(require("ipld"));
const ipld_git_1 = __importDefault(require("ipld-git"));
// tslint:disable-next-line:no-submodule-imports
const util_1 = require("ipld-git/src/util/util");
const url_parse_1 = __importDefault(require("url-parse"));
class IPLDHelper {
// OK
constructor(helper) {
const url = new url_parse_1.default(helper.config.ipfs.gateway);
this.helper = helper;
this._ipfs = ipfs_http_client_1.default({ host: url.hostname, port: url.port, protocol: url.protocol.slice(0, url.protocol.length - 1) });
this._ipld = new ipld_1.default({
blockService: this._ipfs.block,
formats: [ipld_git_1.default],
});
}
// OK
async deserialize(buffer) {
return new Promise((resolve, reject) => {
ipld_git_1.default.util.deserialize(buffer, (err, node) => {
if (err) {
reject(err);
}
else {
resolve(node);
}
});
});
}
// OK
async serialize(node) {
return new Promise((resolve, reject) => {
ipld_git_1.default.util.serialize(node, async (err, buffer) => {
if (err) {
reject(err);
}
else {
resolve(buffer);
}
});
});
}
// OK
async put(object) {
return new Promise((resolve, reject) => {
this._ipld.put(object, { format: 'git-raw' }, (err, cid) => {
if (err) {
reject(err);
}
else {
resolve(cid);
}
});
});
}
// OK
async get(cid) {
return new Promise((resolve, reject) => {
this._ipld.get(new cids_1.default(cid), (err, result) => {
if (err) {
reject(err);
}
else {
resolve(result.value);
}
});
});
}
// OK
async pin(cid) {
return this._ipfs.pin.add(cid);
}
// OK
async cid(object) {
return new Promise((resolve, reject) => {
this._ipld.put(object, { format: 'git-raw', onlyHash: true }, (err, cid) => {
if (err) {
reject(err);
}
else {
resolve(cid.toBaseEncodedString());
}
});
});
}
// OK
shaToCid(oid) {
return new cids_1.default(util_1.shaToCid(Buffer.from(oid, 'hex'))).toBaseEncodedString();
}
// OK
cidToSha(cid) {
return util_1.cidToSha(new cids_1.default(cid)).toString('hex');
}
}
exports.default = IPLDHelper;