UNPKG

@ethersphere/bee-js

Version:
38 lines (37 loc) 1.65 kB
"use strict"; 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;