UNPKG

ts-routes

Version:
130 lines (117 loc) 4.68 kB
'use strict'; var pathToRegexp = require('path-to-regexp'); var qs = require('qs'); function createRouting(routes, options) { function createRoute(currentPattern, _a) { var pattern2 = _a.pattern, children = _a.children; var pattern = currentPattern + pattern2.pattern; var compiledPattern = pathToRegexp.compile(pattern); function route(pathParams, queryParams, overrideOptions) { var queryString = queryParams ? "?".concat(qs.stringify(queryParams, overrideOptions !== null && overrideOptions !== void 0 ? overrideOptions : options)) : ""; return compiledPattern(pathParams) + queryString; } route.pattern = pattern; route.parseQuery = function (query, overrideOptions) { return qs.parse(query, overrideOptions !== null && overrideOptions !== void 0 ? overrideOptions : options); }; if (children) { for (var childRoute in children) { route[childRoute] = createRoute(pattern, children[childRoute]); } } return route; } var mappedRoutes = {}; for (var route in routes) { mappedRoutes[route] = createRoute("", routes[route]); } return mappedRoutes; } var SegmentPattern = /** @class */ (function () { function SegmentPattern(pattern, params) { this.pattern = pattern; this.params = params; } return SegmentPattern; }()); function segment(literals) { var placeholders = []; for (var _i = 1; _i < arguments.length; _i++) { placeholders[_i - 1] = arguments[_i]; } var result = ""; for (var i = 0; i < placeholders.length; i++) { result += literals[i]; result += placeholders[i].pattern; } result += literals[literals.length - 1]; return { pattern: new SegmentPattern(result, placeholders), }; } var PathParamDescription = /** @class */ (function () { function PathParamDescription(_a) { var name = _a.name, optionality = _a.optionality, pattern = _a.pattern; var patternPart = pattern ? "(".concat(pattern, ")") : ""; var requirementPart = optionality === "optional" ? "?" : ""; this.name = name; this.optionality = optionality; this.pattern = ":".concat(name).concat(patternPart).concat(requirementPart); } return PathParamDescription; }()); function string(name, optsOrOptionality) { var _a; var optionality; if (typeof optsOrOptionality === "string") { optionality = optsOrOptionality; } else { optionality = (_a = optsOrOptionality === null || optsOrOptionality === void 0 ? void 0 : optsOrOptionality.optionality) !== null && _a !== void 0 ? _a : "required"; } return new PathParamDescription({ name: name, optionality: optionality }); } function uuid$1(name, optsOrOptionality) { var _a; var optionality; if (typeof optsOrOptionality === "string") { optionality = optsOrOptionality; } else { optionality = (_a = optsOrOptionality === null || optsOrOptionality === void 0 ? void 0 : optsOrOptionality.optionality) !== null && _a !== void 0 ? _a : "required"; } var number = "[0-9]+"; return new PathParamDescription({ name: name, optionality: optionality, pattern: number }); } function uuid(name, optsOrOptionality) { var _a; var optionality; if (typeof optsOrOptionality === "string") { optionality = optsOrOptionality; } else { optionality = (_a = optsOrOptionality === null || optsOrOptionality === void 0 ? void 0 : optsOrOptionality.optionality) !== null && _a !== void 0 ? _a : "required"; } var uuid = "[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}"; return new PathParamDescription({ name: name, optionality: optionality, pattern: uuid }); } function arg(name, _a) { var _b = _a === void 0 ? {} : _a, pattern = _b.pattern, _c = _b.optionality, optionality = _c === void 0 ? "required" : _c; return new PathParamDescription({ name: name, optionality: optionality, pattern: pattern }); } var QueryParamDescription = /** @class */ (function () { function QueryParamDescription(optionality) { this.optionality = optionality; } return QueryParamDescription; }()); function query(optionality) { if (optionality === void 0) { optionality = "required"; } return new QueryParamDescription(optionality); } exports.arg = arg; exports.createRouting = createRouting; exports.number = uuid$1; exports.query = query; exports.segment = segment; exports.string = string; exports.uuid = uuid; //# sourceMappingURL=index.cjs.js.map