@bunihq/app-bridge
Version:
BuniHQ App Bridge library
82 lines (76 loc) • 2.41 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
COMPONENT_TYPES: () => COMPONENT_TYPES,
EVENTS: () => EVENTS,
getSessionToken: () => getSessionToken
});
module.exports = __toCommonJS(index_exports);
// src/components/types.ts
var COMPONENT_TYPES = {
SIDEBAR_AREA: "sidebar-area",
SIDEBAR_GROUP: "sidebar-group",
SIDEBAR_MENU: "sidebar-menu"
};
// src/events/index.ts
var EVENTS = {
HOST_COMPONENT_CONNECTED: "host-component-connected",
REQUEST_SESSION_TOKEN: "request-session-token"
};
// src/utils/origin.ts
function getOrigin() {
const ancestors = window.location.ancestorOrigins;
if (ancestors?.length) {
return ancestors[0];
}
if (document.referrer) {
return new URL(document.referrer).origin;
}
return window.location.origin;
}
// src/utils/session-token.ts
function getSessionToken() {
const origin = getOrigin();
window.parent.postMessage(
{
type: EVENTS.REQUEST_SESSION_TOKEN,
detail: {}
},
origin
);
return new Promise((resolve, reject) => {
const handleMessage = (event) => {
if (event.origin === origin && event.data.type === EVENTS.REQUEST_SESSION_TOKEN) {
window.removeEventListener("message", handleMessage);
resolve(event.data.detail.token);
return;
}
window.removeEventListener("message", handleMessage);
reject(new Error("Failed to get session token"));
};
window.addEventListener("message", handleMessage);
});
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
COMPONENT_TYPES,
EVENTS,
getSessionToken
});