Skip to content

Commit

Permalink
feat(core): add metadatum parsing utils
Browse files Browse the repository at this point in the history
Cardano.util.asMetadatumMap and Cardano.util.asMetadatumArray
  • Loading branch information
mkazlauskas committed Jan 18, 2022
1 parent 51bcfb6 commit 51a57ab
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 1 deletion.
3 changes: 3 additions & 0 deletions packages/core/src/Cardano/types/Asset.ts
Expand Up @@ -107,6 +107,9 @@ export interface Asset {
name: string;
fingerprint: AssetFingerprint;
quantity: bigint;
/**
* Sorted by slot
*/
history: AssetMintOrBurn[];
metadata?: AssetMetadata;
}
2 changes: 1 addition & 1 deletion packages/core/src/Cardano/types/AuxiliaryData.ts
Expand Up @@ -6,7 +6,7 @@
// } else if (Array.isArray(metadatum)) {
// } else if (metadatum instanceof Uint8Array) {
// } else {
// // a is MetadatumMap
// // metadatum is MetadatumMap
// }

import * as Cardano from '.';
Expand Down
1 change: 1 addition & 0 deletions packages/core/src/Cardano/util/index.ts
@@ -1,3 +1,4 @@
export * from './coalesceValueQuantities';
export * from './computeMinUtxoValue';
export * from './primitives';
export * as metadatum from './metadatum';
21 changes: 21 additions & 0 deletions packages/core/src/Cardano/util/metadatum.ts
@@ -0,0 +1,21 @@
import { Metadatum, MetadatumMap } from '../types';

/**
* @returns {MetadatumMap | null} null if Metadatum is not MetadatumMap
*/
export const asMetadatumMap = (metadatum: Metadatum): MetadatumMap | null => {
if (typeof metadatum === 'object' && !Array.isArray(metadatum) && !(metadatum instanceof Uint8Array)) {
return metadatum;
}
return null;
};

/**
* @returns {Metadatum[] | null} null if Metadatum is not an array of metadatum
*/
export const asMetadatumArray = (metadatum: Metadatum): Metadatum[] | null => {
if (Array.isArray(metadatum)) {
return metadatum;
}
return null;
};
27 changes: 27 additions & 0 deletions packages/core/test/Cardano/util/metadatum.test.ts
@@ -0,0 +1,27 @@
import { Cardano } from '@cardano-sdk/core';

describe('Cardano.util.metadatum', () => {
describe('asMetadatumMap', () => {
it('returns argument if it is a MetadatumMap', () => {
const metadatum: Cardano.Metadatum = { some: 'metadatum' };
expect(Cardano.util.metadatum.asMetadatumMap(metadatum)).toBe(metadatum);
});

it('returns null for any other metadatum type', () => {
const metadatum: Cardano.Metadatum = [{ some: 'metadatum' }];
expect(Cardano.util.metadatum.asMetadatumMap(metadatum)).toBeNull();
});
});

describe('asMetadatumArray', () => {
it('returns argument if it is Metadatum[]', () => {
const metadatum: Cardano.Metadatum = [{ some: 'metadatum' }];
expect(Cardano.util.metadatum.asMetadatumArray(metadatum)).toBe(metadatum);
});

it('returns null for any other metadatum type', () => {
const metadatum: Cardano.Metadatum = { some: 'metadatum' };
expect(Cardano.util.metadatum.asMetadatumArray(metadatum)).toBeNull();
});
});
});

0 comments on commit 51a57ab

Please sign in to comment.