@event-chat/rpc 0.1.16 → 0.1.17

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.
Files changed (44) hide show
  1. package/dist/core/RPCAction.d.ts +1 -1
  2. package/dist/core/RPCAction.d.ts.map +1 -1
  3. package/dist/core/RPCAction.js +3 -3
  4. package/dist/core/RPCDecorator.d.ts.map +1 -1
  5. package/dist/core/RPCDecorator.js +1 -0
  6. package/dist/entry/window.d.ts.map +1 -1
  7. package/dist/entry/window.js +4 -1
  8. package/dist/fields.d.ts +1 -0
  9. package/dist/fields.d.ts.map +1 -1
  10. package/dist/react/hooks.d.ts +4 -1
  11. package/dist/react/hooks.d.ts.map +1 -1
  12. package/dist/react/hooks.js +19 -6
  13. package/dist/transports/BaseTransport.d.ts +2 -0
  14. package/dist/transports/BaseTransport.d.ts.map +1 -1
  15. package/dist/transports/BroadcastChannelTransport.d.ts +1 -0
  16. package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -1
  17. package/dist/transports/BroadcastChannelTransport.js +1 -0
  18. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts +1 -0
  19. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -1
  20. package/dist/transports/DedicatedWorkerGlobalScopeTransport.js +1 -0
  21. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +1 -0
  22. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -1
  23. package/dist/transports/ServiceWorkerGlobalScopeTransport.js +1 -0
  24. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +4 -1
  25. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -1
  26. package/dist/transports/ServiceWorkerRegistrationTransport.js +14 -3
  27. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts +1 -0
  28. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -1
  29. package/dist/transports/SharedWorkerGlobalScopeTransport.js +1 -0
  30. package/dist/transports/SharedWorkerTransport.d.ts +1 -0
  31. package/dist/transports/SharedWorkerTransport.d.ts.map +1 -1
  32. package/dist/transports/SharedWorkerTransport.js +1 -0
  33. package/dist/transports/WebSocketTransport.d.ts +1 -0
  34. package/dist/transports/WebSocketTransport.d.ts.map +1 -1
  35. package/dist/transports/WebSocketTransport.js +5 -0
  36. package/dist/transports/WindowTransport.d.ts +3 -0
  37. package/dist/transports/WindowTransport.d.ts.map +1 -1
  38. package/dist/transports/WindowTransport.js +35 -1
  39. package/dist/transports/WorkerTransport.d.ts +1 -0
  40. package/dist/transports/WorkerTransport.d.ts.map +1 -1
  41. package/dist/transports/WorkerTransport.js +1 -0
  42. package/dist/transports/fields.d.ts +1 -3
  43. package/dist/transports/fields.d.ts.map +1 -1
  44. package/package.json +1 -1
@@ -33,7 +33,7 @@ export type RPCOptionsType = {
33
33
  retryTimeout?: number;
34
34
  retryTimes?: number;
35
35
  onConnect?: () => void;
36
- onDisconnect?: () => void;
36
+ onDisconnect?: (destroy?: boolean) => void;
37
37
  };
38
38
  export type ActionFunType = (payload?: any, info?: MessageInfo) => any;
39
39
  export type BrodcastItem = (value: unknown, info?: MessageInfo) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"RPCAction.d.ts","sourceRoot":"","sources":["../../src/core/RPCAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAI7D,QAAA,MAAM,WAAW,oBAAoB,CAAA;AAarC,cAAM,SAAS;IAWX,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,oBAAoB,CAAkC;gBAGpD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc;IAc1B,OAAO;IAUP,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IASvD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,cAAc,CAAC;IAIlE,EAAE,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,YAAY;IAIjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IA6CnE,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAmFvB,OAAO,CAAC,eAAe;CAsBxB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,eAAe,SAAS,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,GAAG,CAAA;AAEtE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;AAEvE,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,GAAG;IACjE,OAAO,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAID,KAAK,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"RPCAction.d.ts","sourceRoot":"","sources":["../../src/core/RPCAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAI7D,QAAA,MAAM,WAAW,oBAAoB,CAAA;AAarC,cAAM,SAAS;IAWX,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,oBAAoB,CAAkC;gBAGpD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc;IAc1B,OAAO;IAUP,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IASvD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,cAAc,CAAC;IAIlE,EAAE,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,YAAY;IAIjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IA6CnE,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAmFvB,OAAO,CAAC,eAAe;CAsBxB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,eAAe,SAAS,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,CAAA;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,GAAG,CAAA;AAEtE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;AAEvE,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,GAAG;IACjE,OAAO,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAID,KAAK,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA"}
@@ -32,7 +32,7 @@ class RPCAction {
32
32
  destroy() {
33
33
  clearInterval(this._heartbeatTimer ?? void 0);
34
34
  this._target.onremove(this._boundMessageHandler);
35
- this._abort();
35
+ this._abort(true);
36
36
  this._brodcastListeners = [];
37
37
  this._handlers = {};
38
38
  this._heartbeatTimer = null;
@@ -102,9 +102,9 @@ class RPCAction {
102
102
  });
103
103
  });
