@radixdlt/atom
Version:
Container for CRUD instructions known as 'Particles' that are sent to the Radix decentralized ledger
41 lines • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResourceIdentifierParticle = exports.isResourceIdentifierParticle = void 0;
const _types_1 = require("../_types");
const primitives_1 = require("@radixdlt/primitives");
const radixParticleTypes_1 = require("./meta/radixParticleTypes");
const data_formats_1 = require("@radixdlt/data-formats");
const neverthrow_1 = require("neverthrow");
const resourceIdentifier_1 = require("../resourceIdentifier");
const utils_1 = require("../utils");
const radixParticleType = radixParticleTypes_1.RadixParticleType.RESOURCE_IDENTIFIER;
const SERIALIZER = 'radix.particles.rri';
const JSONDecoder = data_formats_1.taggedObjectDecoder(SERIALIZER, _types_1.SERIALIZER_KEY)((input) => neverthrow_1.ok(create(input)));
const jsonDecoding = utils_1.JSONDecoding.withDependencies(resourceIdentifier_1.ResourceIdentifier)
.withDecoders(JSONDecoder)
.create();
const create = (resourceIdentifier) => {
const alwaysZeroNonce = primitives_1.nonce(0);
const serializeKeyValues = {
nonce: alwaysZeroNonce,
rri: resourceIdentifier,
};
return Object.assign(Object.assign(Object.assign({}, data_formats_1.JSONEncoding(SERIALIZER)(serializeKeyValues)), data_formats_1.DSONEncoding(SERIALIZER)(serializeKeyValues)), { radixParticleType,
alwaysZeroNonce,
resourceIdentifier, equals: (otherParticle) => {
if (!exports.isResourceIdentifierParticle(otherParticle))
return false;
const otherRIP = otherParticle;
return (otherRIP.alwaysZeroNonce.equals(alwaysZeroNonce) &&
otherRIP.resourceIdentifier.equals(resourceIdentifier));
} });
};
const isResourceIdentifierParticle = (something) => {
if (!radixParticleTypes_1.isRadixParticle(something))
return false;
return something.radixParticleType === radixParticleType;
};
exports.isResourceIdentifierParticle = isResourceIdentifierParticle;
exports.ResourceIdentifierParticle = Object.assign({ create,
SERIALIZER }, jsonDecoding);
//# sourceMappingURL=resourceIdentifierParticle.js.map