@prismicio/simulator 0.2.1 → 0.2.2
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/dist/channel/ChannelReceiver.cjs +3 -0
- package/dist/channel/ChannelReceiver.cjs.map +1 -1
- package/dist/channel/ChannelReceiver.d.cts.map +1 -1
- package/dist/channel/ChannelReceiver.d.ts.map +1 -1
- package/dist/channel/ChannelReceiver.js +3 -0
- package/dist/channel/ChannelReceiver.js.map +1 -1
- package/package.json +1 -1
- package/src/channel/ChannelReceiver.ts +16 -0
|
@@ -31,6 +31,9 @@ var ChannelReceiver = class extends require_ChannelNetwork.ChannelNetwork {
|
|
|
31
31
|
}
|
|
32
32
|
/** Handles public messages */
|
|
33
33
|
_onPublicMessage(event) {
|
|
34
|
+
if (process.env.NODE_ENV !== "development") {
|
|
35
|
+
if (!event.origin.startsWith("https://") || !(event.origin.endsWith(".prismic.io") || event.origin.endsWith(".wroom.io") || event.origin.endsWith(".marketing-tools-wroom.com") || event.origin.endsWith(".dev-tools-wroom.com") || event.origin.endsWith(".platform-wroom.com"))) return;
|
|
36
|
+
}
|
|
34
37
|
try {
|
|
35
38
|
const message = require_messages.validateMessage(event.data);
|
|
36
39
|
if (require_messages.isRequestMessage(message)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelReceiver.cjs","names":["ChannelNetwork","InternalReceiverRequestType","validateMessage","isRequestMessage","InternalEmitterRequestType","createSuccessResponseMessage","createErrorResponseMessage","NotReadyError"],"sources":["../../src/channel/ChannelReceiver.ts"],"sourcesContent":["import type { ChannelNetworkOptions, PostRequestOptions } from \"./ChannelNetwork\"\nimport { ChannelNetwork } from \"./ChannelNetwork\"\nimport { NotReadyError } from \"./errors\"\nimport {\n\tcreateErrorResponseMessage,\n\tcreateSuccessResponseMessage,\n\tisRequestMessage,\n\tvalidateMessage,\n} from \"./messages\"\nimport type {\n\tExtractSuccessResponseMessage,\n\tInternalEmitterTransactions,\n\tRequestMessage,\n\tResponseMessage,\n\tSuccessResponseMessage,\n\tTransactionsHandlers,\n\tUnknownRequestMessage,\n\tUnknownResponseMessage,\n\tUnknownTransaction,\n} from \"./types\"\nimport { InternalEmitterRequestType, InternalReceiverRequestType } from \"./types\"\n\nexport type ChannelReceiverOptions = {\n\treadyTimeout: number\n}\n\nexport const channelReceiverDefaultOptions: ChannelReceiverOptions &\n\tPartial<ChannelNetworkOptions> = {\n\treadyTimeout: 20000,\n\trequestIDPrefix: \"receiver-\",\n}\n\nexport type AllChannelReceiverOptions = ChannelReceiverOptions & ChannelNetworkOptions\n\nexport abstract class ChannelReceiver<\n\tTEmitterTransactions extends Record<string, UnknownTransaction> = Record<string, never>,\n\tTOptions extends Record<string, unknown> = Record<string, unknown>,\n> extends ChannelNetwork<TEmitterTransactions, ChannelReceiverOptions & TOptions> {\n\tprivate _ready = false\n\n\tconstructor(\n\t\trequestHandlers: TransactionsHandlers<TEmitterTransactions>,\n\t\toptions: Partial<AllChannelReceiverOptions> & TOptions,\n\t) {\n\t\tsuper(requestHandlers, { ...channelReceiverDefaultOptions, ...options })\n\n\t\twindow.addEventListener(\"message\", (event) => {\n\t\t\tthis._onPublicMessage(event)\n\t\t})\n\t}\n\n\t/** Tells the emitter that receiver is ready */\n\tpublic async ready(): Promise<SuccessResponseMessage> {\n\t\tif (window.parent === window) {\n\t\t\tthrow new Error(\"Receiver is currently not embedded as an iframe\")\n\t\t}\n\n\t\tthis._ready = false\n\n\t\tconst request = this.createRequestMessage(InternalReceiverRequestType.Ready, undefined)\n\n\t\tconst response = await this.postRequest<\n\t\t\tRequestMessage<InternalReceiverRequestType.Ready>,\n\t\t\tResponseMessage\n\t\t>(\n\t\t\trequest,\n\t\t\t(request) => {\n\t\t\t\twindow.parent.postMessage(request, \"*\")\n\t\t\t},\n\t\t\t{\n\t\t\t\ttimeout: this.options.readyTimeout,\n\t\t\t},\n\t\t)\n\n\t\tthis._ready = true\n\n\t\treturn response\n\t}\n\n\t/** Handles public messages */\n\tprivate _onPublicMessage(event: MessageEvent<unknown>): void {\n\t\ttry {\n\t\t\tconst message = validateMessage(event.data)\n\n\t\t\tif (isRequestMessage(message)) {\n\t\t\t\tif (this.options.debug) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.debug(event.data)\n\t\t\t\t}\n\n\t\t\t\tswitch (message.type) {\n\t\t\t\t\tcase InternalEmitterRequestType.Connect:\n\t\t\t\t\t\t// Set port\n\t\t\t\t\t\tthis.port = event.ports[0]\n\n\t\t\t\t\t\t// Update options\n\t\t\t\t\t\tconst { data } = message as InternalEmitterTransactions[\"connect\"][\"request\"]\n\t\t\t\t\t\tthis.options = {\n\t\t\t\t\t\t\t...this.options,\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\t// Ensure core options remain the same\n\t\t\t\t\t\t\tdebug: this.options.debug,\n\t\t\t\t\t\t\trequestIDPrefix: this.options.requestIDPrefix,\n\t\t\t\t\t\t\treadyTimeout: this.options.readyTimeout,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst response = createSuccessResponseMessage(message.requestID, undefined)\n\n\t\t\t\t\t\tthis.postResponse(response)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.postResponse(\n\t\t\t\t\t\t\tcreateErrorResponseMessage(message.requestID, undefined),\n\t\t\t\t\t\t\t(response) => {\n\t\t\t\t\t\t\t\t;(event.source as WindowProxy).postMessage(response, event.origin)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Forward response messages to default message handler if necessary\n\t\t\t\tif (!this._ready) {\n\t\t\t\t\tthis.onMessage(event)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof TypeError) {\n\t\t\t\t// Ignore unknown messages\n\t\t\t} else {\n\t\t\t\t// Should not be possible, but who knows :shrug:\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected postFormattedRequest<\n\t\tTRequest extends UnknownRequestMessage,\n\t\tTResponse extends UnknownResponseMessage,\n\t>(\n\t\ttype: TRequest[\"type\"],\n\t\tdata?: TRequest[\"data\"],\n\t\toptions: PostRequestOptions = {},\n\t): Promise<ExtractSuccessResponseMessage<TResponse>> {\n\t\tif (!this._ready) {\n\t\t\tthrow new NotReadyError(\"Receiver is not ready, use `ChannelReceiver.ready()` first\")\n\t\t}\n\n\t\treturn this.postRequest(this.createRequestMessage(type, data), undefined, options)\n\t}\n}\n"],"mappings":";;;;;AA0BA,MAAa,gCACqB;CACjC,cAAc;CACd,iBAAiB;CACjB;AAID,IAAsB,kBAAtB,cAGUA,uBAAAA,eAAwE;CACjF,SAAiB;CAEjB,YACC,iBACA,SACC;AACD,QAAM,iBAAiB;GAAE,GAAG;GAA+B,GAAG;GAAS,CAAC;AAExE,SAAO,iBAAiB,YAAY,UAAU;AAC7C,QAAK,iBAAiB,MAAM;IAC3B;;;CAIH,MAAa,QAAyC;AACrD,MAAI,OAAO,WAAW,OACrB,OAAM,IAAI,MAAM,kDAAkD;AAGnE,OAAK,SAAS;EAEd,MAAM,UAAU,KAAK,qBAAqBC,cAAAA,4BAA4B,OAAO,KAAA,EAAU;EAEvF,MAAM,WAAW,MAAM,KAAK,YAI3B,UACC,YAAY;AACZ,UAAO,OAAO,YAAY,SAAS,IAAI;KAExC,EACC,SAAS,KAAK,QAAQ,cACtB,CACD;AAED,OAAK,SAAS;AAEd,SAAO;;;CAIR,iBAAyB,OAAoC;AAC5D,MAAI;GACH,MAAM,UAAUC,iBAAAA,gBAAgB,MAAM,KAAK;AAE3C,OAAIC,iBAAAA,iBAAiB,QAAQ,EAAE;AAC9B,QAAI,KAAK,QAAQ,MAEhB,SAAQ,MAAM,MAAM,KAAK;AAG1B,YAAQ,QAAQ,MAAhB;KACC,KAAKC,cAAAA,2BAA2B;AAE/B,WAAK,OAAO,MAAM,MAAM;MAGxB,MAAM,EAAE,SAAS;AACjB,WAAK,UAAU;OACd,GAAG,KAAK;OACR,GAAG;OAEH,OAAO,KAAK,QAAQ;OACpB,iBAAiB,KAAK,QAAQ;OAC9B,cAAc,KAAK,QAAQ;OAC3B;MAED,MAAM,WAAWC,iBAAAA,6BAA6B,QAAQ,WAAW,KAAA,EAAU;AAE3E,WAAK,aAAa,SAAS;AAC3B;KAED;AACC,WAAK,aACJC,iBAAAA,2BAA2B,QAAQ,WAAW,KAAA,EAAU,GACvD,aAAa;AACX,aAAM,OAAuB,YAAY,UAAU,MAAM,OAAO;QAEnE;AACD;;cAIE,CAAC,KAAK,OACT,MAAK,UAAU,MAAM;WAGf,OAAO;AACf,OAAI,iBAAiB,WAAW,OAI/B,OAAM;;;CAKT,qBAIC,MACA,MACA,UAA8B,EAAE,EACoB;AACpD,MAAI,CAAC,KAAK,OACT,OAAM,IAAIC,eAAAA,cAAc,6DAA6D;AAGtF,SAAO,KAAK,YAAY,KAAK,qBAAqB,MAAM,KAAK,EAAE,KAAA,GAAW,QAAQ"}
|
|
1
|
+
{"version":3,"file":"ChannelReceiver.cjs","names":["ChannelNetwork","InternalReceiverRequestType","validateMessage","isRequestMessage","InternalEmitterRequestType","createSuccessResponseMessage","createErrorResponseMessage","NotReadyError"],"sources":["../../src/channel/ChannelReceiver.ts"],"sourcesContent":["import type { ChannelNetworkOptions, PostRequestOptions } from \"./ChannelNetwork\"\nimport { ChannelNetwork } from \"./ChannelNetwork\"\nimport { NotReadyError } from \"./errors\"\nimport {\n\tcreateErrorResponseMessage,\n\tcreateSuccessResponseMessage,\n\tisRequestMessage,\n\tvalidateMessage,\n} from \"./messages\"\nimport type {\n\tExtractSuccessResponseMessage,\n\tInternalEmitterTransactions,\n\tRequestMessage,\n\tResponseMessage,\n\tSuccessResponseMessage,\n\tTransactionsHandlers,\n\tUnknownRequestMessage,\n\tUnknownResponseMessage,\n\tUnknownTransaction,\n} from \"./types\"\nimport { InternalEmitterRequestType, InternalReceiverRequestType } from \"./types\"\n\nexport type ChannelReceiverOptions = {\n\treadyTimeout: number\n}\n\nexport const channelReceiverDefaultOptions: ChannelReceiverOptions &\n\tPartial<ChannelNetworkOptions> = {\n\treadyTimeout: 20000,\n\trequestIDPrefix: \"receiver-\",\n}\n\nexport type AllChannelReceiverOptions = ChannelReceiverOptions & ChannelNetworkOptions\n\nexport abstract class ChannelReceiver<\n\tTEmitterTransactions extends Record<string, UnknownTransaction> = Record<string, never>,\n\tTOptions extends Record<string, unknown> = Record<string, unknown>,\n> extends ChannelNetwork<TEmitterTransactions, ChannelReceiverOptions & TOptions> {\n\tprivate _ready = false\n\n\tconstructor(\n\t\trequestHandlers: TransactionsHandlers<TEmitterTransactions>,\n\t\toptions: Partial<AllChannelReceiverOptions> & TOptions,\n\t) {\n\t\tsuper(requestHandlers, { ...channelReceiverDefaultOptions, ...options })\n\n\t\twindow.addEventListener(\"message\", (event) => {\n\t\t\tthis._onPublicMessage(event)\n\t\t})\n\t}\n\n\t/** Tells the emitter that receiver is ready */\n\tpublic async ready(): Promise<SuccessResponseMessage> {\n\t\tif (window.parent === window) {\n\t\t\tthrow new Error(\"Receiver is currently not embedded as an iframe\")\n\t\t}\n\n\t\tthis._ready = false\n\n\t\tconst request = this.createRequestMessage(InternalReceiverRequestType.Ready, undefined)\n\n\t\tconst response = await this.postRequest<\n\t\t\tRequestMessage<InternalReceiverRequestType.Ready>,\n\t\t\tResponseMessage\n\t\t>(\n\t\t\trequest,\n\t\t\t(request) => {\n\t\t\t\twindow.parent.postMessage(request, \"*\")\n\t\t\t},\n\t\t\t{\n\t\t\t\ttimeout: this.options.readyTimeout,\n\t\t\t},\n\t\t)\n\n\t\tthis._ready = true\n\n\t\treturn response\n\t}\n\n\t/** Handles public messages */\n\tprivate _onPublicMessage(event: MessageEvent<unknown>): void {\n\t\tif (process.env.NODE_ENV !== \"development\") {\n\t\t\tif (\n\t\t\t\t!event.origin.startsWith(\"https://\") ||\n\t\t\t\t!(\n\t\t\t\t\tevent.origin.endsWith(\".prismic.io\") ||\n\t\t\t\t\tevent.origin.endsWith(\".wroom.io\") ||\n\t\t\t\t\tevent.origin.endsWith(\".marketing-tools-wroom.com\") ||\n\t\t\t\t\tevent.origin.endsWith(\".dev-tools-wroom.com\") ||\n\t\t\t\t\tevent.origin.endsWith(\".platform-wroom.com\")\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// Ignore messages from non-allowed origins in non-development environment\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst message = validateMessage(event.data)\n\n\t\t\tif (isRequestMessage(message)) {\n\t\t\t\tif (this.options.debug) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.debug(event.data)\n\t\t\t\t}\n\n\t\t\t\tswitch (message.type) {\n\t\t\t\t\tcase InternalEmitterRequestType.Connect:\n\t\t\t\t\t\t// Set port\n\t\t\t\t\t\tthis.port = event.ports[0]\n\n\t\t\t\t\t\t// Update options\n\t\t\t\t\t\tconst { data } = message as InternalEmitterTransactions[\"connect\"][\"request\"]\n\t\t\t\t\t\tthis.options = {\n\t\t\t\t\t\t\t...this.options,\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\t// Ensure core options remain the same\n\t\t\t\t\t\t\tdebug: this.options.debug,\n\t\t\t\t\t\t\trequestIDPrefix: this.options.requestIDPrefix,\n\t\t\t\t\t\t\treadyTimeout: this.options.readyTimeout,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst response = createSuccessResponseMessage(message.requestID, undefined)\n\n\t\t\t\t\t\tthis.postResponse(response)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.postResponse(\n\t\t\t\t\t\t\tcreateErrorResponseMessage(message.requestID, undefined),\n\t\t\t\t\t\t\t(response) => {\n\t\t\t\t\t\t\t\t;(event.source as WindowProxy).postMessage(response, event.origin)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Forward response messages to default message handler if necessary\n\t\t\t\tif (!this._ready) {\n\t\t\t\t\tthis.onMessage(event)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof TypeError) {\n\t\t\t\t// Ignore unknown messages\n\t\t\t} else {\n\t\t\t\t// Should not be possible, but who knows :shrug:\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected postFormattedRequest<\n\t\tTRequest extends UnknownRequestMessage,\n\t\tTResponse extends UnknownResponseMessage,\n\t>(\n\t\ttype: TRequest[\"type\"],\n\t\tdata?: TRequest[\"data\"],\n\t\toptions: PostRequestOptions = {},\n\t): Promise<ExtractSuccessResponseMessage<TResponse>> {\n\t\tif (!this._ready) {\n\t\t\tthrow new NotReadyError(\"Receiver is not ready, use `ChannelReceiver.ready()` first\")\n\t\t}\n\n\t\treturn this.postRequest(this.createRequestMessage(type, data), undefined, options)\n\t}\n}\n"],"mappings":";;;;;AA0BA,MAAa,gCACqB;CACjC,cAAc;CACd,iBAAiB;CACjB;AAID,IAAsB,kBAAtB,cAGUA,uBAAAA,eAAwE;CACjF,SAAiB;CAEjB,YACC,iBACA,SACC;AACD,QAAM,iBAAiB;GAAE,GAAG;GAA+B,GAAG;GAAS,CAAC;AAExE,SAAO,iBAAiB,YAAY,UAAU;AAC7C,QAAK,iBAAiB,MAAM;IAC3B;;;CAIH,MAAa,QAAyC;AACrD,MAAI,OAAO,WAAW,OACrB,OAAM,IAAI,MAAM,kDAAkD;AAGnE,OAAK,SAAS;EAEd,MAAM,UAAU,KAAK,qBAAqBC,cAAAA,4BAA4B,OAAO,KAAA,EAAU;EAEvF,MAAM,WAAW,MAAM,KAAK,YAI3B,UACC,YAAY;AACZ,UAAO,OAAO,YAAY,SAAS,IAAI;KAExC,EACC,SAAS,KAAK,QAAQ,cACtB,CACD;AAED,OAAK,SAAS;AAEd,SAAO;;;CAIR,iBAAyB,OAAoC;AAC5D,MAAI,QAAQ,IAAI,aAAa;OAE3B,CAAC,MAAM,OAAO,WAAW,WAAW,IACpC,EACC,MAAM,OAAO,SAAS,cAAc,IACpC,MAAM,OAAO,SAAS,YAAY,IAClC,MAAM,OAAO,SAAS,6BAA6B,IACnD,MAAM,OAAO,SAAS,uBAAuB,IAC7C,MAAM,OAAO,SAAS,sBAAsB,EAI7C;;AAIF,MAAI;GACH,MAAM,UAAUC,iBAAAA,gBAAgB,MAAM,KAAK;AAE3C,OAAIC,iBAAAA,iBAAiB,QAAQ,EAAE;AAC9B,QAAI,KAAK,QAAQ,MAEhB,SAAQ,MAAM,MAAM,KAAK;AAG1B,YAAQ,QAAQ,MAAhB;KACC,KAAKC,cAAAA,2BAA2B;AAE/B,WAAK,OAAO,MAAM,MAAM;MAGxB,MAAM,EAAE,SAAS;AACjB,WAAK,UAAU;OACd,GAAG,KAAK;OACR,GAAG;OAEH,OAAO,KAAK,QAAQ;OACpB,iBAAiB,KAAK,QAAQ;OAC9B,cAAc,KAAK,QAAQ;OAC3B;MAED,MAAM,WAAWC,iBAAAA,6BAA6B,QAAQ,WAAW,KAAA,EAAU;AAE3E,WAAK,aAAa,SAAS;AAC3B;KAED;AACC,WAAK,aACJC,iBAAAA,2BAA2B,QAAQ,WAAW,KAAA,EAAU,GACvD,aAAa;AACX,aAAM,OAAuB,YAAY,UAAU,MAAM,OAAO;QAEnE;AACD;;cAIE,CAAC,KAAK,OACT,MAAK,UAAU,MAAM;WAGf,OAAO;AACf,OAAI,iBAAiB,WAAW,OAI/B,OAAM;;;CAKT,qBAIC,MACA,MACA,UAA8B,EAAE,EACoB;AACpD,MAAI,CAAC,KAAK,OACT,OAAM,IAAIC,eAAAA,cAAc,6DAA6D;AAGtF,SAAO,KAAK,YAAY,KAAK,qBAAqB,MAAM,KAAK,EAAE,KAAA,GAAW,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelReceiver.d.cts","names":[],"sources":["../../src/channel/ChannelReceiver.ts"],"mappings":";;;;KAsBY,sBAAA;EACX,YAAA;AAAA;AAAA,KASW,yBAAA,GAA4B,sBAAA,GAAyB,qBAAA;AAAA,uBAE3C,eAAA,8BACQ,MAAA,SAAe,kBAAA,IAAsB,MAAA,kCACjD,MAAA,oBAA0B,MAAA,2BAClC,cAAA,CAAe,oBAAA,EAAsB,sBAAA,GAAyB,QAAA;EAAA,QAC/D,MAAA;cAGP,eAAA,EAAiB,oBAAA,CAAqB,oBAAA,GACtC,OAAA,EAAS,OAAA,CAAQ,yBAAA,IAA6B,QAAA;;EAUlC,KAAA,CAAA,GAAS,OAAA,CAAQ,sBAAA;EApBuD;EAAA,QAgD7E,gBAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"ChannelReceiver.d.cts","names":[],"sources":["../../src/channel/ChannelReceiver.ts"],"mappings":";;;;KAsBY,sBAAA;EACX,YAAA;AAAA;AAAA,KASW,yBAAA,GAA4B,sBAAA,GAAyB,qBAAA;AAAA,uBAE3C,eAAA,8BACQ,MAAA,SAAe,kBAAA,IAAsB,MAAA,kCACjD,MAAA,oBAA0B,MAAA,2BAClC,cAAA,CAAe,oBAAA,EAAsB,sBAAA,GAAyB,QAAA;EAAA,QAC/D,MAAA;cAGP,eAAA,EAAiB,oBAAA,CAAqB,oBAAA,GACtC,OAAA,EAAS,OAAA,CAAQ,yBAAA,IAA6B,QAAA;;EAUlC,KAAA,CAAA,GAAS,OAAA,CAAQ,sBAAA;EApBuD;EAAA,QAgD7E,gBAAA;EAAA,UAwEE,oBAAA,kBACQ,qBAAA,oBACC,sBAAA,CAAA,CAElB,IAAA,EAAM,QAAA,UACN,IAAA,GAAO,QAAA,UACP,OAAA,GAAS,kBAAA,GACP,OAAA,CAAQ,6BAAA,CAA8B,SAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelReceiver.d.ts","names":[],"sources":["../../src/channel/ChannelReceiver.ts"],"mappings":";;;;KAsBY,sBAAA;EACX,YAAA;AAAA;AAAA,KASW,yBAAA,GAA4B,sBAAA,GAAyB,qBAAA;AAAA,uBAE3C,eAAA,8BACQ,MAAA,SAAe,kBAAA,IAAsB,MAAA,kCACjD,MAAA,oBAA0B,MAAA,2BAClC,cAAA,CAAe,oBAAA,EAAsB,sBAAA,GAAyB,QAAA;EAAA,QAC/D,MAAA;cAGP,eAAA,EAAiB,oBAAA,CAAqB,oBAAA,GACtC,OAAA,EAAS,OAAA,CAAQ,yBAAA,IAA6B,QAAA;;EAUlC,KAAA,CAAA,GAAS,OAAA,CAAQ,sBAAA;EApBuD;EAAA,QAgD7E,gBAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"ChannelReceiver.d.ts","names":[],"sources":["../../src/channel/ChannelReceiver.ts"],"mappings":";;;;KAsBY,sBAAA;EACX,YAAA;AAAA;AAAA,KASW,yBAAA,GAA4B,sBAAA,GAAyB,qBAAA;AAAA,uBAE3C,eAAA,8BACQ,MAAA,SAAe,kBAAA,IAAsB,MAAA,kCACjD,MAAA,oBAA0B,MAAA,2BAClC,cAAA,CAAe,oBAAA,EAAsB,sBAAA,GAAyB,QAAA;EAAA,QAC/D,MAAA;cAGP,eAAA,EAAiB,oBAAA,CAAqB,oBAAA,GACtC,OAAA,EAAS,OAAA,CAAQ,yBAAA,IAA6B,QAAA;;EAUlC,KAAA,CAAA,GAAS,OAAA,CAAQ,sBAAA;EApBuD;EAAA,QAgD7E,gBAAA;EAAA,UAwEE,oBAAA,kBACQ,qBAAA,oBACC,sBAAA,CAAA,CAElB,IAAA,EAAM,QAAA,UACN,IAAA,GAAO,QAAA,UACP,OAAA,GAAS,kBAAA,GACP,OAAA,CAAQ,6BAAA,CAA8B,SAAA;AAAA"}
|
|
@@ -31,6 +31,9 @@ var ChannelReceiver = class extends ChannelNetwork {
|
|
|
31
31
|
}
|
|
32
32
|
/** Handles public messages */
|
|
33
33
|
_onPublicMessage(event) {
|
|
34
|
+
if (process.env.NODE_ENV !== "development") {
|
|
35
|
+
if (!event.origin.startsWith("https://") || !(event.origin.endsWith(".prismic.io") || event.origin.endsWith(".wroom.io") || event.origin.endsWith(".marketing-tools-wroom.com") || event.origin.endsWith(".dev-tools-wroom.com") || event.origin.endsWith(".platform-wroom.com"))) return;
|
|
36
|
+
}
|
|
34
37
|
try {
|
|
35
38
|
const message = validateMessage(event.data);
|
|
36
39
|
if (isRequestMessage(message)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelReceiver.js","names":[],"sources":["../../src/channel/ChannelReceiver.ts"],"sourcesContent":["import type { ChannelNetworkOptions, PostRequestOptions } from \"./ChannelNetwork\"\nimport { ChannelNetwork } from \"./ChannelNetwork\"\nimport { NotReadyError } from \"./errors\"\nimport {\n\tcreateErrorResponseMessage,\n\tcreateSuccessResponseMessage,\n\tisRequestMessage,\n\tvalidateMessage,\n} from \"./messages\"\nimport type {\n\tExtractSuccessResponseMessage,\n\tInternalEmitterTransactions,\n\tRequestMessage,\n\tResponseMessage,\n\tSuccessResponseMessage,\n\tTransactionsHandlers,\n\tUnknownRequestMessage,\n\tUnknownResponseMessage,\n\tUnknownTransaction,\n} from \"./types\"\nimport { InternalEmitterRequestType, InternalReceiverRequestType } from \"./types\"\n\nexport type ChannelReceiverOptions = {\n\treadyTimeout: number\n}\n\nexport const channelReceiverDefaultOptions: ChannelReceiverOptions &\n\tPartial<ChannelNetworkOptions> = {\n\treadyTimeout: 20000,\n\trequestIDPrefix: \"receiver-\",\n}\n\nexport type AllChannelReceiverOptions = ChannelReceiverOptions & ChannelNetworkOptions\n\nexport abstract class ChannelReceiver<\n\tTEmitterTransactions extends Record<string, UnknownTransaction> = Record<string, never>,\n\tTOptions extends Record<string, unknown> = Record<string, unknown>,\n> extends ChannelNetwork<TEmitterTransactions, ChannelReceiverOptions & TOptions> {\n\tprivate _ready = false\n\n\tconstructor(\n\t\trequestHandlers: TransactionsHandlers<TEmitterTransactions>,\n\t\toptions: Partial<AllChannelReceiverOptions> & TOptions,\n\t) {\n\t\tsuper(requestHandlers, { ...channelReceiverDefaultOptions, ...options })\n\n\t\twindow.addEventListener(\"message\", (event) => {\n\t\t\tthis._onPublicMessage(event)\n\t\t})\n\t}\n\n\t/** Tells the emitter that receiver is ready */\n\tpublic async ready(): Promise<SuccessResponseMessage> {\n\t\tif (window.parent === window) {\n\t\t\tthrow new Error(\"Receiver is currently not embedded as an iframe\")\n\t\t}\n\n\t\tthis._ready = false\n\n\t\tconst request = this.createRequestMessage(InternalReceiverRequestType.Ready, undefined)\n\n\t\tconst response = await this.postRequest<\n\t\t\tRequestMessage<InternalReceiverRequestType.Ready>,\n\t\t\tResponseMessage\n\t\t>(\n\t\t\trequest,\n\t\t\t(request) => {\n\t\t\t\twindow.parent.postMessage(request, \"*\")\n\t\t\t},\n\t\t\t{\n\t\t\t\ttimeout: this.options.readyTimeout,\n\t\t\t},\n\t\t)\n\n\t\tthis._ready = true\n\n\t\treturn response\n\t}\n\n\t/** Handles public messages */\n\tprivate _onPublicMessage(event: MessageEvent<unknown>): void {\n\t\ttry {\n\t\t\tconst message = validateMessage(event.data)\n\n\t\t\tif (isRequestMessage(message)) {\n\t\t\t\tif (this.options.debug) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.debug(event.data)\n\t\t\t\t}\n\n\t\t\t\tswitch (message.type) {\n\t\t\t\t\tcase InternalEmitterRequestType.Connect:\n\t\t\t\t\t\t// Set port\n\t\t\t\t\t\tthis.port = event.ports[0]\n\n\t\t\t\t\t\t// Update options\n\t\t\t\t\t\tconst { data } = message as InternalEmitterTransactions[\"connect\"][\"request\"]\n\t\t\t\t\t\tthis.options = {\n\t\t\t\t\t\t\t...this.options,\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\t// Ensure core options remain the same\n\t\t\t\t\t\t\tdebug: this.options.debug,\n\t\t\t\t\t\t\trequestIDPrefix: this.options.requestIDPrefix,\n\t\t\t\t\t\t\treadyTimeout: this.options.readyTimeout,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst response = createSuccessResponseMessage(message.requestID, undefined)\n\n\t\t\t\t\t\tthis.postResponse(response)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.postResponse(\n\t\t\t\t\t\t\tcreateErrorResponseMessage(message.requestID, undefined),\n\t\t\t\t\t\t\t(response) => {\n\t\t\t\t\t\t\t\t;(event.source as WindowProxy).postMessage(response, event.origin)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Forward response messages to default message handler if necessary\n\t\t\t\tif (!this._ready) {\n\t\t\t\t\tthis.onMessage(event)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof TypeError) {\n\t\t\t\t// Ignore unknown messages\n\t\t\t} else {\n\t\t\t\t// Should not be possible, but who knows :shrug:\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected postFormattedRequest<\n\t\tTRequest extends UnknownRequestMessage,\n\t\tTResponse extends UnknownResponseMessage,\n\t>(\n\t\ttype: TRequest[\"type\"],\n\t\tdata?: TRequest[\"data\"],\n\t\toptions: PostRequestOptions = {},\n\t): Promise<ExtractSuccessResponseMessage<TResponse>> {\n\t\tif (!this._ready) {\n\t\t\tthrow new NotReadyError(\"Receiver is not ready, use `ChannelReceiver.ready()` first\")\n\t\t}\n\n\t\treturn this.postRequest(this.createRequestMessage(type, data), undefined, options)\n\t}\n}\n"],"mappings":";;;;;AA0BA,MAAa,gCACqB;CACjC,cAAc;CACd,iBAAiB;CACjB;AAID,IAAsB,kBAAtB,cAGU,eAAwE;CACjF,SAAiB;CAEjB,YACC,iBACA,SACC;AACD,QAAM,iBAAiB;GAAE,GAAG;GAA+B,GAAG;GAAS,CAAC;AAExE,SAAO,iBAAiB,YAAY,UAAU;AAC7C,QAAK,iBAAiB,MAAM;IAC3B;;;CAIH,MAAa,QAAyC;AACrD,MAAI,OAAO,WAAW,OACrB,OAAM,IAAI,MAAM,kDAAkD;AAGnE,OAAK,SAAS;EAEd,MAAM,UAAU,KAAK,qBAAqB,4BAA4B,OAAO,KAAA,EAAU;EAEvF,MAAM,WAAW,MAAM,KAAK,YAI3B,UACC,YAAY;AACZ,UAAO,OAAO,YAAY,SAAS,IAAI;KAExC,EACC,SAAS,KAAK,QAAQ,cACtB,CACD;AAED,OAAK,SAAS;AAEd,SAAO;;;CAIR,iBAAyB,OAAoC;AAC5D,MAAI;GACH,MAAM,UAAU,gBAAgB,MAAM,KAAK;AAE3C,OAAI,iBAAiB,QAAQ,EAAE;AAC9B,QAAI,KAAK,QAAQ,MAEhB,SAAQ,MAAM,MAAM,KAAK;AAG1B,YAAQ,QAAQ,MAAhB;KACC,KAAK,2BAA2B;AAE/B,WAAK,OAAO,MAAM,MAAM;MAGxB,MAAM,EAAE,SAAS;AACjB,WAAK,UAAU;OACd,GAAG,KAAK;OACR,GAAG;OAEH,OAAO,KAAK,QAAQ;OACpB,iBAAiB,KAAK,QAAQ;OAC9B,cAAc,KAAK,QAAQ;OAC3B;MAED,MAAM,WAAW,6BAA6B,QAAQ,WAAW,KAAA,EAAU;AAE3E,WAAK,aAAa,SAAS;AAC3B;KAED;AACC,WAAK,aACJ,2BAA2B,QAAQ,WAAW,KAAA,EAAU,GACvD,aAAa;AACX,aAAM,OAAuB,YAAY,UAAU,MAAM,OAAO;QAEnE;AACD;;cAIE,CAAC,KAAK,OACT,MAAK,UAAU,MAAM;WAGf,OAAO;AACf,OAAI,iBAAiB,WAAW,OAI/B,OAAM;;;CAKT,qBAIC,MACA,MACA,UAA8B,EAAE,EACoB;AACpD,MAAI,CAAC,KAAK,OACT,OAAM,IAAI,cAAc,6DAA6D;AAGtF,SAAO,KAAK,YAAY,KAAK,qBAAqB,MAAM,KAAK,EAAE,KAAA,GAAW,QAAQ"}
|
|
1
|
+
{"version":3,"file":"ChannelReceiver.js","names":[],"sources":["../../src/channel/ChannelReceiver.ts"],"sourcesContent":["import type { ChannelNetworkOptions, PostRequestOptions } from \"./ChannelNetwork\"\nimport { ChannelNetwork } from \"./ChannelNetwork\"\nimport { NotReadyError } from \"./errors\"\nimport {\n\tcreateErrorResponseMessage,\n\tcreateSuccessResponseMessage,\n\tisRequestMessage,\n\tvalidateMessage,\n} from \"./messages\"\nimport type {\n\tExtractSuccessResponseMessage,\n\tInternalEmitterTransactions,\n\tRequestMessage,\n\tResponseMessage,\n\tSuccessResponseMessage,\n\tTransactionsHandlers,\n\tUnknownRequestMessage,\n\tUnknownResponseMessage,\n\tUnknownTransaction,\n} from \"./types\"\nimport { InternalEmitterRequestType, InternalReceiverRequestType } from \"./types\"\n\nexport type ChannelReceiverOptions = {\n\treadyTimeout: number\n}\n\nexport const channelReceiverDefaultOptions: ChannelReceiverOptions &\n\tPartial<ChannelNetworkOptions> = {\n\treadyTimeout: 20000,\n\trequestIDPrefix: \"receiver-\",\n}\n\nexport type AllChannelReceiverOptions = ChannelReceiverOptions & ChannelNetworkOptions\n\nexport abstract class ChannelReceiver<\n\tTEmitterTransactions extends Record<string, UnknownTransaction> = Record<string, never>,\n\tTOptions extends Record<string, unknown> = Record<string, unknown>,\n> extends ChannelNetwork<TEmitterTransactions, ChannelReceiverOptions & TOptions> {\n\tprivate _ready = false\n\n\tconstructor(\n\t\trequestHandlers: TransactionsHandlers<TEmitterTransactions>,\n\t\toptions: Partial<AllChannelReceiverOptions> & TOptions,\n\t) {\n\t\tsuper(requestHandlers, { ...channelReceiverDefaultOptions, ...options })\n\n\t\twindow.addEventListener(\"message\", (event) => {\n\t\t\tthis._onPublicMessage(event)\n\t\t})\n\t}\n\n\t/** Tells the emitter that receiver is ready */\n\tpublic async ready(): Promise<SuccessResponseMessage> {\n\t\tif (window.parent === window) {\n\t\t\tthrow new Error(\"Receiver is currently not embedded as an iframe\")\n\t\t}\n\n\t\tthis._ready = false\n\n\t\tconst request = this.createRequestMessage(InternalReceiverRequestType.Ready, undefined)\n\n\t\tconst response = await this.postRequest<\n\t\t\tRequestMessage<InternalReceiverRequestType.Ready>,\n\t\t\tResponseMessage\n\t\t>(\n\t\t\trequest,\n\t\t\t(request) => {\n\t\t\t\twindow.parent.postMessage(request, \"*\")\n\t\t\t},\n\t\t\t{\n\t\t\t\ttimeout: this.options.readyTimeout,\n\t\t\t},\n\t\t)\n\n\t\tthis._ready = true\n\n\t\treturn response\n\t}\n\n\t/** Handles public messages */\n\tprivate _onPublicMessage(event: MessageEvent<unknown>): void {\n\t\tif (process.env.NODE_ENV !== \"development\") {\n\t\t\tif (\n\t\t\t\t!event.origin.startsWith(\"https://\") ||\n\t\t\t\t!(\n\t\t\t\t\tevent.origin.endsWith(\".prismic.io\") ||\n\t\t\t\t\tevent.origin.endsWith(\".wroom.io\") ||\n\t\t\t\t\tevent.origin.endsWith(\".marketing-tools-wroom.com\") ||\n\t\t\t\t\tevent.origin.endsWith(\".dev-tools-wroom.com\") ||\n\t\t\t\t\tevent.origin.endsWith(\".platform-wroom.com\")\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// Ignore messages from non-allowed origins in non-development environment\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst message = validateMessage(event.data)\n\n\t\t\tif (isRequestMessage(message)) {\n\t\t\t\tif (this.options.debug) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.debug(event.data)\n\t\t\t\t}\n\n\t\t\t\tswitch (message.type) {\n\t\t\t\t\tcase InternalEmitterRequestType.Connect:\n\t\t\t\t\t\t// Set port\n\t\t\t\t\t\tthis.port = event.ports[0]\n\n\t\t\t\t\t\t// Update options\n\t\t\t\t\t\tconst { data } = message as InternalEmitterTransactions[\"connect\"][\"request\"]\n\t\t\t\t\t\tthis.options = {\n\t\t\t\t\t\t\t...this.options,\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\t// Ensure core options remain the same\n\t\t\t\t\t\t\tdebug: this.options.debug,\n\t\t\t\t\t\t\trequestIDPrefix: this.options.requestIDPrefix,\n\t\t\t\t\t\t\treadyTimeout: this.options.readyTimeout,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst response = createSuccessResponseMessage(message.requestID, undefined)\n\n\t\t\t\t\t\tthis.postResponse(response)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.postResponse(\n\t\t\t\t\t\t\tcreateErrorResponseMessage(message.requestID, undefined),\n\t\t\t\t\t\t\t(response) => {\n\t\t\t\t\t\t\t\t;(event.source as WindowProxy).postMessage(response, event.origin)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Forward response messages to default message handler if necessary\n\t\t\t\tif (!this._ready) {\n\t\t\t\t\tthis.onMessage(event)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof TypeError) {\n\t\t\t\t// Ignore unknown messages\n\t\t\t} else {\n\t\t\t\t// Should not be possible, but who knows :shrug:\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected postFormattedRequest<\n\t\tTRequest extends UnknownRequestMessage,\n\t\tTResponse extends UnknownResponseMessage,\n\t>(\n\t\ttype: TRequest[\"type\"],\n\t\tdata?: TRequest[\"data\"],\n\t\toptions: PostRequestOptions = {},\n\t): Promise<ExtractSuccessResponseMessage<TResponse>> {\n\t\tif (!this._ready) {\n\t\t\tthrow new NotReadyError(\"Receiver is not ready, use `ChannelReceiver.ready()` first\")\n\t\t}\n\n\t\treturn this.postRequest(this.createRequestMessage(type, data), undefined, options)\n\t}\n}\n"],"mappings":";;;;;AA0BA,MAAa,gCACqB;CACjC,cAAc;CACd,iBAAiB;CACjB;AAID,IAAsB,kBAAtB,cAGU,eAAwE;CACjF,SAAiB;CAEjB,YACC,iBACA,SACC;AACD,QAAM,iBAAiB;GAAE,GAAG;GAA+B,GAAG;GAAS,CAAC;AAExE,SAAO,iBAAiB,YAAY,UAAU;AAC7C,QAAK,iBAAiB,MAAM;IAC3B;;;CAIH,MAAa,QAAyC;AACrD,MAAI,OAAO,WAAW,OACrB,OAAM,IAAI,MAAM,kDAAkD;AAGnE,OAAK,SAAS;EAEd,MAAM,UAAU,KAAK,qBAAqB,4BAA4B,OAAO,KAAA,EAAU;EAEvF,MAAM,WAAW,MAAM,KAAK,YAI3B,UACC,YAAY;AACZ,UAAO,OAAO,YAAY,SAAS,IAAI;KAExC,EACC,SAAS,KAAK,QAAQ,cACtB,CACD;AAED,OAAK,SAAS;AAEd,SAAO;;;CAIR,iBAAyB,OAAoC;AAC5D,MAAI,QAAQ,IAAI,aAAa;OAE3B,CAAC,MAAM,OAAO,WAAW,WAAW,IACpC,EACC,MAAM,OAAO,SAAS,cAAc,IACpC,MAAM,OAAO,SAAS,YAAY,IAClC,MAAM,OAAO,SAAS,6BAA6B,IACnD,MAAM,OAAO,SAAS,uBAAuB,IAC7C,MAAM,OAAO,SAAS,sBAAsB,EAI7C;;AAIF,MAAI;GACH,MAAM,UAAU,gBAAgB,MAAM,KAAK;AAE3C,OAAI,iBAAiB,QAAQ,EAAE;AAC9B,QAAI,KAAK,QAAQ,MAEhB,SAAQ,MAAM,MAAM,KAAK;AAG1B,YAAQ,QAAQ,MAAhB;KACC,KAAK,2BAA2B;AAE/B,WAAK,OAAO,MAAM,MAAM;MAGxB,MAAM,EAAE,SAAS;AACjB,WAAK,UAAU;OACd,GAAG,KAAK;OACR,GAAG;OAEH,OAAO,KAAK,QAAQ;OACpB,iBAAiB,KAAK,QAAQ;OAC9B,cAAc,KAAK,QAAQ;OAC3B;MAED,MAAM,WAAW,6BAA6B,QAAQ,WAAW,KAAA,EAAU;AAE3E,WAAK,aAAa,SAAS;AAC3B;KAED;AACC,WAAK,aACJ,2BAA2B,QAAQ,WAAW,KAAA,EAAU,GACvD,aAAa;AACX,aAAM,OAAuB,YAAY,UAAU,MAAM,OAAO;QAEnE;AACD;;cAIE,CAAC,KAAK,OACT,MAAK,UAAU,MAAM;WAGf,OAAO;AACf,OAAI,iBAAiB,WAAW,OAI/B,OAAM;;;CAKT,qBAIC,MACA,MACA,UAA8B,EAAE,EACoB;AACpD,MAAI,CAAC,KAAK,OACT,OAAM,IAAI,cAAc,6DAA6D;AAGtF,SAAO,KAAK,YAAY,KAAK,qBAAqB,MAAM,KAAK,EAAE,KAAA,GAAW,QAAQ"}
|
package/package.json
CHANGED
|
@@ -79,6 +79,22 @@ export abstract class ChannelReceiver<
|
|
|
79
79
|
|
|
80
80
|
/** Handles public messages */
|
|
81
81
|
private _onPublicMessage(event: MessageEvent<unknown>): void {
|
|
82
|
+
if (process.env.NODE_ENV !== "development") {
|
|
83
|
+
if (
|
|
84
|
+
!event.origin.startsWith("https://") ||
|
|
85
|
+
!(
|
|
86
|
+
event.origin.endsWith(".prismic.io") ||
|
|
87
|
+
event.origin.endsWith(".wroom.io") ||
|
|
88
|
+
event.origin.endsWith(".marketing-tools-wroom.com") ||
|
|
89
|
+
event.origin.endsWith(".dev-tools-wroom.com") ||
|
|
90
|
+
event.origin.endsWith(".platform-wroom.com")
|
|
91
|
+
)
|
|
92
|
+
) {
|
|
93
|
+
// Ignore messages from non-allowed origins in non-development environment
|
|
94
|
+
return
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
82
98
|
try {
|
|
83
99
|
const message = validateMessage(event.data)
|
|
84
100
|
|