UNPKG

@prezly/theme-kit-core

Version:

Data layer and utility library for developing Prezly themes with JavaScript

54 lines (53 loc) 1.81 kB
"use strict"; 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 = {}));