aboutsummaryrefslogtreecommitdiff
path: root/extension/background/emscriptif.ts
diff options
context:
space:
mode:
Diffstat (limited to 'extension/background/emscriptif.ts')
-rw-r--r--extension/background/emscriptif.ts31
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()) {