@xpert-ai/chatkit-web-component 0.5.0 → 0.5.1
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.
|
@@ -51,7 +51,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
|
|
|
51
51
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
52
52
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
53
53
|
|
|
54
|
-
var _a, _b, _setTrainingOptOut_dec, _hideHistory_dec, _showHistory_dec, _sendCustomAction_dec, _shareThread_dec, _setThreadId_dec, _setRuntimeCapabilities_dec, _setComposerValue_dec, _sendUserMessage_dec, _fetchUpdates_dec, _focusComposer_dec, _c, _opts, _frameUrl, _frame, _wrapper, _launcherCloseButton, _launcherOpen, _chatMinimizedToPet, _framePetOptionsOverride, _petClosedByContextMenu, _shadow, _petOverlay, _resolveLoaded, _loaded, _messenger, _ChatKitElementBase_instances, emitAndThrow_fn, setOptionsDataAttributes_fn, getDisplayMode_fn, getConfiguredPetOptions_fn, mergeConfiguredPetPositionDefaults_fn, getOverlayPetOptions_fn, resolvePetAssetUrl_fn, resolveOverlayPetOptions_fn, getFrameOptions_fn, setLauncherOpen_fn, setChatMinimizedToPet_fn, syncPetOverlayOptions_fn, handlePetActivate_fn, handlePetClose_fn, handlePetReply_fn, handlePetThreadSummaryActivate_fn, _handleLauncherClose, getFrameUrl_fn, setFrameUrl_fn, consumeFrameUrl_fn, _handleFrameLoad, _initialized, maybeInit_fn, _init;
|
|
54
|
+
var _a, _b, _setTrainingOptOut_dec, _hideHistory_dec, _showHistory_dec, _sendCustomAction_dec, _shareThread_dec, _setThreadId_dec, _setRuntimeCapabilities_dec, _setComposerValue_dec, _sendUserMessage_dec, _fetchUpdates_dec, _focusComposer_dec, _c, _opts, _frameUrl, _frame, _wrapper, _launcherCloseButton, _launcherOpen, _chatMinimizedToPet, _framePetOptionsOverride, _petClosedByContextMenu, _shadow, _petOverlay, _resolveLoaded, _loaded, _channelId, _messenger, _ChatKitElementBase_instances, emitAndThrow_fn, setOptionsDataAttributes_fn, getDisplayMode_fn, getConfiguredPetOptions_fn, mergeConfiguredPetPositionDefaults_fn, getOverlayPetOptions_fn, resolvePetAssetUrl_fn, resolveOverlayPetOptions_fn, getFrameOptions_fn, setLauncherOpen_fn, setChatMinimizedToPet_fn, syncPetOverlayOptions_fn, handlePetActivate_fn, handlePetClose_fn, handlePetReply_fn, handlePetThreadSummaryActivate_fn, _handleLauncherClose, getFrameUrl_fn, setFrameUrl_fn, consumeFrameUrl_fn, _handleFrameLoad, _initialized, maybeInit_fn, _init;
|
|
55
55
|
class EventEmitter {
|
|
56
56
|
constructor() {
|
|
57
57
|
__publicField(this, "callbacks", /* @__PURE__ */ new Map());
|
|
@@ -370,7 +370,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
370
370
|
}
|
|
371
371
|
});
|
|
372
372
|
};
|
|
373
|
-
function
|
|
373
|
+
function createSecureChannelId() {
|
|
374
374
|
const cryptoRef = globalThis.crypto;
|
|
375
375
|
if (typeof (cryptoRef == null ? void 0 : cryptoRef.randomUUID) === "function") {
|
|
376
376
|
return cryptoRef.randomUUID();
|
|
@@ -382,7 +382,30 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
382
382
|
bytes[8] = bytes[8] & 63 | 128;
|
|
383
383
|
return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("").replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, "$1-$2-$3-$4-$5");
|
|
384
384
|
}
|
|
385
|
-
return
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
function safeRandomUUID() {
|
|
388
|
+
return createSecureChannelId() ?? `ck_${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
|
389
|
+
}
|
|
390
|
+
function isTrustedChatKitMessageEvent(event, { channelId, expectedOrigin, expectedSource }) {
|
|
391
|
+
const payload = event.data;
|
|
392
|
+
if (!payload || typeof payload !== "object" || !("__xpaiChatKit" in payload)) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
if (payload.__xpaiChatKit !== true) {
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
398
|
+
if (expectedOrigin !== "*" && event.origin !== expectedOrigin) {
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
if (event.source === expectedSource) {
|
|
402
|
+
return true;
|
|
403
|
+
}
|
|
404
|
+
const normalizedChannelId = channelId == null ? void 0 : channelId.trim();
|
|
405
|
+
if (normalizedChannelId) {
|
|
406
|
+
return "channelId" in payload && payload.channelId === normalizedChannelId;
|
|
407
|
+
}
|
|
408
|
+
return false;
|
|
386
409
|
}
|
|
387
410
|
let IntegrationError$1 = class IntegrationError2 extends Error {
|
|
388
411
|
constructor(message) {
|
|
@@ -416,10 +439,12 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
416
439
|
handlers,
|
|
417
440
|
target,
|
|
418
441
|
targetOrigin,
|
|
442
|
+
channelId,
|
|
419
443
|
fetch: fetch2 = window.fetch
|
|
420
444
|
}) {
|
|
421
445
|
__publicField(this, "targetOrigin");
|
|
422
446
|
__publicField(this, "target");
|
|
447
|
+
__publicField(this, "channelId");
|
|
423
448
|
__publicField(this, "commandHandlers");
|
|
424
449
|
__publicField(this, "_fetch");
|
|
425
450
|
__publicField(this, "emitter", new EventEmitter());
|
|
@@ -450,7 +475,11 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
450
475
|
));
|
|
451
476
|
__publicField(this, "handleMessage", async (event) => {
|
|
452
477
|
var _a2, _b2, _c2, _d;
|
|
453
|
-
if (!event
|
|
478
|
+
if (!isTrustedChatKitMessageEvent(event, {
|
|
479
|
+
channelId: this.channelId,
|
|
480
|
+
expectedOrigin: this.targetOrigin,
|
|
481
|
+
expectedSource: this.target()
|
|
482
|
+
})) {
|
|
454
483
|
return;
|
|
455
484
|
}
|
|
456
485
|
const data = event.data;
|
|
@@ -591,6 +620,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
591
620
|
this.commandHandlers = handlers;
|
|
592
621
|
this.target = target;
|
|
593
622
|
this.targetOrigin = targetOrigin;
|
|
623
|
+
this.channelId = (channelId == null ? void 0 : channelId.trim()) || void 0;
|
|
594
624
|
this._fetch = (...args) => fetch2(...args);
|
|
595
625
|
}
|
|
596
626
|
setTargetOrigin(targetOrigin) {
|
|
@@ -600,6 +630,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
600
630
|
var _a2;
|
|
601
631
|
const message = {
|
|
602
632
|
__xpaiChatKit: true,
|
|
633
|
+
...this.channelId ? { channelId: this.channelId } : {},
|
|
603
634
|
...data
|
|
604
635
|
};
|
|
605
636
|
(_a2 = this.target()) == null ? void 0 : _a2.postMessage(message, this.targetOrigin, transfer);
|
|
@@ -2607,7 +2638,9 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
2607
2638
|
__privateAdd(this, _loaded, new Promise((resolve) => {
|
|
2608
2639
|
__privateSet(this, _resolveLoaded, resolve);
|
|
2609
2640
|
}));
|
|
2641
|
+
__privateAdd(this, _channelId, createSecureChannelId());
|
|
2610
2642
|
__privateAdd(this, _messenger, new ChatFrameMessenger({
|
|
2643
|
+
channelId: __privateGet(this, _channelId) ?? void 0,
|
|
2611
2644
|
fetch: (...args) => {
|
|
2612
2645
|
var _a2;
|
|
2613
2646
|
const customFetch = ((_a2 = __privateGet(this, _opts)) == null ? void 0 : _a2.api) && "fetch" in __privateGet(this, _opts).api && __privateGet(this, _opts).api.fetch;
|
|
@@ -3106,6 +3139,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
3106
3139
|
_petOverlay = new WeakMap();
|
|
3107
3140
|
_resolveLoaded = new WeakMap();
|
|
3108
3141
|
_loaded = new WeakMap();
|
|
3142
|
+
_channelId = new WeakMap();
|
|
3109
3143
|
_messenger = new WeakMap();
|
|
3110
3144
|
_ChatKitElementBase_instances = new WeakSet();
|
|
3111
3145
|
emitAndThrow_fn = function(error) {
|
|
@@ -3316,7 +3350,8 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
3316
3350
|
frameURL.hash = encodeBase64({
|
|
3317
3351
|
options: getInnerOptions(__privateMethod(this, _ChatKitElementBase_instances, getFrameOptions_fn).call(this, __privateGet(this, _opts))),
|
|
3318
3352
|
referrer: window.location.origin,
|
|
3319
|
-
profile: this.profile
|
|
3353
|
+
profile: this.profile,
|
|
3354
|
+
...__privateGet(this, _channelId) ? { channelId: __privateGet(this, _channelId) } : {}
|
|
3320
3355
|
});
|
|
3321
3356
|
__privateGet(this, _messenger).connect();
|
|
3322
3357
|
__privateGet(this, _frame).src = frameURL.toString();
|