biketrack-app/node_modules/@ethersphere/bee-js/dist/mjs/utils/reference.js

32 lines
1.3 KiB
JavaScript
Raw Normal View History

2022-07-11 10:27:11 +02:00
import { ENCRYPTED_REFERENCE_BYTES_LENGTH, ENCRYPTED_REFERENCE_HEX_LENGTH, REFERENCE_BYTES_LENGTH, REFERENCE_HEX_LENGTH } from "../types/index.js";
import { bytesAtOffset, hasBytesAtOffset } from "./bytes.js";
import { hexToBytes, makeHexString } from "./hex.js";
export function makeBytesReference(reference, offset = 0) {
if (typeof reference === 'string') {
if (offset) {
throw new Error('Offset property can be set only for UintArray reference!');
}
try {
// Non-encrypted chunk hex string reference
const hexReference = makeHexString(reference, REFERENCE_HEX_LENGTH);
return hexToBytes(hexReference);
} catch (e) {
if (!(e instanceof TypeError)) {
throw e;
} // Encrypted chunk hex string reference
const hexReference = makeHexString(reference, ENCRYPTED_REFERENCE_HEX_LENGTH);
return hexToBytes(hexReference);
}
} else if (reference instanceof Uint8Array) {
if (hasBytesAtOffset(reference, offset, ENCRYPTED_REFERENCE_BYTES_LENGTH)) {
return bytesAtOffset(reference, offset, ENCRYPTED_REFERENCE_BYTES_LENGTH);
} else if (hasBytesAtOffset(reference, offset, REFERENCE_BYTES_LENGTH)) {
return bytesAtOffset(reference, offset, REFERENCE_BYTES_LENGTH);
}
}
throw new TypeError('invalid chunk reference');
}