mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-05-02 22:43:57 +01:00
* Quickstart Refresh collection automatically when container is created * Fix unit tests * Fix unit tests and address comments * Minor fixes in message handler * Minor changes to fix tsconfig.strict.json * Resolve npm compile:strict errors by fixing the code implementation * Remove cache refresh code in configureHosted function * Fix spacing * Run npm format
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { configContext } from "../ConfigContext";
|
|
|
|
export function isInvalidParentFrameOrigin(event: MessageEvent): boolean {
|
|
return !isValidOrigin(configContext.allowedParentFrameOrigins, event);
|
|
}
|
|
|
|
function isValidOrigin(allowedOrigins: ReadonlyArray<string>, event: MessageEvent): boolean {
|
|
const eventOrigin = (event && event.origin) || "";
|
|
const windowOrigin = (window && window.origin) || "";
|
|
if (eventOrigin === windowOrigin) {
|
|
return true;
|
|
}
|
|
|
|
for (const origin of allowedOrigins) {
|
|
const result = new RegExp(origin).test(eventOrigin);
|
|
if (result) {
|
|
return true;
|
|
}
|
|
}
|
|
console.error(`Invalid parent frame origin detected: ${eventOrigin}`);
|
|
return false;
|
|
}
|
|
|
|
export function shouldProcessMessage(event: MessageEvent): boolean {
|
|
if (typeof event.data !== "object") {
|
|
return false;
|
|
}
|
|
if (event.data["signature"] !== "pcIframe") {
|
|
return false;
|
|
}
|
|
if (!("data" in event.data)) {
|
|
return false;
|
|
}
|
|
if (typeof event.data["data"] !== "object") {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
export function isReadyMessage(event: MessageEvent): boolean {
|
|
if (!event?.data?.kind && !event?.data?.data) {
|
|
return false;
|
|
}
|
|
|
|
if (event.data.kind !== "ready" && event.data.data !== "ready") {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|