@ethersphere/bee-js
Version:
Javascript client for Bee
38 lines (37 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertCidToReference = exports.convertReferenceToCid = exports.SWARM_FEED_CODEC = exports.SWARM_MANIFEST_CODEC = void 0;
const cafe_utility_1 = require("cafe-utility");
const typed_bytes_1 = require("./typed-bytes");
exports.SWARM_MANIFEST_CODEC = 0xfa;
exports.SWARM_FEED_CODEC = 0xfb;
const CODEC_TABLE = {
[exports.SWARM_MANIFEST_CODEC]: 'manifest',
[exports.SWARM_FEED_CODEC]: 'feed',
};
function convertReferenceToCid(reference, type) {
reference = new typed_bytes_1.Reference(reference);
const base32 = 'b';
const version = new Uint8Array([1]);
const codec = new Uint8Array([type === 'feed' ? exports.SWARM_FEED_CODEC : exports.SWARM_MANIFEST_CODEC]);
const unknown = new Uint8Array([1]);
const sha256 = new Uint8Array([27]);
const size = new Uint8Array([32]);
const header = cafe_utility_1.Binary.uint8ArrayToBase32(cafe_utility_1.Binary.concatBytes(version, codec, unknown, sha256, size)).replace(/\=+$/, '');
const hash = reference.toBase32().replace(/\=+$/, '');
return `${base32}${header}${hash}`.toLowerCase();
}
exports.convertReferenceToCid = convertReferenceToCid;
function convertCidToReference(cid) {
const bytes = cafe_utility_1.Binary.base32ToUint8Array(cid.toUpperCase().slice(1));
const codec = bytes[1];
if (!CODEC_TABLE[codec]) {
throw new Error('Unknown codec');
}
const reference = new typed_bytes_1.Reference(bytes.slice(-32));
return {
type: CODEC_TABLE[codec],
reference,
};
}
exports.convertCidToReference = convertCidToReference;