UNPKG

@shopify/app-bridge-core

Version:

**[Join our team and work on libraries like this one.](https://www.shopify.ca/careers)**

33 lines (32 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relativePathSchema = exports.relativeUrlSchema = void 0; exports.createActionValidator = createActionValidator; exports.isValidRelativePath = isValidRelativePath; var type_validate_1 = require("./type-validate"); function createActionValidator(type, payloadSchema, payloadRequired, idRequired) { if (payloadSchema === void 0) { payloadSchema = undefined; } if (payloadRequired === void 0) { payloadRequired = false; } if (idRequired === void 0) { idRequired = false; } var idSchema = (0, type_validate_1.matchesObject)({ id: idRequired ? (0, type_validate_1.matchesString)() : (0, type_validate_1.makeOptional)((0, type_validate_1.matchesString)()), }); var schema = payloadSchema ? (0, type_validate_1.composeSchemas)(idSchema, payloadSchema) : idSchema; return (0, type_validate_1.matchesObject)({ type: (0, type_validate_1.matchesEnum)(type, { message: function (_, val) { return "The action type `".concat(val, "` is invalid or unsupported"); }, }), payload: payloadRequired ? schema : (0, type_validate_1.makeOptional)(schema), }); } function isValidRelativePath(path) { return typeof path === 'string' && (path === '' || path.startsWith('/')); } exports.relativeUrlSchema = (0, type_validate_1.composeSchemas)((0, type_validate_1.matchesString)(), function (value) { return isValidRelativePath(value) ? undefined : [{ error: 'invalid_relative_path', value: value, message: 'expected string to start with `/`' }]; }); exports.relativePathSchema = (0, type_validate_1.matchesObject)({ path: exports.relativeUrlSchema, });