heimdall-tide 0.14.33-staging → 0.14.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@ class ApprovalEnclaveNew extends RequestEnclave_1.RequestEnclave {
16
16
  // return fully serialized approved requests
17
17
  this.checkEnclaveOpen();
18
18
  await this.initDone;
19
- const pre_resp = this.recieve("approvals");
19
+ const pre_resp = this.recieve("approvals", false, true); // reject if the popup is closed
20
20
  this.send({
21
21
  type: "approvalRequests",
22
22
  message: {
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalEnclaveNEW.js","sourceRoot":"","sources":["../../../src/enclaves/ApprovalEnclaveNEW.ts"],"names":[],"mappings":";;;AAAA,0CAA6D;AAE7D,qDAAkD;AAElD,MAAa,kBAAmB,SAAQ,+BAAc;IAAtD;;QACI,SAAI,GAAW,aAAa,CAAC;QAC7B,gBAAW,GAAe,qBAAU,CAAC,KAAK,CAAC;IAwB/C,CAAC;IAtBG,IAAI,CAAC,IAAgB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAuB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAqC;QAC/C,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC;YACN,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAC;gBACJ,QAAQ,EAAE,iBAAiB;aAC9B;SACJ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC;QAC5B,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,sDAAsD,GAAG,IAAI,CAAC;QAC7F,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,kEAAkE,CAAC;QAC7J,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AA1BD,gDA0BC;AACD,MAAM,gBAAgB;CAGrB;AACD,MAAM,wBAAyB,SAAQ,gBAAgB;IAEnD,MAAM,CAAC,0BAA0B,CAAC,MAAW;QACzC,OAAO,CACH,MAAM,IAAI,IAAI;YACd,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,CAAC,MAAM,CAAC,OAAO,YAAY,UAAU,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAChD,CAAC;IACN,CAAC;CACJ;AACD,IAAK,MAIJ;AAJD,WAAK,MAAM;IACP,+BAAqB,CAAA;IACrB,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;AACvB,CAAC,EAJI,MAAM,KAAN,MAAM,QAIV"}
1
+ {"version":3,"file":"ApprovalEnclaveNEW.js","sourceRoot":"","sources":["../../../src/enclaves/ApprovalEnclaveNEW.ts"],"names":[],"mappings":";;;AAAA,0CAA6D;AAE7D,qDAAkD;AAElD,MAAa,kBAAmB,SAAQ,+BAAc;IAAtD;;QACI,SAAI,GAAW,aAAa,CAAC;QAC7B,gBAAW,GAAe,qBAAU,CAAC,KAAK,CAAC;IAwB/C,CAAC;IAtBG,IAAI,CAAC,IAAgB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAuB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAqC;QAC/C,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAgC;QACzF,IAAI,CAAC,IAAI,CAAC;YACN,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAC;gBACJ,QAAQ,EAAE,iBAAiB;aAC9B;SACJ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC;QAC5B,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,sDAAsD,GAAG,IAAI,CAAC;QAC7F,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,kEAAkE,CAAC;QAC7J,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AA1BD,gDA0BC;AACD,MAAM,gBAAgB;CAGrB;AACD,MAAM,wBAAyB,SAAQ,gBAAgB;IAEnD,MAAM,CAAC,0BAA0B,CAAC,MAAW;QACzC,OAAO,CACH,MAAM,IAAI,IAAI;YACd,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,CAAC,MAAM,CAAC,OAAO,YAAY,UAAU,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAChD,CAAC;IACN,CAAC;CACJ;AACD,IAAK,MAIJ;AAJD,WAAK,MAAM;IACP,+BAAqB,CAAA;IACrB,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;AACvB,CAAC,EAJI,MAAM,KAAN,MAAM,QAIV"}
@@ -19,7 +19,7 @@ export declare abstract class Heimdall<T> implements EnclaveFlow<T> {
19
19
  getOrkUrl(): URL;
20
20
  open(): Promise<boolean>;
21
21
  send(data: any): void;
22
- recieve(type: string, silent?: boolean): Promise<any>;
22
+ recieve(type: string, silent?: boolean, failOnClose?: boolean): Promise<any>;
23
23
  close(): void;
24
24
  onerror(data: any): void;
25
25
  private openPopUp;
@@ -16,6 +16,8 @@
16
16
  // If not, see https://tide.org/licenses_tcoc2-0-0-en
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.windowType = exports.Heimdall = void 0;
19
+ // Backstop only; closing the popup is the normal way out.
20
+ const WAIT_TIMEOUT_MS = 300_000;
19
21
  class Heimdall {
20
22
  constructor(init) {
21
23
  this.enclaveOrigin = init.homeOrkOrigin;
@@ -54,14 +56,14 @@ class Heimdall {
54
56
  break;
55
57
  }
56
58
  }
57
- async recieve(type, silent = false) {
59
+ async recieve(type, silent = false, failOnClose = false) {
58
60
  switch (this._windowType) {
59
61
  case windowType.Popup:
60
- return this.waitForWindowPostMessage(type, silent);
62
+ return this.waitForWindowPostMessage(type, silent, failOnClose);
61
63
  case windowType.Redirect:
62
64
  throw new Error("Method not implemented.");
63
65
  case windowType.Hidden:
64
- return this.waitForWindowPostMessage(type, silent);
66
+ return this.waitForWindowPostMessage(type, silent, failOnClose);
65
67
  }
66
68
  }
67
69
  close() {
@@ -138,13 +140,20 @@ class Heimdall {
138
140
  closePopupEnclave() {
139
141
  this.enclaveWindow?.close();
140
142
  }
141
- async waitForWindowPostMessage(responseTypeToAwait, silent = false) {
142
- return new Promise((resolve) => {
143
+ async waitForWindowPostMessage(responseTypeToAwait, silent = false, failOnClose = false) {
144
+ return new Promise((resolve, reject) => {
145
+ let poll;
146
+ let deadline;
147
+ const done = () => {
148
+ window.removeEventListener("message", handler);
149
+ clearInterval(poll);
150
+ clearTimeout(deadline);
151
+ };
143
152
  const handler = (event) => {
144
153
  const response = this.processEvent(event.data, event.origin, responseTypeToAwait, silent);
145
154
  if (response.ok) {
155
+ done();
146
156
  resolve(response.message);
147
- window.removeEventListener("message", handler);
148
157
  }
149
158
  else {
150
159
  if (response.print)
@@ -152,6 +161,19 @@ class Heimdall {
152
161
  }
153
162
  };
154
163
  window.addEventListener("message", handler, false);
164
+ if (failOnClose) {
165
+ poll = setInterval(() => {
166
+ if (!this.enclaveWindow?.closed)
167
+ return;
168
+ done();
169
+ // Callers treat a message containing "popup" as a cancel.
170
+ reject(new Error(`[HEIMDALL] Enclave popup closed before sending ${responseTypeToAwait}`));
171
+ }, 250);
172
+ deadline = setTimeout(() => {
173
+ done();
174
+ reject(Object.assign(new Error(`[HEIMDALL] No ${responseTypeToAwait} from the enclave within ${WAIT_TIMEOUT_MS / 1000}s`), { code: "enclave.timeout" }));
175
+ }, WAIT_TIMEOUT_MS);
176
+ }
155
177
  });
156
178
  }
157
179
  sendPostWindowMessage(message) {
@@ -160,6 +182,10 @@ class Heimdall {
160
182
  processEvent(data, origin, expectedType, silent) {
161
183
  if (origin !== new URL(this.enclaveOrigin).origin) {
162
184
  // Something's not right... The message has come from an unknown domain...
185
+ // Untyped messages (HMR, extensions) are not ours, so skip them.
186
+ if (!silent && typeof data?.type === "string") {
187
+ console.warn(`[HEIMDALL] Ignored ${data.type} from ${origin}, expected ${new URL(this.enclaveOrigin).origin}`);
188
+ }
163
189
  return { ok: false, print: false, error: "WRONG WINDOW SENT MESSAGE" };
164
190
  }
165
191
  switch (data.type) {
@@ -1 +1 @@
1
- {"version":3,"file":"heimdall.js","sourceRoot":"","sources":["../../src/heimdall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heimdall.js","sourceRoot":"","sources":["../../src/heimdall.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export class ApprovalEnclaveNew extends RequestEnclave {
13
13
  // return fully serialized approved requests
14
14
  this.checkEnclaveOpen();
15
15
  await this.initDone;
16
- const pre_resp = this.recieve("approvals");
16
+ const pre_resp = this.recieve("approvals", false, true); // reject if the popup is closed
17
17
  this.send({
18
18
  type: "approvalRequests",
19
19
  message: {
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalEnclaveNEW.js","sourceRoot":"","sources":["../../../src/enclaves/ApprovalEnclaveNEW.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAC,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAAtD;;QACI,SAAI,GAAW,aAAa,CAAC;QAC7B,gBAAW,GAAe,UAAU,CAAC,KAAK,CAAC;IAwB/C,CAAC;IAtBG,IAAI,CAAC,IAAgB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAuB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAqC;QAC/C,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC;YACN,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAC;gBACJ,QAAQ,EAAE,iBAAiB;aAC9B;SACJ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC;QAC5B,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,sDAAsD,GAAG,IAAI,CAAC;QAC7F,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,kEAAkE,CAAC;QAC7J,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AACD,MAAM,gBAAgB;CAGrB;AACD,MAAM,wBAAyB,SAAQ,gBAAgB;IAEnD,MAAM,CAAC,0BAA0B,CAAC,MAAW;QACzC,OAAO,CACH,MAAM,IAAI,IAAI;YACd,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,CAAC,MAAM,CAAC,OAAO,YAAY,UAAU,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAChD,CAAC;IACN,CAAC;CACJ;AACD,IAAK,MAIJ;AAJD,WAAK,MAAM;IACP,+BAAqB,CAAA;IACrB,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;AACvB,CAAC,EAJI,MAAM,KAAN,MAAM,QAIV"}
1
+ {"version":3,"file":"ApprovalEnclaveNEW.js","sourceRoot":"","sources":["../../../src/enclaves/ApprovalEnclaveNEW.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAC,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAAtD;;QACI,SAAI,GAAW,aAAa,CAAC;QAC7B,gBAAW,GAAe,UAAU,CAAC,KAAK,CAAC;IAwB/C,CAAC;IAtBG,IAAI,CAAC,IAAgB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAuB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAqC;QAC/C,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAgC;QACzF,IAAI,CAAC,IAAI,CAAC;YACN,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAC;gBACJ,QAAQ,EAAE,iBAAiB;aAC9B;SACJ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC;QAC5B,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,sDAAsD,GAAG,IAAI,CAAC;QAC7F,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,kEAAkE,CAAC;QAC7J,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AACD,MAAM,gBAAgB;CAGrB;AACD,MAAM,wBAAyB,SAAQ,gBAAgB;IAEnD,MAAM,CAAC,0BAA0B,CAAC,MAAW;QACzC,OAAO,CACH,MAAM,IAAI,IAAI;YACd,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,CAAC,MAAM,CAAC,OAAO,YAAY,UAAU,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAChD,CAAC;IACN,CAAC;CACJ;AACD,IAAK,MAIJ;AAJD,WAAK,MAAM;IACP,+BAAqB,CAAA;IACrB,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;AACvB,CAAC,EAJI,MAAM,KAAN,MAAM,QAIV"}
@@ -19,7 +19,7 @@ export declare abstract class Heimdall<T> implements EnclaveFlow<T> {
19
19
  getOrkUrl(): URL;
20
20
  open(): Promise<boolean>;
21
21
  send(data: any): void;
22
- recieve(type: string, silent?: boolean): Promise<any>;
22
+ recieve(type: string, silent?: boolean, failOnClose?: boolean): Promise<any>;
23
23
  close(): void;
24
24
  onerror(data: any): void;
25
25
  private openPopUp;
@@ -13,6 +13,8 @@
13
13
  // You should have received a copy of the Tide Community Open
14
14
  // Code License along with this program.
15
15
  // If not, see https://tide.org/licenses_tcoc2-0-0-en
16
+ // Backstop only; closing the popup is the normal way out.
17
+ const WAIT_TIMEOUT_MS = 300_000;
16
18
  export class Heimdall {
17
19
  constructor(init) {
18
20
  this.enclaveOrigin = init.homeOrkOrigin;
@@ -51,14 +53,14 @@ export class Heimdall {
51
53
  break;
52
54
  }
53
55
  }
54
- async recieve(type, silent = false) {
56
+ async recieve(type, silent = false, failOnClose = false) {
55
57
  switch (this._windowType) {
56
58
  case windowType.Popup:
57
- return this.waitForWindowPostMessage(type, silent);
59
+ return this.waitForWindowPostMessage(type, silent, failOnClose);
58
60
  case windowType.Redirect:
59
61
  throw new Error("Method not implemented.");
60
62
  case windowType.Hidden:
61
- return this.waitForWindowPostMessage(type, silent);
63
+ return this.waitForWindowPostMessage(type, silent, failOnClose);
62
64
  }
63
65
  }
64
66
  close() {
@@ -135,13 +137,20 @@ export class Heimdall {
135
137
  closePopupEnclave() {
136
138
  this.enclaveWindow?.close();
137
139
  }
138
- async waitForWindowPostMessage(responseTypeToAwait, silent = false) {
139
- return new Promise((resolve) => {
140
+ async waitForWindowPostMessage(responseTypeToAwait, silent = false, failOnClose = false) {
141
+ return new Promise((resolve, reject) => {
142
+ let poll;
143
+ let deadline;
144
+ const done = () => {
145
+ window.removeEventListener("message", handler);
146
+ clearInterval(poll);
147
+ clearTimeout(deadline);
148
+ };
140
149
  const handler = (event) => {
141
150
  const response = this.processEvent(event.data, event.origin, responseTypeToAwait, silent);
142
151
  if (response.ok) {
152
+ done();
143
153
  resolve(response.message);
144
- window.removeEventListener("message", handler);
145
154
  }
146
155
  else {
147
156
  if (response.print)
@@ -149,6 +158,19 @@ export class Heimdall {
149
158
  }
150
159
  };
151
160
  window.addEventListener("message", handler, false);
161
+ if (failOnClose) {
162
+ poll = setInterval(() => {
163
+ if (!this.enclaveWindow?.closed)
164
+ return;
165
+ done();
166
+ // Callers treat a message containing "popup" as a cancel.
167
+ reject(new Error(`[HEIMDALL] Enclave popup closed before sending ${responseTypeToAwait}`));
168
+ }, 250);
169
+ deadline = setTimeout(() => {
170
+ done();
171
+ reject(Object.assign(new Error(`[HEIMDALL] No ${responseTypeToAwait} from the enclave within ${WAIT_TIMEOUT_MS / 1000}s`), { code: "enclave.timeout" }));
172
+ }, WAIT_TIMEOUT_MS);
173
+ }
152
174
  });
153
175
  }
154
176
  sendPostWindowMessage(message) {
@@ -157,6 +179,10 @@ export class Heimdall {
157
179
  processEvent(data, origin, expectedType, silent) {
158
180
  if (origin !== new URL(this.enclaveOrigin).origin) {
159
181
  // Something's not right... The message has come from an unknown domain...
182
+ // Untyped messages (HMR, extensions) are not ours, so skip them.
183
+ if (!silent && typeof data?.type === "string") {
184
+ console.warn(`[HEIMDALL] Ignored ${data.type} from ${origin}, expected ${new URL(this.enclaveOrigin).origin}`);
185
+ }
160
186
  return { ok: false, print: false, error: "WRONG WINDOW SENT MESSAGE" };
161
187
  }
162
188
  switch (data.type) {
@@ -1 +1 @@
1
- {"version":3,"file":"heimdall.js","sourceRoot":"","sources":["../../src/heimdall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heimdall.js","sourceRoot":"","sources":["../../src/heimdall.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "heimdall-tide",
3
- "version": "0.14.33-staging",
3
+ "version": "0.14.34",
4
4
  "description": "SDK for communicating with a Tide Enclave",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
- "typings": "dist/esm/index.d.ts",
7
+ "typings": "dist/esm/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
10
  "import": "./dist/esm/index.js",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "homepage": "https://github.com/tide-foundation/heimdall#readme",
41
41
  "dependencies": {
42
- "@tideorg/js": "0.14.33-staging"
42
+ "@tideorg/js": "^0.14.29"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^5.8.3"
@@ -14,7 +14,7 @@ export class ApprovalEnclaveNew extends RequestEnclave{
14
14
  // return fully serialized approved requests
15
15
  this.checkEnclaveOpen();
16
16
  await this.initDone;
17
- const pre_resp = this.recieve("approvals");
17
+ const pre_resp = this.recieve("approvals", false, true); // reject if the popup is closed
18
18
  this.send({
19
19
  type: "approvalRequests",
20
20
  message:{
package/src/heimdall.ts CHANGED
@@ -23,6 +23,9 @@ export interface HeimdallConstructor{
23
23
  signed_client_origin: string;
24
24
  isRunningLocal?: boolean
25
25
  }
26
+ // Backstop only; closing the popup is the normal way out.
27
+ const WAIT_TIMEOUT_MS = 300_000;
28
+
26
29
  export abstract class Heimdall<T> implements EnclaveFlow<T> {
27
30
  name: string;
28
31
  _windowType: windowType;
@@ -74,14 +77,14 @@ export abstract class Heimdall<T> implements EnclaveFlow<T> {
74
77
  break;
75
78
  }
76
79
  }
77
- public async recieve(type: string, silent: boolean = false): Promise<any> {
80
+ public async recieve(type: string, silent: boolean = false, failOnClose: boolean = false): Promise<any> {
78
81
  switch(this._windowType){
79
82
  case windowType.Popup:
80
- return this.waitForWindowPostMessage(type, silent);
83
+ return this.waitForWindowPostMessage(type, silent, failOnClose);
81
84
  case windowType.Redirect:
82
85
  throw new Error("Method not implemented.");
83
86
  case windowType.Hidden:
84
- return this.waitForWindowPostMessage(type, silent);
87
+ return this.waitForWindowPostMessage(type, silent, failOnClose);
85
88
  }
86
89
  }
87
90
  public close() {
@@ -170,18 +173,40 @@ export abstract class Heimdall<T> implements EnclaveFlow<T> {
170
173
  this.enclaveWindow?.close();
171
174
  }
172
175
 
173
- private async waitForWindowPostMessage(responseTypeToAwait: string, silent: boolean = false) {
174
- return new Promise((resolve) => {
176
+ private async waitForWindowPostMessage(responseTypeToAwait: string, silent: boolean = false, failOnClose: boolean = false) {
177
+ return new Promise((resolve, reject) => {
178
+ let poll: ReturnType<typeof setInterval> | undefined;
179
+ let deadline: ReturnType<typeof setTimeout> | undefined;
180
+ const done = () => {
181
+ window.removeEventListener("message", handler);
182
+ clearInterval(poll);
183
+ clearTimeout(deadline);
184
+ };
175
185
  const handler = (event) => {
176
186
  const response = this.processEvent(event.data, event.origin, responseTypeToAwait, silent);
177
187
  if (response.ok) {
188
+ done();
178
189
  resolve(response.message);
179
- window.removeEventListener("message", handler);
180
190
  } else {
181
191
  if(response.print) console.error("[HEIMDALL] Recieved enclave error: " + response.error);
182
192
  }
183
193
  };
184
194
  window.addEventListener("message", handler, false);
195
+ if (failOnClose) {
196
+ poll = setInterval(() => {
197
+ if (!this.enclaveWindow?.closed) return;
198
+ done();
199
+ // Callers treat a message containing "popup" as a cancel.
200
+ reject(new Error(`[HEIMDALL] Enclave popup closed before sending ${responseTypeToAwait}`));
201
+ }, 250);
202
+ deadline = setTimeout(() => {
203
+ done();
204
+ reject(Object.assign(
205
+ new Error(`[HEIMDALL] No ${responseTypeToAwait} from the enclave within ${WAIT_TIMEOUT_MS / 1000}s`),
206
+ { code: "enclave.timeout" },
207
+ ));
208
+ }, WAIT_TIMEOUT_MS);
209
+ }
185
210
  });
186
211
  }
187
212
 
@@ -192,6 +217,10 @@ export abstract class Heimdall<T> implements EnclaveFlow<T> {
192
217
  private processEvent(data: any, origin: string, expectedType: string, silent: boolean){
193
218
  if (origin !== new URL(this.enclaveOrigin).origin) {
194
219
  // Something's not right... The message has come from an unknown domain...
220
+ // Untyped messages (HMR, extensions) are not ours, so skip them.
221
+ if (!silent && typeof data?.type === "string") {
222
+ console.warn(`[HEIMDALL] Ignored ${data.type} from ${origin}, expected ${new URL(this.enclaveOrigin).origin}`);
223
+ }
195
224
  return {ok: false, print: false, error: "WRONG WINDOW SENT MESSAGE"};
196
225
  }
197
226
 
Binary file