UNPKG

@radixdlt/atom

Version:

Container for CRUD instructions known as 'Particles' that are sent to the Radix decentralized ledger

41 lines 2.14 kB
"use strict"; 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