-
Notifications
You must be signed in to change notification settings - Fork 54
/
metadatum.ts
49 lines (45 loc) · 1.58 KB
/
metadatum.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { CML } from '../CML/CML';
import { Metadatum, MetadatumMap } from '../Cardano/types/AuxiliaryData';
import { txMetadatum as txMetadatumToCML } from '../CML/coreToCml/coreToCml';
import { txMetadatum as txMetadatumToCore } from '../CML/cmlToCore/cmlToCore';
import { usingAutoFree } from '@cardano-sdk/util';
/**
* @returns {MetadatumMap | null} null if Metadatum is not MetadatumMap
*/
export const asMetadatumMap = (metadatum: Metadatum | undefined): MetadatumMap | null => {
if (metadatum instanceof Map) {
return metadatum;
}
return null;
};
/**
* @returns {Metadatum[] | null} null if Metadatum is not an array of metadatum
*/
export const asMetadatumArray = (metadatum: Metadatum | undefined): Metadatum[] | null => {
if (Array.isArray(metadatum)) {
return metadatum;
}
return null;
};
/**
* Converts any json object to Metadatum.
*
* @param json The json object to be converted.
* @returns The metadatum.
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const jsonToMetadatum = (json: any): Metadatum =>
txMetadatumToCore(CML.encode_json_str_to_metadatum(JSON.stringify(json), CML.MetadataJsonSchema.NoConversions));
/**
* Converts any Metadatum object to json.
*
* @param metadatum The metadatum to be converted to json.
* @returns The json object.
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const metadatumToJson = (metadatum: Metadatum): any =>
usingAutoFree((scope) =>
JSON.parse(
CML.decode_metadatum_to_json_str(txMetadatumToCML(scope, metadatum), CML.MetadataJsonSchema.NoConversions)
)
);