diff options
Diffstat (limited to 'extension/background/emscriptif.ts')
-rw-r--r-- | extension/background/emscriptif.ts | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/extension/background/emscriptif.ts b/extension/background/emscriptif.ts index 73b5d1acd..3daf27b17 100644 --- a/extension/background/emscriptif.ts +++ b/extension/background/emscriptif.ts @@ -387,6 +387,13 @@ abstract class PackedArenaObject extends ArenaObject { return s; } + toJson(): any { + // Per default, the json encoding of + // packed arena objects is just the crockford encoding. + // Subclasses typically want to override this. + return this.toCrock(); + } + loadCrock(s: string) { this.alloc(); // We need to get the javascript string @@ -420,7 +427,6 @@ abstract class PackedArenaObject extends ArenaObject { return x; } - hexdump() { let bytes: string[] = []; for (let i = 0; i < this.size(); i++) { @@ -441,6 +447,14 @@ class AmountNbo extends PackedArenaObject { size() { return 24; } + toJson(): any { + let a = new DefaultArena(); + let am = new Amount(null, a); + am.fromNbo(this); + let json = am.toJson(); + a.destroy(); + return json; + } } @@ -673,6 +687,21 @@ abstract class SignatureStruct { return new EccSignaturePurpose(this.purpose(), ba); } + + toJson() { + let res: any = {}; + for (let f of this.fieldTypes()) { + let name = f[0]; + let member = this.members[name]; + if (!member) { + throw Error(format("Member {0} not set", name)); + } + res[name] = member.toJson(); + } + res["purpose"] = this.purpose(); + return res; + } + protected set(name: string, value: PackedArenaObject) { let typemap: any = {}; for (let f of this.fieldTypes()) { |