@prezly/theme-kit-core
Version:
Data layer and utility library for developing Prezly themes with JavaScript
54 lines (53 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Route = void 0;
var _urlPattern = _interopRequireDefault(require("url-pattern"));
var _constants = require("./constants.cjs");
var _index = require("./utils/index.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var Route;
(function (_Route) {
function create(pattern, rewrite) {
var {
check,
generate,
resolveLocale
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var urlPattern = new _urlPattern.default(pattern, {
segmentValueCharset: _constants.URL_PATTERN_SEGMENT_CHARSET
});
var rewritePattern = new _urlPattern.default(rewrite, {
segmentValueCharset: _constants.URL_PATTERN_SEGMENT_CHARSET
});
return {
pattern,
match(path, searchParams) {
var matched = urlPattern.match(path);
if (!matched) {
return undefined;
}
if ((check === null || check === void 0 ? void 0 : check(matched, searchParams)) === false) {
return undefined;
}
return matched;
},
generate(params) {
var encoded = Object.fromEntries(Object.entries(params !== null && params !== void 0 ? params : {}).map(_ref => {
var [key, value] = _ref;
return [key, typeof value === 'string' ? encodeURIComponent(value) : value];
}));
if (generate) {
return (0, _index.normalizeUrl)(generate(urlPattern, encoded));
}
return (0, _index.normalizeUrl)(urlPattern.stringify(encoded));
},
rewrite(params) {
return rewritePattern.stringify(params);
},
resolveLocale
};
}
_Route.create = create;
})(Route || (exports.Route = Route = {}));