penpal 7.0.0-beta.2 → 7.0.0-beta.3
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.
- package/README.md +19 -11
- package/cjs/connectRemoteProxy.js +1 -1
- package/dist/penpal.js +1 -1
- package/dist/penpal.min.js +1 -1
- package/dist/penpal.min.js.map +1 -1
- package/lib/connectRemoteProxy.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -267,7 +267,7 @@ console.log(additionResult); // 8
|
|
|
267
267
|
### Window
|
|
268
268
|
|
|
269
269
|
```javascript
|
|
270
|
-
import {
|
|
270
|
+
import { PortMessenger, connect } from 'penpal';
|
|
271
271
|
|
|
272
272
|
const worker = new SharedWorker('shared-worker.js');
|
|
273
273
|
|
|
@@ -345,6 +345,16 @@ import { PortMessenger, connect } from 'penpal';
|
|
|
345
345
|
const initPenpal = async () => {
|
|
346
346
|
const { port1, port2 } = new MessageChannel();
|
|
347
347
|
|
|
348
|
+
navigator.serviceWorker.controller?.postMessage(
|
|
349
|
+
{
|
|
350
|
+
type: 'INIT_PENPAL',
|
|
351
|
+
port: port2,
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
transfer: [port2],
|
|
355
|
+
}
|
|
356
|
+
);
|
|
357
|
+
|
|
348
358
|
const messenger = new PortMessenger({
|
|
349
359
|
port: port1,
|
|
350
360
|
});
|
|
@@ -365,16 +375,6 @@ const initPenpal = async () => {
|
|
|
365
375
|
console.log(multiplicationResult); // 12
|
|
366
376
|
const divisionResult = await remote.divide(12, 4);
|
|
367
377
|
console.log(divisionResult); // 3
|
|
368
|
-
|
|
369
|
-
navigator.serviceWorker.controller?.postMessage(
|
|
370
|
-
{
|
|
371
|
-
type: 'INIT_PENPAL',
|
|
372
|
-
port: port2,
|
|
373
|
-
},
|
|
374
|
-
{
|
|
375
|
-
transfer: [port2],
|
|
376
|
-
}
|
|
377
|
-
);
|
|
378
378
|
};
|
|
379
379
|
|
|
380
380
|
if (navigator.serviceWorker.controller) {
|
|
@@ -725,6 +725,14 @@ const remote = await connection.promise;
|
|
|
725
725
|
const multiplicationResult = await remote.multiply(2, 6);
|
|
726
726
|
```
|
|
727
727
|
|
|
728
|
+
When creating a worker, it's highly recommended that you add the following line of code at the top of your worker script depending on which type of worker you're creating:
|
|
729
|
+
|
|
730
|
+
- Dedicated (regular) worker: `declare const self: DedicatedWorkerGlobalScope;`
|
|
731
|
+
- Shared worker: `declare const self: SharedWorkerGlobalScope;`
|
|
732
|
+
- Service worker: `declare const self: ServiceWorkerGlobalScope;`
|
|
733
|
+
|
|
734
|
+
This lets TypeScript know which type of worker you're creating, and you'll run into fewer TypeScript errors.
|
|
735
|
+
|
|
728
736
|
### Exported Types
|
|
729
737
|
|
|
730
738
|
Penpal exports several types for your usage. Import types as follows:
|
|
@@ -89,7 +89,7 @@ const connectRemoteProxy = (messenger, channel, log) => {
|
|
|
89
89
|
// running tests if we don't disambiguate the browser setTimeout
|
|
90
90
|
// from node's setTimeout. There may be a better way to configure
|
|
91
91
|
// Karma + Rollup + Typescript to avoid node type leakage.
|
|
92
|
-
const timeoutId = timeout
|
|
92
|
+
const timeoutId = timeout !== undefined
|
|
93
93
|
? window.setTimeout(() => {
|
|
94
94
|
replyHandlers.delete(callId);
|
|
95
95
|
reject(new PenpalError_1.default(enums_1.ErrorCode.MethodCallTimeout, `Method call ${(0, methodSerialization_1.formatMethodPath)(methodPath)}() timed out after ${timeout}ms`));
|
package/dist/penpal.js
CHANGED
|
@@ -325,7 +325,7 @@ var Penpal = (function () {
|
|
|
325
325
|
// running tests if we don't disambiguate the browser setTimeout
|
|
326
326
|
// from node's setTimeout. There may be a better way to configure
|
|
327
327
|
// Karma + Rollup + Typescript to avoid node type leakage.
|
|
328
|
-
const timeoutId = timeout
|
|
328
|
+
const timeoutId = timeout !== undefined
|
|
329
329
|
? window.setTimeout(() => {
|
|
330
330
|
replyHandlers.delete(callId);
|
|
331
331
|
reject(new PenpalError(ErrorCode.MethodCallTimeout, `Method call ${formatMethodPath(methodPath)}() timed out after ${timeout}ms`));
|
package/dist/penpal.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Penpal=function(){"use strict";class e extends Error{code;constructor(e,t){super(t);this.name="PenpalError";this.code=e}}var t;(function(e){e["Syn"]="SYN";e["Ack1"]="ACK1";e["Ack2"]="ACK2";e["Call"]="CALL";e["Reply"]="REPLY";e["Destroy"]="DESTROY"})(t||(t={}));var s;(function(e){e["ConnectionDestroyed"]="CONNECTION_DESTROYED";e["ConnectionTimeout"]="CONNECTION_TIMEOUT";e["InvalidArgument"]="INVALID_ARGUMENT";e["MethodCallTimeout"]="METHOD_CALL_TIMEOUT";e["MethodNotFound"]="METHOD_NOT_FOUND";e["TransmissionFailed"]="TRANSMISSION_FAILED"})(s||(s={}));var n;(function(e){e["DataCloneError"]="DataCloneError"})(n||(n={}));const r=t=>({name:t.name,message:t.message,stack:t.stack,penpalCode:t instanceof e?t.code:undefined});const a=({name:t,message:s,stack:n,penpalCode:r})=>{const a=r?new e(r,s):new Error(s);a.name=t;a.stack=n;return a};const o=Symbol("Reply");class i{value;transferables;[o]=o;constructor(e,t){this.value=e;this.transferables=t?.transferables}}var l="penpal";const d=e=>typeof e==="object"&&e!==null;const c=e=>typeof e==="function";const h=e=>d(e)&&e.namespace===l;const g=e=>e.type===t.Syn;const u=e=>e.type===t.Ack1;const m=e=>e.type===t.Ack2;const p=e=>e.type===t.Call;const f=e=>e.type===t.Reply;const _=e=>e.type===t.Destroy;const w=(e,t=[])=>{const s=[];for(const n of Object.keys(e)){const r=e[n];if(c(r)){s.push([...t,n])}else if(d(r)){s.push(...w(r,[...t,n]))}}return s};const v=(e,t)=>{const s=e.reduce(((e,t)=>d(e)?e[t]:undefined),t);return c(s)?s:undefined};const y=e=>e.join(".");const M=(e,s,n)=>({namespace:l,channel:e,type:t.Reply,callId:s,isError:true,...n instanceof Error?{value:r(n),isSerializedErrorInstance:true}:{value:n}});const C=(r,a,o,d)=>{let c=false;const h=async h=>{if(c){return}if(!p(h)){return}d?.(`Received ${y(h.methodPath)}() call`,h);const{methodPath:g,args:u,id:m}=h;let f;let _;try{const n=v(g,a);if(!n){throw new e(s.MethodNotFound,`Method \`${y(g)}\` is not found.`)}let r=await n(...u);if(r instanceof i){_=r.transferables;r=await r.value}f={namespace:l,channel:o,type:t.Reply,callId:m,value:r}}catch(e){f=M(o,m,e)}if(c){return}try{d?.(`Sending ${y(g)}() reply`,f);r.sendMessage(f,_)}catch(e){if(e.name===n.DataCloneError){f=M(o,m,e);d?.(`Sending ${y(g)}() reply`,f);r.sendMessage(f)}throw e}};r.addMessageHandler(h);return()=>{c=true;r.removeMessageHandler(h)}};var k=crypto.randomUUID?.bind(crypto)??(()=>new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-"));const R=Symbol("CallOptions");class E{transferables;timeout;[R]=R;constructor(e){this.transferables=e?.transferables;this.timeout=e?.timeout}}const P=(e,t,s=[])=>new Proxy(s?()=>{}:Object.create(null),{get(n,r){if(r==="then"){return}return P(e,t,[...s,r])},apply(n,r,a){if(t){const e=s.at(-1);const r=n[e];if(c(r)){t(`You may be attempting to call the native `+`\`${e}\` method which is not supported. Call `+`will be sent to remote.`)}}return e(s,a)}});const b=t=>new e(s.ConnectionDestroyed,`Method call ${y(t)}() failed due to destroyed connection`);const O=(n,r,o)=>{let i=false;const d=new Map;const c=e=>{if(!f(e)){return}const{callId:t,value:s,isError:n,isSerializedErrorInstance:r}=e;const i=d.get(t);if(!i){return}d.delete(t);o?.(`Received ${y(i.methodPath)}() call`,e);if(n){i.reject(r?a(s):s)}else{i.resolve(s)}};n.addMessageHandler(c);const h=P(((a,c)=>{if(i){throw b(a)}const h=k();const g=c[c.length-1];const u=g instanceof E;const{timeout:m,transferables:p}=u?g:{};const f=u?c.slice(0,-1):c;return new Promise(((i,c)=>{const g=m?window.setTimeout((()=>{d.delete(h);c(new e(s.MethodCallTimeout,`Method call ${y(a)}() timed out after ${m}ms`))}),m):undefined;d.set(h,{methodPath:a,resolve:i,reject:c,timeoutId:g});try{const e={namespace:l,channel:r,type:t.Call,id:h,methodPath:a,args:f};o?.(`Sending ${y(a)}() call`,e);n.sendMessage(e,p)}catch(t){c(new e(s.TransmissionFailed,t.message))}}))}),o);const g=()=>{i=true;n.removeMessageHandler(c);for(const{methodPath:e,reject:t,timeoutId:s}of d.values()){clearTimeout(s);t(b(e))}d.clear()};return{remoteProxy:h,destroy:g}};const S=()=>{let e;let t;const s=new Promise(((s,n)=>{e=s;t=n}));return{promise:s,resolve:e,reject:t}};class A extends Error{constructor(e){super(`You've hit a bug in Penpal. Please file an issue with the following information: ${e}`)}}const I="deprecated-penpal";var T;(function(e){e["Call"]="call";e["Reply"]="reply";e["Syn"]="syn";e["SynAck"]="synAck";e["Ack"]="ack"})(T||(T={}));var N;(function(e){e["Fulfilled"]="fulfilled";e["Rejected"]="rejected"})(N||(N={}));const F=e=>d(e)&&"penpal"in e;const D=e=>e.split(".");const L=e=>e.join(".");const $=e=>new A(`Unexpected message to translate: ${JSON.stringify(e)}`);const j=e=>{if(e.penpal===T.Syn){return{namespace:l,channel:undefined,type:t.Syn,participantId:I}}if(e.penpal===T.Ack){return{namespace:l,channel:undefined,type:t.Ack2}}if(e.penpal===T.Call){return{namespace:l,channel:undefined,type:t.Call,id:e.id,methodPath:D(e.methodName),args:e.args}}if(e.penpal===T.Reply){if(e.resolution===N.Fulfilled){return{namespace:l,channel:undefined,type:t.Reply,callId:e.id,value:e.returnValue}}else{return{namespace:l,channel:undefined,type:t.Reply,callId:e.id,isError:true,...e.returnValueIsError?{value:e.returnValue,isSerializedErrorInstance:true}:{value:e.returnValue}}}}throw $(e)};const H=e=>{if(u(e)){return{penpal:T.SynAck,methodNames:e.methodPaths.map(L)}}if(p(e)){return{penpal:T.Call,id:e.id,methodName:L(e.methodPath),args:e.args}}if(f(e)){if(e.isError){return{penpal:T.Reply,id:e.callId,resolution:N.Rejected,...e.isSerializedErrorInstance?{returnValue:e.value,returnValueIsError:true}:{returnValue:e.value}}}else{return{penpal:T.Reply,id:e.callId,resolution:N.Fulfilled,returnValue:e.value}}}throw $(e)};const W=({messenger:n,methods:r,timeout:a,channel:o,log:i})=>{const d=k();let c;const h=[];let p=false;const f=w(r);const{promise:_,resolve:v,reject:y}=S();const M=a!==undefined?setTimeout((()=>{y(new e(s.ConnectionTimeout,`Connection timed out after ${a}ms`))}),a):undefined;const R=()=>{for(const e of h){e()}};const E=()=>{if(p){return}h.push(C(n,r,o,i));const{remoteProxy:e,destroy:t}=O(n,o,i);h.push(t);clearTimeout(M);p=true;v({remoteProxy:e,destroy:R})};const P=()=>{const r={namespace:l,type:t.Syn,channel:o,participantId:d};i?.(`Sending handshake SYN`,r);try{n.sendMessage(r)}catch(t){y(new e(s.TransmissionFailed,t.message))}};const b=r=>{i?.(`Received handshake SYN`,r);if(r.participantId===c&&c!==I){return}c=r.participantId;P();const a=d>c||c===I;if(!a){return}const h={namespace:l,channel:o,type:t.Ack1,methodPaths:f};i?.(`Sending handshake ACK1`,h);try{n.sendMessage(h)}catch(t){y(new e(s.TransmissionFailed,t.message));return}};const A=r=>{i?.(`Received handshake ACK1`,r);const a={namespace:l,channel:o,type:t.Ack2};i?.(`Sending handshake ACK2`,a);try{n.sendMessage(a)}catch(t){y(new e(s.TransmissionFailed,t.message));return}E()};const T=e=>{i?.(`Received handshake ACK2`,e);E()};const N=e=>{if(g(e)){b(e)}if(u(e)){A(e)}if(m(e)){T(e)}};n.addMessageHandler(N);h.push((()=>n.removeMessageHandler(N)));P();return _};const U=e=>{let t=false;let s;return(...n)=>{if(!t){t=true;s=e(...n)}return s}};const x=new WeakSet;const V=({messenger:n,methods:r={},timeout:a,channel:o,log:i})=>{if(!n){throw new e(s.InvalidArgument,"messenger must be defined")}if(x.has(n)){throw new e(s.InvalidArgument,"A messenger can only be used for a single connection")}x.add(n);const d=[n.destroy];const c=U((e=>{if(e){const e={namespace:l,channel:o,type:t.Destroy};try{n.sendMessage(e)}catch(e){}}for(const e of d){e()}i?.("Connection destroyed")}));const g=e=>h(e)&&e.channel===o;const u=(async()=>{try{n.initialize({log:i,validateReceivedMessage:g});n.addMessageHandler((e=>{if(_(e)){c(false)}}));const{remoteProxy:e,destroy:t}=await W({messenger:n,methods:r,timeout:a,channel:o,log:i});d.push(t);return e}catch(e){c(true);throw e}})();return{promise:u,destroy:()=>{c(true)}}};class z{_remoteWindow;_allowedOrigins;_log;_validateReceivedMessage;_concreteRemoteOrigin;_messageCallbacks=new Set;_port;_isChildUsingDeprecatedProtocol=false;constructor({remoteWindow:t,allowedOrigins:n}){if(!t){throw new e(s.InvalidArgument,"remoteWindow must be defined")}this._remoteWindow=t;this._allowedOrigins=n?.length?n:[window.origin]}initialize=({log:e,validateReceivedMessage:t})=>{this._log=e;this._validateReceivedMessage=t;window.addEventListener("message",this._handleMessageFromRemoteWindow)};_isAllowedOrigin=e=>this._allowedOrigins.some((t=>t instanceof RegExp?t.test(e):t===e||t==="*"));_getOriginForSendingMessage=e=>{if(g(e)){return this._allowedOrigins.length>1||this._allowedOrigins[0]instanceof RegExp?"*":this._allowedOrigins[0]}if(!this._concreteRemoteOrigin){throw new A("Concrete remote origin not set")}return this._concreteRemoteOrigin==="null"&&this._allowedOrigins.includes("*")?"*":this._concreteRemoteOrigin};_destroyPort=()=>{this._port?.removeEventListener("message",this._handleMessageFromPort);this._port?.close();this._port=undefined};_handleMessageFromRemoteWindow=({source:e,origin:t,ports:s,data:n})=>{if(e!==this._remoteWindow){return}if(F(n)){this._log?.("Please upgrade the child window to the latest version of Penpal.");this._isChildUsingDeprecatedProtocol=true;n=j(n)}if(!this._validateReceivedMessage?.(n)){return}if(!this._isAllowedOrigin(t)){this._log?.(`Received a message from origin \`${t}\` which did not match `+`allowed origins \`[${this._allowedOrigins.join(", ")}]\``);return}if(g(n)){this._destroyPort();this._concreteRemoteOrigin=t}if(m(n)&&!this._isChildUsingDeprecatedProtocol){this._port=s[0];if(!this._port){throw new A("No port received on ACK2")}this._port.addEventListener("message",this._handleMessageFromPort);this._port.start()}for(const e of this._messageCallbacks){e(n)}};_handleMessageFromPort=({data:e})=>{if(!this._validateReceivedMessage?.(e)){return}for(const t of this._messageCallbacks){t(e)}};sendMessage=(e,t)=>{if(g(e)){const s=this._getOriginForSendingMessage(e);this._remoteWindow.postMessage(e,{targetOrigin:s,transfer:t});return}if(u(e)||this._isChildUsingDeprecatedProtocol){const s=this._isChildUsingDeprecatedProtocol?H(e):e;const n=this._getOriginForSendingMessage(e);this._remoteWindow.postMessage(s,{targetOrigin:n,transfer:t});return}if(m(e)){const{port1:s,port2:n}=new MessageChannel;this._port=s;s.addEventListener("message",this._handleMessageFromPort);s.start();const r=[n,...t||[]];const a=this._getOriginForSendingMessage(e);this._remoteWindow.postMessage(e,{targetOrigin:a,transfer:r});return}if(this._port){this._port.postMessage(e,{transfer:t});return}throw new A("Port is undefined")};addMessageHandler=e=>{this._messageCallbacks.add(e)};removeMessageHandler=e=>{this._messageCallbacks.delete(e)};destroy=()=>{window.removeEventListener("message",this._handleMessageFromRemoteWindow);this._destroyPort();this._messageCallbacks.clear()}}class K{_worker;_validateReceivedMessage;_messageCallbacks=new Set;_port;constructor({worker:t}){if(!t){throw new e(s.InvalidArgument,"worker must be defined")}this._worker=t}initialize=({validateReceivedMessage:e})=>{this._validateReceivedMessage=e;this._worker.addEventListener("message",this._handleMessage)};_destroyPort=()=>{this._port?.removeEventListener("message",this._handleMessage);this._port?.close();this._port=undefined};_handleMessage=({ports:e,data:t})=>{if(!this._validateReceivedMessage?.(t)){return}if(g(t)){this._destroyPort()}if(m(t)){this._port=e[0];if(!this._port){throw new A("No port received on ACK2")}this._port.addEventListener("message",this._handleMessage);this._port.start()}for(const e of this._messageCallbacks){e(t)}};sendMessage=(e,t)=>{if(g(e)||u(e)){this._worker.postMessage(e,{transfer:t});return}if(m(e)){const{port1:s,port2:n}=new MessageChannel;this._port=s;s.addEventListener("message",this._handleMessage);s.start();this._worker.postMessage(e,{transfer:[n,...t||[]]});return}if(this._port){this._port.postMessage(e,{transfer:t});return}throw new A("Port is undefined")};addMessageHandler=e=>{this._messageCallbacks.add(e)};removeMessageHandler=e=>{this._messageCallbacks.delete(e)};destroy=()=>{this._worker.removeEventListener("message",this._handleMessage);this._destroyPort();this._messageCallbacks.clear()}}class Y{_port;_validateReceivedMessage;_messageCallbacks=new Set;constructor({port:t}){if(!t){throw new e(s.InvalidArgument,"port must be defined")}this._port=t}initialize=({validateReceivedMessage:e})=>{this._validateReceivedMessage=e;this._port.addEventListener("message",this._handleMessage);this._port.start()};_handleMessage=({data:e})=>{if(!this._validateReceivedMessage?.(e)){return}for(const t of this._messageCallbacks){t(e)}};sendMessage=(e,t)=>{this._port?.postMessage(e,{transfer:t})};addMessageHandler=e=>{this._messageCallbacks.add(e)};removeMessageHandler=e=>{this._messageCallbacks.delete(e)};destroy=()=>{this._port.removeEventListener("message",this._handleMessage);this._port.close();this._messageCallbacks.clear()}}const G=e=>(...t)=>{console.log(`✍️ %c${e}%c`,"font-weight: bold;","",...t)};var J={connect:V,WindowMessenger:z,WorkerMessenger:K,PortMessenger:Y,CallOptions:E,Reply:i,PenpalError:e,debug:G,ErrorCode:s};return J}();
|
|
1
|
+
var Penpal=function(){"use strict";class e extends Error{code;constructor(e,t){super(t);this.name="PenpalError";this.code=e}}var t;(function(e){e["Syn"]="SYN";e["Ack1"]="ACK1";e["Ack2"]="ACK2";e["Call"]="CALL";e["Reply"]="REPLY";e["Destroy"]="DESTROY"})(t||(t={}));var s;(function(e){e["ConnectionDestroyed"]="CONNECTION_DESTROYED";e["ConnectionTimeout"]="CONNECTION_TIMEOUT";e["InvalidArgument"]="INVALID_ARGUMENT";e["MethodCallTimeout"]="METHOD_CALL_TIMEOUT";e["MethodNotFound"]="METHOD_NOT_FOUND";e["TransmissionFailed"]="TRANSMISSION_FAILED"})(s||(s={}));var n;(function(e){e["DataCloneError"]="DataCloneError"})(n||(n={}));const r=t=>({name:t.name,message:t.message,stack:t.stack,penpalCode:t instanceof e?t.code:undefined});const a=({name:t,message:s,stack:n,penpalCode:r})=>{const a=r?new e(r,s):new Error(s);a.name=t;a.stack=n;return a};const o=Symbol("Reply");class i{value;transferables;[o]=o;constructor(e,t){this.value=e;this.transferables=t?.transferables}}var l="penpal";const d=e=>typeof e==="object"&&e!==null;const c=e=>typeof e==="function";const h=e=>d(e)&&e.namespace===l;const g=e=>e.type===t.Syn;const u=e=>e.type===t.Ack1;const m=e=>e.type===t.Ack2;const p=e=>e.type===t.Call;const f=e=>e.type===t.Reply;const _=e=>e.type===t.Destroy;const w=(e,t=[])=>{const s=[];for(const n of Object.keys(e)){const r=e[n];if(c(r)){s.push([...t,n])}else if(d(r)){s.push(...w(r,[...t,n]))}}return s};const v=(e,t)=>{const s=e.reduce(((e,t)=>d(e)?e[t]:undefined),t);return c(s)?s:undefined};const y=e=>e.join(".");const M=(e,s,n)=>({namespace:l,channel:e,type:t.Reply,callId:s,isError:true,...n instanceof Error?{value:r(n),isSerializedErrorInstance:true}:{value:n}});const C=(r,a,o,d)=>{let c=false;const h=async h=>{if(c){return}if(!p(h)){return}d?.(`Received ${y(h.methodPath)}() call`,h);const{methodPath:g,args:u,id:m}=h;let f;let _;try{const n=v(g,a);if(!n){throw new e(s.MethodNotFound,`Method \`${y(g)}\` is not found.`)}let r=await n(...u);if(r instanceof i){_=r.transferables;r=await r.value}f={namespace:l,channel:o,type:t.Reply,callId:m,value:r}}catch(e){f=M(o,m,e)}if(c){return}try{d?.(`Sending ${y(g)}() reply`,f);r.sendMessage(f,_)}catch(e){if(e.name===n.DataCloneError){f=M(o,m,e);d?.(`Sending ${y(g)}() reply`,f);r.sendMessage(f)}throw e}};r.addMessageHandler(h);return()=>{c=true;r.removeMessageHandler(h)}};var k=crypto.randomUUID?.bind(crypto)??(()=>new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-"));const R=Symbol("CallOptions");class E{transferables;timeout;[R]=R;constructor(e){this.transferables=e?.transferables;this.timeout=e?.timeout}}const P=(e,t,s=[])=>new Proxy(s?()=>{}:Object.create(null),{get(n,r){if(r==="then"){return}return P(e,t,[...s,r])},apply(n,r,a){if(t){const e=s.at(-1);const r=n[e];if(c(r)){t(`You may be attempting to call the native `+`\`${e}\` method which is not supported. Call `+`will be sent to remote.`)}}return e(s,a)}});const b=t=>new e(s.ConnectionDestroyed,`Method call ${y(t)}() failed due to destroyed connection`);const O=(n,r,o)=>{let i=false;const d=new Map;const c=e=>{if(!f(e)){return}const{callId:t,value:s,isError:n,isSerializedErrorInstance:r}=e;const i=d.get(t);if(!i){return}d.delete(t);o?.(`Received ${y(i.methodPath)}() call`,e);if(n){i.reject(r?a(s):s)}else{i.resolve(s)}};n.addMessageHandler(c);const h=P(((a,c)=>{if(i){throw b(a)}const h=k();const g=c[c.length-1];const u=g instanceof E;const{timeout:m,transferables:p}=u?g:{};const f=u?c.slice(0,-1):c;return new Promise(((i,c)=>{const g=m!==undefined?window.setTimeout((()=>{d.delete(h);c(new e(s.MethodCallTimeout,`Method call ${y(a)}() timed out after ${m}ms`))}),m):undefined;d.set(h,{methodPath:a,resolve:i,reject:c,timeoutId:g});try{const e={namespace:l,channel:r,type:t.Call,id:h,methodPath:a,args:f};o?.(`Sending ${y(a)}() call`,e);n.sendMessage(e,p)}catch(t){c(new e(s.TransmissionFailed,t.message))}}))}),o);const g=()=>{i=true;n.removeMessageHandler(c);for(const{methodPath:e,reject:t,timeoutId:s}of d.values()){clearTimeout(s);t(b(e))}d.clear()};return{remoteProxy:h,destroy:g}};const S=()=>{let e;let t;const s=new Promise(((s,n)=>{e=s;t=n}));return{promise:s,resolve:e,reject:t}};class A extends Error{constructor(e){super(`You've hit a bug in Penpal. Please file an issue with the following information: ${e}`)}}const I="deprecated-penpal";var T;(function(e){e["Call"]="call";e["Reply"]="reply";e["Syn"]="syn";e["SynAck"]="synAck";e["Ack"]="ack"})(T||(T={}));var N;(function(e){e["Fulfilled"]="fulfilled";e["Rejected"]="rejected"})(N||(N={}));const F=e=>d(e)&&"penpal"in e;const D=e=>e.split(".");const L=e=>e.join(".");const $=e=>new A(`Unexpected message to translate: ${JSON.stringify(e)}`);const j=e=>{if(e.penpal===T.Syn){return{namespace:l,channel:undefined,type:t.Syn,participantId:I}}if(e.penpal===T.Ack){return{namespace:l,channel:undefined,type:t.Ack2}}if(e.penpal===T.Call){return{namespace:l,channel:undefined,type:t.Call,id:e.id,methodPath:D(e.methodName),args:e.args}}if(e.penpal===T.Reply){if(e.resolution===N.Fulfilled){return{namespace:l,channel:undefined,type:t.Reply,callId:e.id,value:e.returnValue}}else{return{namespace:l,channel:undefined,type:t.Reply,callId:e.id,isError:true,...e.returnValueIsError?{value:e.returnValue,isSerializedErrorInstance:true}:{value:e.returnValue}}}}throw $(e)};const H=e=>{if(u(e)){return{penpal:T.SynAck,methodNames:e.methodPaths.map(L)}}if(p(e)){return{penpal:T.Call,id:e.id,methodName:L(e.methodPath),args:e.args}}if(f(e)){if(e.isError){return{penpal:T.Reply,id:e.callId,resolution:N.Rejected,...e.isSerializedErrorInstance?{returnValue:e.value,returnValueIsError:true}:{returnValue:e.value}}}else{return{penpal:T.Reply,id:e.callId,resolution:N.Fulfilled,returnValue:e.value}}}throw $(e)};const W=({messenger:n,methods:r,timeout:a,channel:o,log:i})=>{const d=k();let c;const h=[];let p=false;const f=w(r);const{promise:_,resolve:v,reject:y}=S();const M=a!==undefined?setTimeout((()=>{y(new e(s.ConnectionTimeout,`Connection timed out after ${a}ms`))}),a):undefined;const R=()=>{for(const e of h){e()}};const E=()=>{if(p){return}h.push(C(n,r,o,i));const{remoteProxy:e,destroy:t}=O(n,o,i);h.push(t);clearTimeout(M);p=true;v({remoteProxy:e,destroy:R})};const P=()=>{const r={namespace:l,type:t.Syn,channel:o,participantId:d};i?.(`Sending handshake SYN`,r);try{n.sendMessage(r)}catch(t){y(new e(s.TransmissionFailed,t.message))}};const b=r=>{i?.(`Received handshake SYN`,r);if(r.participantId===c&&c!==I){return}c=r.participantId;P();const a=d>c||c===I;if(!a){return}const h={namespace:l,channel:o,type:t.Ack1,methodPaths:f};i?.(`Sending handshake ACK1`,h);try{n.sendMessage(h)}catch(t){y(new e(s.TransmissionFailed,t.message));return}};const A=r=>{i?.(`Received handshake ACK1`,r);const a={namespace:l,channel:o,type:t.Ack2};i?.(`Sending handshake ACK2`,a);try{n.sendMessage(a)}catch(t){y(new e(s.TransmissionFailed,t.message));return}E()};const T=e=>{i?.(`Received handshake ACK2`,e);E()};const N=e=>{if(g(e)){b(e)}if(u(e)){A(e)}if(m(e)){T(e)}};n.addMessageHandler(N);h.push((()=>n.removeMessageHandler(N)));P();return _};const U=e=>{let t=false;let s;return(...n)=>{if(!t){t=true;s=e(...n)}return s}};const x=new WeakSet;const V=({messenger:n,methods:r={},timeout:a,channel:o,log:i})=>{if(!n){throw new e(s.InvalidArgument,"messenger must be defined")}if(x.has(n)){throw new e(s.InvalidArgument,"A messenger can only be used for a single connection")}x.add(n);const d=[n.destroy];const c=U((e=>{if(e){const e={namespace:l,channel:o,type:t.Destroy};try{n.sendMessage(e)}catch(e){}}for(const e of d){e()}i?.("Connection destroyed")}));const g=e=>h(e)&&e.channel===o;const u=(async()=>{try{n.initialize({log:i,validateReceivedMessage:g});n.addMessageHandler((e=>{if(_(e)){c(false)}}));const{remoteProxy:e,destroy:t}=await W({messenger:n,methods:r,timeout:a,channel:o,log:i});d.push(t);return e}catch(e){c(true);throw e}})();return{promise:u,destroy:()=>{c(true)}}};class z{_remoteWindow;_allowedOrigins;_log;_validateReceivedMessage;_concreteRemoteOrigin;_messageCallbacks=new Set;_port;_isChildUsingDeprecatedProtocol=false;constructor({remoteWindow:t,allowedOrigins:n}){if(!t){throw new e(s.InvalidArgument,"remoteWindow must be defined")}this._remoteWindow=t;this._allowedOrigins=n?.length?n:[window.origin]}initialize=({log:e,validateReceivedMessage:t})=>{this._log=e;this._validateReceivedMessage=t;window.addEventListener("message",this._handleMessageFromRemoteWindow)};_isAllowedOrigin=e=>this._allowedOrigins.some((t=>t instanceof RegExp?t.test(e):t===e||t==="*"));_getOriginForSendingMessage=e=>{if(g(e)){return this._allowedOrigins.length>1||this._allowedOrigins[0]instanceof RegExp?"*":this._allowedOrigins[0]}if(!this._concreteRemoteOrigin){throw new A("Concrete remote origin not set")}return this._concreteRemoteOrigin==="null"&&this._allowedOrigins.includes("*")?"*":this._concreteRemoteOrigin};_destroyPort=()=>{this._port?.removeEventListener("message",this._handleMessageFromPort);this._port?.close();this._port=undefined};_handleMessageFromRemoteWindow=({source:e,origin:t,ports:s,data:n})=>{if(e!==this._remoteWindow){return}if(F(n)){this._log?.("Please upgrade the child window to the latest version of Penpal.");this._isChildUsingDeprecatedProtocol=true;n=j(n)}if(!this._validateReceivedMessage?.(n)){return}if(!this._isAllowedOrigin(t)){this._log?.(`Received a message from origin \`${t}\` which did not match `+`allowed origins \`[${this._allowedOrigins.join(", ")}]\``);return}if(g(n)){this._destroyPort();this._concreteRemoteOrigin=t}if(m(n)&&!this._isChildUsingDeprecatedProtocol){this._port=s[0];if(!this._port){throw new A("No port received on ACK2")}this._port.addEventListener("message",this._handleMessageFromPort);this._port.start()}for(const e of this._messageCallbacks){e(n)}};_handleMessageFromPort=({data:e})=>{if(!this._validateReceivedMessage?.(e)){return}for(const t of this._messageCallbacks){t(e)}};sendMessage=(e,t)=>{if(g(e)){const s=this._getOriginForSendingMessage(e);this._remoteWindow.postMessage(e,{targetOrigin:s,transfer:t});return}if(u(e)||this._isChildUsingDeprecatedProtocol){const s=this._isChildUsingDeprecatedProtocol?H(e):e;const n=this._getOriginForSendingMessage(e);this._remoteWindow.postMessage(s,{targetOrigin:n,transfer:t});return}if(m(e)){const{port1:s,port2:n}=new MessageChannel;this._port=s;s.addEventListener("message",this._handleMessageFromPort);s.start();const r=[n,...t||[]];const a=this._getOriginForSendingMessage(e);this._remoteWindow.postMessage(e,{targetOrigin:a,transfer:r});return}if(this._port){this._port.postMessage(e,{transfer:t});return}throw new A("Port is undefined")};addMessageHandler=e=>{this._messageCallbacks.add(e)};removeMessageHandler=e=>{this._messageCallbacks.delete(e)};destroy=()=>{window.removeEventListener("message",this._handleMessageFromRemoteWindow);this._destroyPort();this._messageCallbacks.clear()}}class K{_worker;_validateReceivedMessage;_messageCallbacks=new Set;_port;constructor({worker:t}){if(!t){throw new e(s.InvalidArgument,"worker must be defined")}this._worker=t}initialize=({validateReceivedMessage:e})=>{this._validateReceivedMessage=e;this._worker.addEventListener("message",this._handleMessage)};_destroyPort=()=>{this._port?.removeEventListener("message",this._handleMessage);this._port?.close();this._port=undefined};_handleMessage=({ports:e,data:t})=>{if(!this._validateReceivedMessage?.(t)){return}if(g(t)){this._destroyPort()}if(m(t)){this._port=e[0];if(!this._port){throw new A("No port received on ACK2")}this._port.addEventListener("message",this._handleMessage);this._port.start()}for(const e of this._messageCallbacks){e(t)}};sendMessage=(e,t)=>{if(g(e)||u(e)){this._worker.postMessage(e,{transfer:t});return}if(m(e)){const{port1:s,port2:n}=new MessageChannel;this._port=s;s.addEventListener("message",this._handleMessage);s.start();this._worker.postMessage(e,{transfer:[n,...t||[]]});return}if(this._port){this._port.postMessage(e,{transfer:t});return}throw new A("Port is undefined")};addMessageHandler=e=>{this._messageCallbacks.add(e)};removeMessageHandler=e=>{this._messageCallbacks.delete(e)};destroy=()=>{this._worker.removeEventListener("message",this._handleMessage);this._destroyPort();this._messageCallbacks.clear()}}class Y{_port;_validateReceivedMessage;_messageCallbacks=new Set;constructor({port:t}){if(!t){throw new e(s.InvalidArgument,"port must be defined")}this._port=t}initialize=({validateReceivedMessage:e})=>{this._validateReceivedMessage=e;this._port.addEventListener("message",this._handleMessage);this._port.start()};_handleMessage=({data:e})=>{if(!this._validateReceivedMessage?.(e)){return}for(const t of this._messageCallbacks){t(e)}};sendMessage=(e,t)=>{this._port?.postMessage(e,{transfer:t})};addMessageHandler=e=>{this._messageCallbacks.add(e)};removeMessageHandler=e=>{this._messageCallbacks.delete(e)};destroy=()=>{this._port.removeEventListener("message",this._handleMessage);this._port.close();this._messageCallbacks.clear()}}const G=e=>(...t)=>{console.log(`✍️ %c${e}%c`,"font-weight: bold;","",...t)};var J={connect:V,WindowMessenger:z,WorkerMessenger:K,PortMessenger:Y,CallOptions:E,Reply:i,PenpalError:e,debug:G,ErrorCode:s};return J}();
|
package/dist/penpal.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Penpal","PenpalError","Error","code","constructor","message","super","this","name","MessageType","ErrorCode","NativeErrorName","serializeError","error","stack","penpalCode","undefined","deserializeError","deserializedError","brand$1","Symbol","Reply","value","transferables","options","namespace","isObject","isFunction","isMessage","data","isSynMessage","type","Syn","isAck1Message","Ack1","isAck2Message","Ack2","isCallMessage","Call","isReplyMessage","isDestroyMessage","Destroy","extractMethodPathsFromMethods","methods","currentPath","methodPaths","key","Object","keys","push","getMethodAtMethodPath","methodPath","result","reduce","acc","pathSegment","formatMethodPath","join","createErrorReplyMessage","channel","callId","isError","isSerializedErrorInstance","connectCallHandler","messenger","log","isDestroyed","handleMessage","async","args","id","replyMessage","method","MethodNotFound","sendMessage","DataCloneError","addMessageHandler","removeMessageHandler","generateId","crypto","randomUUID","bind","Array","fill","map","Math","floor","random","Number","MAX_SAFE_INTEGER","toString","brand","CallOptions","timeout","createRemoteProxy","callback","path","Proxy","create","get","_target","prop","apply","target","_thisArg","lastPathSegment","at","builtInFunction","getDestroyedConnectionMethodCallError","ConnectionDestroyed","connectRemoteProxy","replyHandlers","Map","replyHandler","delete","reject","resolve","remoteProxy","lastArg","length","lastArgIsOptions","argsWithoutOptions","slice","Promise","timeoutId","window","setTimeout","MethodCallTimeout","set","callMessage","TransmissionFailed","destroy","values","clearTimeout","clear","getPromiseWithResolvers","promise","res","rej","PenpalBugError","DEPRECATED_PENPAL_PARTICIPANT_ID","DeprecatedMessageType","DeprecatedResolution","isDeprecatedMessage","upgradeMethodPath","split","downgradeMethodPath","getUnexpectedMessageError","JSON","stringify","upgradeMessage","penpal","participantId","Ack","methodName","resolution","Fulfilled","returnValue","returnValueIsError","downgradeMessage","SynAck","methodNames","Rejected","shakeHands","remoteParticipantId","destroyHandlers","isComplete","ConnectionTimeout","destroyHandler","connectCallHandlerAndMethodProxies","destroyMethodProxies","sendSynMessage","synMessage","handleSynMessage","isHandshakeLeader","ack1Message","handleAck1Message","ack2Message","handleAck2Message","once","fn","isCalled","usedMessengers","WeakSet","connect","InvalidArgument","has","add","connectionDestroyedHandlers","destroyConnection","notifyOtherParticipant","destroyMessage","_","connectionDestroyedHandler","validateReceivedMessage","initialize","WindowMessenger","_remoteWindow","_allowedOrigins","_log","_validateReceivedMessage","_concreteRemoteOrigin","_messageCallbacks","Set","_port","_isChildUsingDeprecatedProtocol","remoteWindow","allowedOrigins","origin","addEventListener","_handleMessageFromRemoteWindow","_isAllowedOrigin","some","allowedOrigin","RegExp","test","_getOriginForSendingMessage","includes","_destroyPort","removeEventListener","_handleMessageFromPort","close","source","ports","start","originForSending","postMessage","targetOrigin","transfer","payload","port1","port2","MessageChannel","transferablesToSend","WorkerMessenger","_worker","worker","_handleMessage","PortMessenger","port","debug","prefix","console","indexForBundle"],"sources":["dist/penpal.js"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Penpal","PenpalError","Error","code","constructor","message","super","this","name","MessageType","ErrorCode","NativeErrorName","serializeError","error","stack","penpalCode","undefined","deserializeError","deserializedError","brand$1","Symbol","Reply","value","transferables","options","namespace","isObject","isFunction","isMessage","data","isSynMessage","type","Syn","isAck1Message","Ack1","isAck2Message","Ack2","isCallMessage","Call","isReplyMessage","isDestroyMessage","Destroy","extractMethodPathsFromMethods","methods","currentPath","methodPaths","key","Object","keys","push","getMethodAtMethodPath","methodPath","result","reduce","acc","pathSegment","formatMethodPath","join","createErrorReplyMessage","channel","callId","isError","isSerializedErrorInstance","connectCallHandler","messenger","log","isDestroyed","handleMessage","async","args","id","replyMessage","method","MethodNotFound","sendMessage","DataCloneError","addMessageHandler","removeMessageHandler","generateId","crypto","randomUUID","bind","Array","fill","map","Math","floor","random","Number","MAX_SAFE_INTEGER","toString","brand","CallOptions","timeout","createRemoteProxy","callback","path","Proxy","create","get","_target","prop","apply","target","_thisArg","lastPathSegment","at","builtInFunction","getDestroyedConnectionMethodCallError","ConnectionDestroyed","connectRemoteProxy","replyHandlers","Map","replyHandler","delete","reject","resolve","remoteProxy","lastArg","length","lastArgIsOptions","argsWithoutOptions","slice","Promise","timeoutId","window","setTimeout","MethodCallTimeout","set","callMessage","TransmissionFailed","destroy","values","clearTimeout","clear","getPromiseWithResolvers","promise","res","rej","PenpalBugError","DEPRECATED_PENPAL_PARTICIPANT_ID","DeprecatedMessageType","DeprecatedResolution","isDeprecatedMessage","upgradeMethodPath","split","downgradeMethodPath","getUnexpectedMessageError","JSON","stringify","upgradeMessage","penpal","participantId","Ack","methodName","resolution","Fulfilled","returnValue","returnValueIsError","downgradeMessage","SynAck","methodNames","Rejected","shakeHands","remoteParticipantId","destroyHandlers","isComplete","ConnectionTimeout","destroyHandler","connectCallHandlerAndMethodProxies","destroyMethodProxies","sendSynMessage","synMessage","handleSynMessage","isHandshakeLeader","ack1Message","handleAck1Message","ack2Message","handleAck2Message","once","fn","isCalled","usedMessengers","WeakSet","connect","InvalidArgument","has","add","connectionDestroyedHandlers","destroyConnection","notifyOtherParticipant","destroyMessage","_","connectionDestroyedHandler","validateReceivedMessage","initialize","WindowMessenger","_remoteWindow","_allowedOrigins","_log","_validateReceivedMessage","_concreteRemoteOrigin","_messageCallbacks","Set","_port","_isChildUsingDeprecatedProtocol","remoteWindow","allowedOrigins","origin","addEventListener","_handleMessageFromRemoteWindow","_isAllowedOrigin","some","allowedOrigin","RegExp","test","_getOriginForSendingMessage","includes","_destroyPort","removeEventListener","_handleMessageFromPort","close","source","ports","start","originForSending","postMessage","targetOrigin","transfer","payload","port1","port2","MessageChannel","transferablesToSend","WorkerMessenger","_worker","worker","_handleMessage","PortMessenger","port","debug","prefix","console","indexForBundle"],"sources":["dist/penpal.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -87,7 +87,7 @@ const connectRemoteProxy = (messenger, channel, log) => {
|
|
|
87
87
|
// running tests if we don't disambiguate the browser setTimeout
|
|
88
88
|
// from node's setTimeout. There may be a better way to configure
|
|
89
89
|
// Karma + Rollup + Typescript to avoid node type leakage.
|
|
90
|
-
const timeoutId = timeout
|
|
90
|
+
const timeoutId = timeout !== undefined
|
|
91
91
|
? window.setTimeout(() => {
|
|
92
92
|
replyHandlers.delete(callId);
|
|
93
93
|
reject(new PenpalError(ErrorCode.MethodCallTimeout, `Method call ${formatMethodPath(methodPath)}() timed out after ${timeout}ms`));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "penpal",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.3",
|
|
4
4
|
"description": "Penpal simplifies communication with iframes, workers, windows, etc. by using promise-based methods on top of postMessage.",
|
|
5
5
|
"author": "Aaron Hardy <aaron@aaronhardy.com>",
|
|
6
6
|
"license": "MIT",
|