104
104
  }
105
- _abort() {
105
+ _abort(destroy) {
106
106
  this._isConnected = false;
107
- this._options?.onDisconnect?.();
107
+ this._options?.onDisconnect?.(destroy);
108
108
  this._pending.forEach(({ reject, timer })=>{
109
109
  clearTimeout(timer);
110
110
  reject(new Error('[RPC] 连接已断开,请求已取消'));
@@ -1 +1 @@
1
- {"version":3,"file":"RPCDecorator.d.ts","sourceRoot":"","sources":["../../src/core/RPCDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEpG,QAAA,MAAM,UAAU,+BAAgC,CAAA;AAChD,QAAA,MAAM,WAAW,0CAA2C,CAAA;AAU5D,iBAAS,YAAY,CACnB,MAAM,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,EACxC,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,0BAI1C,CAAC,SAAS,MAAM,OAAO,WAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GACtC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GACzD,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAGjB,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAyC5F;AAED,eAAe,YAAY,CAAA;AAE3B,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAGxD,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEnE,KAAK,sBAAsB,CAAC,CAAC,SAAS,aAAa,IACjD,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,GACpB,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GACrD,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA;AAEtE,KAAK,UAAU,CAAC,GAAG,EAAE,MAAM,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GACpF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACpB,QAAQ,CACN,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GACvD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;IACtD,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,GAAG,CAAA;CAC7D,CACJ,CAAA;AAEL,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"RPCDecorator.d.ts","sourceRoot":"","sources":["../../src/core/RPCDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEpG,QAAA,MAAM,UAAU,+BAAgC,CAAA;AAChD,QAAA,MAAM,WAAW,0CAA2C,CAAA;AAU5D,iBAAS,YAAY,CACnB,MAAM,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,EACxC,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,0BAI1C,CAAC,SAAS,MAAM,OAAO,WAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GACtC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GACzD,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAGjB,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBA0C5F;AAED,eAAe,YAAY,CAAA;AAE3B,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAGxD,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEnE,KAAK,sBAAsB,CAAC,CAAC,SAAS,aAAa,IACjD,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,GACpB,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GACrD,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA;AAEtE,KAAK,UAAU,CAAC,GAAG,EAAE,MAAM,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GACpF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACpB,QAAQ,CACN,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GACvD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;IACtD,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,GAAG,CAAA;CAC7D,CACJ,CAAA;AAEL,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA"}
@@ -27,6 +27,7 @@ function RPCDecorator(factory, context) {
27
27
  };
28
28
  Object.entries(event ?? {}).forEach(([keyname, handle])=>action?.on(keyname, handle));
29
29
  Object.values(brodcast ?? {}).forEach((handle)=>action?.onBrodcast(handle));
30
+ factory?.observe(destroy);
30
31
  const rpcInsc = new Proxy({}, {
31
32
  get (_, key) {
32
33
  const keyname = key.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/entry/window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,eAAe,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EACtF,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAClC,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;gBAMtC"}
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/entry/window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,eAAe,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EACtF,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAClC,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;gBAYtC"}
@@ -3,6 +3,9 @@ import WindowTransport from "../transports/WindowTransport.js";
3
3
  function createWindowRPC(target, config) {
4
4
  const { context, options } = config ?? {};
5
5
  const instance = target instanceof HTMLIFrameElement ? target.contentWindow : target;
6
- return RPCDecorator(instance ? new WindowTransport(instance, options) : null, context);
6
+ const ops = target instanceof HTMLIFrameElement ? Object.assign({}, options, {
7
+ observer: ()=>target
8
+ }) : options;
9
+ return RPCDecorator(instance ? new WindowTransport(instance, ops) : null, context);
7
10
  }
8
11
  export { createWindowRPC };
package/dist/fields.d.ts CHANGED
@@ -24,6 +24,7 @@ export interface Transport<ONLYBD extends boolean = false> {
24
24
  destroy: () => void;
25
25
  getType: () => string;
26
26
  is: (source: MessageEventSource | null) => boolean;
27
+ observe: (close?: () => void) => void;
27
28
  onmessage: (listener: ListenerType) => void;
28
29
  onremove: (listener: ListenerType) => void;
29
30
  postMessage: (message: unknown, options?: IframeSerializeOptions) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,SAAS,CAAC,MAAM,SAAS,OAAO,GAAG,KAAK;IACvD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,KACnF,IAAI,CAAA;AAET,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,SAAS,CAAC,MAAM,SAAS,OAAO,GAAG,KAAK;IACvD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,KACnF,IAAI,CAAA;AAET,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import RPCDecorator, { ActionRecord, DecoratorContext } from '../core/RPCDecorator';
2
2
  import { Transport } from '../fields';
3
- import { EntryOptions, FactoryOptions } from '../transports/fields';
3
+ import { FactoryOptions } from '../transports/BaseTransport';
4
+ import { EntryOptions } from '../transports/fields';
4
5
  declare const useRPC: <TARGET extends TargetInit, EVENT extends ActionRecord, CONSUME extends ActionRecord>(ops: RPCHooksOptions<TARGET, EVENT, CONSUME> | RPCDriveOptions<TARGET, EVENT, CONSUME>) => Readonly<{
5
6
  rpc: [[TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>] extends [null] ? Record<never, never> : Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<Transport<boolean>, "getType" | "upset"> & {
6
7
  request: (([TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>) extends infer T ? T extends ([TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>) ? T extends Transport<infer B extends boolean> ? B : never : never : never) extends true ? never : <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
@@ -26,8 +27,10 @@ declare const useRPC: <TARGET extends TargetInit, EVENT extends ActionRecord, CO
26
27
  }]) => Promise<ReturnType<CONSUME[K]> extends infer T_1 ? T_1 extends ReturnType<CONSUME[K]> ? T_1 extends Promise<infer R> ? R : T_1 : never : never>;
27
28
  }>;
28
29
  brodcastScope: <T_1>(data: import("../core/RPCAction").RequestOptions<T_1>, options?: import("./fields").ScopeProps) => void;
30
+ destroy: () => void;
29
31
  mount: (name: string) => void;
30
32
  connected: boolean;
33
+ start: () => () => void;
31
34
  }>;
32
35
  export default useRPC;
33
36
  export type TargetInit = BroadcastChannel | ServiceWorkerRegistration | SharedWorker | WebSocket | Window | Worker | HTMLIFrameElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMnE,QAAA,MAAM,MAAM,GACV,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAE5B,KAAK,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;kBA+B7E,MAAM;;EAoEhB,CAAA;AAED,eAAe,MAAM,CAAA;AAGrB,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,yBAAyB,GACzB,YAAY,GACZ,SAAS,GACT,MAAM,GACN,MAAM,GACN,iBAAiB,GACjB,IAAI,CAAA;AAER,UAAU,cAAc,CAAC,MAAM,SAAS,UAAU;IAChD,IAAI,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACjC;AAED,UAAU,eAAe,CACvB,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,CAE5B,SAAQ,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChE,KAAK,EAAE,CACL,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAClC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CACvC;AAED,UAAU,eAAe,CACvB,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,CAE5B,SAAQ,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChE,KAAK,EAAE,CACL,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;CAChD;AAED,KAAK,SAAS,CACZ,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,IAC1B,UAAU,CACZ,OAAO,YAAY,CACjB;IAAC,MAAM;CAAC,SAAS,CAAC,IAAI,CAAC,GACnB,IAAI,GACJ,MAAM,SAAS,gBAAgB,GAC7B,SAAS,CAAC,IAAI,CAAC,GACf,SAAS,CAAC,KAAK,CAAC,EACtB,KAAK,EACL,OAAO,CACR,CACF,CAAA"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAMnD,QAAA,MAAM,MAAM,GACV,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAE5B,KAAK,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiC7E,MAAM;;;EAsFhB,CAAA;AAED,eAAe,MAAM,CAAA;AAGrB,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,yBAAyB,GACzB,YAAY,GACZ,SAAS,GACT,MAAM,GACN,MAAM,GACN,iBAAiB,GACjB,IAAI,CAAA;AAER,UAAU,cAAc,CAAC,MAAM,SAAS,UAAU;IAChD,IAAI,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACjC;AAED,UAAU,eAAe,CACvB,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,CAE5B,SAAQ,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChE,KAAK,EAAE,CACL,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAClC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CACvC;AAED,UAAU,eAAe,CACvB,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,CAE5B,SAAQ,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChE,KAAK,EAAE,CACL,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;CAChD;AAED,KAAK,SAAS,CACZ,MAAM,SAAS,UAAU,EACzB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,IAC1B,UAAU,CACZ,OAAO,YAAY,CACjB;IAAC,MAAM;CAAC,SAAS,CAAC,IAAI,CAAC,GACnB,IAAI,GACJ,MAAM,SAAS,gBAAgB,GAC7B,SAAS,CAAC,IAAI,CAAC,GACf,SAAS,CAAC,KAAK,CAAC,EACtB,KAAK,EACL,OAAO,CACR,CACF,CAAA"}
@@ -7,6 +7,7 @@ const useRPC = (ops)=>{
7
7
  const [connected, setConnected] = useState(false);
8
8
  const decoratorRef = useRef(null);
9
9
  const processRef = useRef(Promise.resolve(null));
10
+ const destroyRef = useRef(()=>{});
10
11
  const opsRef = useRef(ops);
11
12
  const rpcIns = useMemo(()=>new Proxy({}, {
12
13
  get (_, key, ref) {
@@ -25,9 +26,13 @@ const useRPC = (ops)=>{
25
26
  }, [
26
27
  mount
27
28
  ]);
28
- useEffect(()=>{
29
+ const start = useCallback(()=>{
29
30
  const { config, options, drive, faild, init, name = '', ...opConfig } = opsRef.current;
30
- processRef.current = processRef.current.then(()=>init()).then((tar)=>tar instanceof HTMLIFrameElement ? tar.contentWindow : tar).then((tar)=>{
31
+ setConnected(false);
32
+ processRef.current = processRef.current.then(()=>init()).then((tar)=>{
33
+ if (options && tar instanceof HTMLIFrameElement) options.observer = ()=>tar;
34
+ return tar instanceof HTMLIFrameElement ? tar.contentWindow : tar;
35
+ }).then((tar)=>{
31
36
  const context = {
32
37
  ...opConfig,
33
38
  config: {
@@ -36,8 +41,8 @@ const useRPC = (ops)=>{
36
41
  config?.onConnect?.();
37
42
  setConnected(true);
38
43
  },
39
- onDisconnect () {
40
- config?.onDisconnect?.();
44
+ onDisconnect (destroy) {
45
+ config?.onDisconnect?.(destroy);
41
46
  setConnected(false);
42
47
  }
43
48
  }
@@ -47,11 +52,14 @@ const useRPC = (ops)=>{
47
52
  options
48
53
  });
49
54
  }).then((target)=>{
50
- const [result] = target;
55
+ const [result, destroy] = target;
51
56
  decoratorRef.current = result;
57
+ destroyRef.current = destroy;
52
58
  mount?.(result, name);
53
59
  return target;
54
60
  }).catch((error)=>{
61
+ if (decoratorRef.current) mount?.(decoratorRef.current);
62
+ destroyRef.current();
55
63
  faild?.(error);
56
64
  return null;
57
65
  });
@@ -70,11 +78,16 @@ const useRPC = (ops)=>{
70
78
  }, [
71
79
  mount
72
80
  ]);
81
+ useEffect(start, [
82
+ start
83
+ ]);
73
84
  return Object.freeze({
74
85
  rpc: rpcIns,
75
86
  brodcastScope: brodcastScope ?? defaultBrod,
87
+ destroy: ()=>destroyRef.current?.(),
76
88
  mount: mounHandle,
77
- connected
89
+ connected,
90
+ start
78
91
  });
79
92
  };
80
93
  const hooks = useRPC;
@@ -8,6 +8,7 @@ declare abstract class BaseTransport<T extends TargetType = TargetType, ONLYBD e
8
8
  is(source: MessageEventSource | null): boolean;
9
9
  upset(options: FactoryOptions): void;
10
10
  abstract destroy(): void;
11
+ abstract observe(close?: () => void): void;
11
12
  abstract onmessage(listener: ListenerType): void;
12
13
  abstract onremove(listener: ListenerType): void;
13
14
  abstract postMessage(message: unknown, options?: IframeSerializeOptions): void;
@@ -15,6 +16,7 @@ declare abstract class BaseTransport<T extends TargetType = TargetType, ONLYBD e
15
16
  export default BaseTransport;
16
17
  export interface FactoryOptions {
17
18
  message?: boolean | AddEventListenerOptions;
19
+ observer?: () => unknown;
18
20
  }
19
21
  export type TargetType = BroadcastChannel | WebSocket | Window | ServiceWorkerRegistration | ServiceWorkerGlobalScope | SharedWorker | SharedWorkerGlobalScope | Worker | DedicatedWorkerGlobalScope;
20
22
  //# sourceMappingURL=BaseTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BaseTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAM3E,uBAAe,aAAa,CAC1B,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,MAAM,SAAS,OAAO,GAAG,KAAK,CAC9B,YAAW,SAAS,CAAC,MAAM,CAAC;IAG1B,SAAS,CAAC,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,cAAc;IAHpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;gBAEd,OAAO,EAAE,CAAC,EACV,QAAQ,GAAE,cAAmB;IAGzC,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,KAAK,CAAC,OAAO,EAAE,cAAc;IAM7B,QAAQ,CAAC,OAAO,IAAI,IAAI;IACxB,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAGhD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAC/C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAC/E;AAED,eAAe,aAAa,CAAA;AAE5B,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAID,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,SAAS,GACT,MAAM,GAEN,yBAAyB,GACzB,wBAAwB,GACxB,YAAY,GACZ,uBAAuB,GACvB,MAAM,GACN,0BAA0B,CAAA"}
1
+ {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BaseTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAM3E,uBAAe,aAAa,CAC1B,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,MAAM,SAAS,OAAO,GAAG,KAAK,CAC9B,YAAW,SAAS,CAAC,MAAM,CAAC;IAG1B,SAAS,CAAC,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,cAAc;IAHpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;gBAEd,OAAO,EAAE,CAAC,EACV,QAAQ,GAAE,cAAmB;IAGzC,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,KAAK,CAAC,OAAO,EAAE,cAAc;IAM7B,QAAQ,CAAC,OAAO,IAAI,IAAI;IAIxB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAC1C,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAGhD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAC/C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAC/E;AAED,eAAe,aAAa,CAAA;AAE5B,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;IAE3C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAA;CACzB;AAID,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,SAAS,GACT,MAAM,GAEN,yBAAyB,GACzB,wBAAwB,GACxB,YAAY,GACZ,uBAAuB,GACvB,MAAM,GACN,0BAA0B,CAAA"}
@@ -3,6 +3,7 @@ import BaseTransport from './BaseTransport';
3
3
  declare class BroadcastChannelTransport extends BaseTransport<BroadcastChannel, true> {
4
4
  readonly onlyBrod = true;
5
5
  destroy(): void;
6
+ observe(): void;
6
7
  onmessage(listener: ListenerType): void;
7
8
  onremove(listener: ListenerType): void;
8
9
  postMessage(message: unknown): void;
@@ -1 +1 @@
1
- {"version":3,"file":"BroadcastChannelTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BroadcastChannelTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,yBAA0B,SAAQ,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAC3E,SAAkB,QAAQ,QAAO;IACjC,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGpC;AAED,eAAe,yBAAyB,CAAA"}
1
+ {"version":3,"file":"BroadcastChannelTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BroadcastChannelTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,yBAA0B,SAAQ,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAC3E,SAAkB,QAAQ,QAAO;IAEjC,OAAO;IAKP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGpC;AAED,eAAe,yBAAyB,CAAA"}
@@ -4,6 +4,7 @@ class BroadcastChannelTransport extends BaseTransport {
4
4
  destroy() {
5
5
  this._target.close();
6
6
  }
7
+ observe() {}
7
8
  onmessage(listener) {
8
9
  this._target.addEventListener('message', listener, this._options.message);
9
10
  }
@@ -2,6 +2,7 @@ import { IframeSerializeOptions, ListenerType } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class DedicatedWorkerGlobalScopeTransport extends BaseTransport<DedicatedWorkerGlobalScope> {
4
4
  destroy(): void;
5
+ observe(): void;
5
6
  onmessage(listener: ListenerType): void;
6
7
  onremove(listener: ListenerType): void;
7
8
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DedicatedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/DedicatedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,mCAAoC,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IAEzF,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,mCAAmC,CAAA"}
1
+ {"version":3,"file":"DedicatedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/DedicatedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,mCAAoC,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IAEzF,OAAO;IAKP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,mCAAmC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
2
  class DedicatedWorkerGlobalScopeTransport extends BaseTransport {
3
3
  destroy() {}
4
+ observe() {}
4
5
  onmessage(listener) {
5
6
  this._target.addEventListener('message', listener, this._options.message);
6
7
  }
@@ -4,6 +4,7 @@ declare class ServiceWorkerGlobalScopeTransport extends BaseTransport<ServiceWor
4
4
  private _onconnect;
5
5
  private _source;
6
6
  destroy(): void;
7
+ observe(): void;
7
8
  onmessage(listener: ListenerType): void;
8
9
  onremove(): void;
9
10
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,iCAAkC,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACrF,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,OAAO,CAA8C;IAI7D,OAAO;IAMP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAyBvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAYtE;AAED,eAAe,iCAAiC,CAAA"}
1
+ {"version":3,"file":"ServiceWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,iCAAkC,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACrF,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,OAAO,CAA8C;IAI7D,OAAO;IAKP,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAyBvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAYtE;AAED,eAAe,iCAAiC,CAAA"}
@@ -5,6 +5,7 @@ class ServiceWorkerGlobalScopeTransport extends BaseTransport {
5
5
  destroy() {
6
6
  this._onconnect = void 0;
7
7
  }
8
+ observe() {}
8
9
  onmessage(listener) {
9
10
  this._onconnect = (event)=>{
10
11
  this._source = event.source;
@@ -1,9 +1,12 @@
1
1
  import { IframeSerializeOptions, ListenerType } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class ServiceWorkerRegistrationTransport extends BaseTransport<ServiceWorkerRegistration> {
4
+ private _listener;
4
5
  destroy(): void;
6
+ is(source: MessageEventSource | null): source is ServiceWorker;
7
+ observe(): void;
5
8
  onmessage(listener: ListenerType): void;
6
- onremove(listener: ListenerType): void;
9
+ onremove(): void;
7
10
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
8
11
  }
9
12
  export default ServiceWorkerRegistrationTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceWorkerRegistrationTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerRegistrationTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAI3C,cAAM,kCAAmC,SAAQ,aAAa,CAAC,yBAAyB,CAAC;IAEvF,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,kCAAkC,CAAA"}
1
+ {"version":3,"file":"ServiceWorkerRegistrationTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerRegistrationTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAI3C,cAAM,kCAAmC,SAAQ,aAAa,CAAC,yBAAyB,CAAC;IACvF,OAAO,CAAC,SAAS,CAA+C;IAIhE,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAQpC,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAuBvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,kCAAkC,CAAA"}
@@ -1,13 +1,24 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
2
  class ServiceWorkerRegistrationTransport extends BaseTransport {
3
+ _listener = null;
3
4
  destroy() {
4
5
  this._target.unregister().catch(()=>{});
5
6
  }
7
+ is(source) {
8
+ return source instanceof ServiceWorker;
9
+ }
10
+ observe() {}
6
11
  onmessage(listener) {
7
- navigator.serviceWorker.addEventListener('message', listener, this._options.message);
12
+ this._listener = (event)=>{
13
+ navigator.serviceWorker.getRegistrations().then((registrations)=>{
14
+ const matched = registrations.find((registration)=>event.source === registration.active || event.source === registration.installing || event.source === registration.waiting);
15
+ if (Object.is(matched, this._target)) listener(event);
16
+ }).catch(()=>{});
17
+ };
18
+ navigator.serviceWorker.addEventListener('message', this._listener, this._options.message);
8
19
  }
9
- onremove(listener) {
10
- navigator.serviceWorker.removeEventListener('message', listener, this._options.message);
20
+ onremove() {
21
+ if (this._listener) navigator.serviceWorker.removeEventListener('message', this._listener, this._options.message);
11
22
  }
12
23
  postMessage(message, options) {
13
24
  const { transfer } = options ?? {};
@@ -4,6 +4,7 @@ declare class SharedWorkerGlobalScopeTransport extends BaseTransport<SharedWorke
4
4
  private _onconnect;
5
5
  private _message;
6
6
  destroy(): void;
7
+ observe(): void;
7
8
  onmessage(listener: ListenerType): void;
8
9
  onremove(listener: ListenerType): void;
9
10
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SharedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,gCAAiC,SAAQ,aAAa,CAAC,uBAAuB,CAAC;IACnF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAA6C;IAE7D,OAAO;IAOP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAevC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAQtC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAQtE;AAED,eAAe,gCAAgC,CAAA"}
1
+ {"version":3,"file":"SharedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,gCAAiC,SAAQ,aAAa,CAAC,uBAAuB,CAAC;IACnF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAA6C;IAE7D,OAAO;IAOP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAevC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAQtC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAQtE;AAED,eAAe,gCAAgC,CAAA"}
@@ -6,6 +6,7 @@ class SharedWorkerGlobalScopeTransport extends BaseTransport {
6
6
  this._onconnect.then((messagePort)=>messagePort?.close()).catch(()=>{});
7
7
  if (this._message) this._target.removeEventListener('connect', this._message);
8
8
  }
9
+ observe() {}
9
10
  onmessage(listener) {
10
11
  const SharedWorker = this._target;
11
12
  this._onconnect = new Promise((resolve)=>{
@@ -2,6 +2,7 @@ import { IframeSerializeOptions, ListenerType } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class SharedWorkerTransport extends BaseTransport<SharedWorker> {
4
4
  destroy(): void;
5
+ observe(): void;
5
6
  onmessage(listener: ListenerType): void;
6
7
  onremove(listener: ListenerType): void;
7
8
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SharedWorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,qBAAsB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC7D,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,qBAAqB,CAAA"}
1
+ {"version":3,"file":"SharedWorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,qBAAsB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC7D,OAAO;IAIP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,qBAAqB,CAAA"}
@@ -3,6 +3,7 @@ class SharedWorkerTransport extends BaseTransport {
3
3
  destroy() {
4
4
  this._target.port.close();
5
5
  }
6
+ observe() {}
6
7
  onmessage(listener) {
7
8
  this._target.port.addEventListener('message', listener, this._options.message);
8
9
  this._target.port.start();
@@ -6,6 +6,7 @@ declare class WebSocketTransport extends BaseTransport<WebSocket> {
6
6
  private _onconnect;
7
7
  constructor(_target: WebSocket, _options?: FactoryOptions);
8
8
  destroy(): void;
9
+ observe(close?: () => void): void;
9
10
  onmessage(listener: ListenerType): void;
10
11
  onremove(): void;
11
12
  postMessage(message: unknown): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WebSocketTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAS3C,cAAM,kBAAmB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAIrD,SAAS,CAAC,OAAO,EAAE,SAAS;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc;IAJpC,OAAO,CAAC,UAAU,CAAyB;gBAG/B,OAAO,EAAE,SAAS,EAClB,QAAQ,GAAE,cAAmB;IAczC,OAAO;IAOP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAWpC;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WebSocketTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAS3C,cAAM,kBAAmB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAIrD,SAAS,CAAC,OAAO,EAAE,SAAS;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc;IAJpC,OAAO,CAAC,UAAU,CAAyB;gBAG/B,OAAO,EAAE,SAAS,EAClB,QAAQ,GAAE,cAAmB;IAczC,OAAO;IAOP,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAMjC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAWpC;AAED,eAAe,kBAAkB,CAAA"}
@@ -22,6 +22,11 @@ class WebSocketTransport extends BaseTransport {
22
22
  this._target.onopen = null;
23
23
  if (this._target.readyState === WebSocket.OPEN) this._target.close();
24
24
  }
25
+ observe(close) {
26
+ this._target.onclose = ()=>{
27
+ close?.();
28
+ };
29
+ }
25
30
  onmessage(listener) {
26
31
  this._target.onmessage = listener;
27
32
  }
@@ -1,11 +1,14 @@
1
1
  import { IframeSerializeOptions, ListenerType } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class WindowTransport extends BaseTransport<Window> {
4
+ private _errorHandle;
5
+ private _observerTarget;
4
6
  destroy(): void;
5
7
  is(source: MessageEventSource | null): boolean;
6
8
  onmessage(listener: ListenerType): void;
7
9
  onremove(listener: ListenerType): void;
8
10
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
11
+ observe(close?: () => void): void;
9
12
  }
10
13
  export default WindowTransport;
11
14
  //# sourceMappingURL=WindowTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindowTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WindowTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IAEjD,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAOtE;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"WindowTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WindowTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IACjD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO;IAMP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAQrE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI;CA0C3B;AAED,eAAe,eAAe,CAAA"}
@@ -1,6 +1,13 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
2
  class WindowTransport extends BaseTransport {
3
- destroy() {}
3
+ _errorHandle = null;
4
+ _observerTarget = null;
5
+ destroy() {
6
+ this._errorHandle?.({
7
+ isDestroy: true
8
+ });
9
+ this._observerTarget?.disconnect();
10
+ }
4
11
  is(source) {
5
12
  return Object.is(this._target, source);
6
13
  }
@@ -17,6 +24,33 @@ class WindowTransport extends BaseTransport {
17
24
  transfer
18
25
  });
19
26
  }
27
+ observe(close) {
28
+ const element = this._options.observer?.();
29
+ if (!(element instanceof HTMLIFrameElement) || !Object.is(element.contentWindow, this._target)) return;
30
+ if (!element.isConnected) return void close?.();
31
+ const parent = element?.parentElement;
32
+ if (element) {
33
+ const errorHandle = (error)=>{
34
+ element.removeEventListener('error', errorHandle);
35
+ if (!error.isDestroy) close?.();
36
+ };
37
+ element.addEventListener('error', errorHandle);
38
+ this._errorHandle = errorHandle;
39
+ }
40
+ if (parent) {
41
+ const observer = new MutationObserver(()=>{
42
+ if (!element.isConnected) {
43
+ observer.disconnect();
44
+ close?.();
45
+ }
46
+ });
47
+ observer.observe(parent, {
48
+ childList: true,
49
+ subtree: false
50
+ });
51
+ this._observerTarget = observer;
52
+ }
53
+ }
20
54
  }
21
55
  const transports_WindowTransport = WindowTransport;
22
56
  export { transports_WindowTransport as default };
@@ -2,6 +2,7 @@ import { IframeSerializeOptions, ListenerType } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class WorkerTransport extends BaseTransport<Worker> {
4
4
  destroy(): void;
5
+ observe(): void;
5
6
  onmessage(listener: ListenerType): void;
6
7
  onremove(listener: ListenerType): void;
7
8
  postMessage(message: unknown, options?: IframeSerializeOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IAEjD,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"WorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IAEjD,OAAO;IAMP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,eAAe,CAAA"}
@@ -3,6 +3,7 @@ class WorkerTransport extends BaseTransport {
3
3
  destroy() {
4
4
  this._target.terminate();
5
5
  }
6
+ observe() {}
6
7
  onmessage(listener) {
7
8
  this._target.addEventListener('message', listener, this._options.message);
8
9
  }
@@ -1,7 +1,5 @@
1
1
  import { ActionRecord, DecoratorContext } from '../core/RPCDecorator';
2
- export interface FactoryOptions {
3
- message?: boolean | AddEventListenerOptions;
4
- }
2
+ import { FactoryOptions } from './BaseTransport';
5
3
  export interface Transport {
6
4
  destory: () => void;
7
5
  getType: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/transports/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC5D,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC3D,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,YAAY,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY;IACpF,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3C"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/transports/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAMhD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC5D,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC3D,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,YAAY,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY;IACpF,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-chat/rpc",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {