UNPKG

@shopify/app-bridge

Version:

**Shopify is doubling our engineering staff in 2021! [Join our team and work on libraries like this one.](https://smrtr.io/5GGrc)**

63 lines (62 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isAppMessage = exports.isPermitted = exports.getPermissionKey = exports.isFromApp = exports.isAppBridgeAction = void 0; var types_1 = require("../client/types"); var constants_1 = require("./constants"); var helper_1 = require("./helper"); /** * Predicate to determine if an action is an App Bridge action. * @public */ function isAppBridgeAction(action) { return (action instanceof Object && Boolean(action.type) && action.type.toString().startsWith(constants_1.PREFIX)); } exports.isAppBridgeAction = isAppBridgeAction; /** * Predicate to determine if an action originated from an application. * @internal */ function isFromApp(action) { if (typeof action !== 'object' || typeof action.source !== 'object') { return false; } return typeof action.source.apiKey === 'string'; } exports.isFromApp = isFromApp; /** * Returns the action type without the prefix and group * @internal */ function getPermissionKey(type) { return type.replace(new RegExp("^" + constants_1.PREFIX + constants_1.SEPARATOR + "\\w+" + constants_1.SEPARATOR), ''); } exports.getPermissionKey = getPermissionKey; /** * Predicate to determine if an action is permitted * @internal */ function isPermitted(features, _a, permissionType) { var group = _a.group, type = _a.type; if (!group) { return false; } var feature = features[group]; if (!feature) { return false; } var actionType = getPermissionKey(type); return feature[actionType] ? feature[actionType][permissionType] === true : false; } exports.isPermitted = isPermitted; /** * Predicate to determine if an event originated from an application. * @internal */ function isAppMessage(event) { if (typeof event !== 'object' || !event.data || typeof event.data !== 'object') { return false; } var data = event.data; return data.type && helper_1.findMatchInEnum(types_1.MessageType, data.type) !== undefined; } exports.isAppMessage = isAppMessage;