@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
JavaScript
;
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,
});