UNPKG

dinoloop-es8

Version:

A lightweight REST API Library for building scalable Node.js server-side applications powered by Typescript

59 lines 4.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // Refer: https://github.com/pillarjs/path-to-regexp // tslint:disable-next-line:no-require-imports const pathToRegexp = require("path-to-regexp"); const object_utility_1 = require("./object.utility"); const data_utility_1 = require("./data.utility"); class RouteUtility { // @returns {} when no segmented values are matched // @returns { id: 45 } for the matched segments values static getNamedSegmentKeyValues( // holds the original url of place holders // ex: user/:id originalUri, // holds the requested url which has values // user/45 requestedUri) { let keys = []; let route = pathToRegexp(originalUri, keys); let values = route.exec(requestedUri); if (!data_utility_1.DataUtility.isArray(values)) { return {}; } // According to "path-to-regexp" docs, // matched values start from index: 1 let i = 1; let obj = {}; for (const key of keys) { obj[key.name] = values[i]; i++; } return obj; } // map the segmented values and query strings to action parameters. // if action parameter keys and variable segment / query string are matched, // it simply returns the array of values which are indexed to action parameter key static mapSegmentsAndQueryToActionArguments(originalUri, requestedUri, queryString, params) { let arr = []; if (params.length === 0) return []; let val = RouteUtility .getNamedSegmentKeyValues(originalUri, requestedUri); // If variable segment and query param have same keys // it overwrites with query string, since we are passing the query-keys // which are explicitly set using @QueryParam let values = Object.assign(val, queryString); // find the index of action parameter and // insert the value from url at matched index object_utility_1.ObjectUtility.keys(values).forEach(key => { let index = params.findIndex(e => e === key); arr[index] = values[key]; }); return params.map((val, index) => { return { key: val, value: arr[index] }; }); } } exports.RouteUtility = RouteUtility; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUudXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL3V0aWxpdHkvcm91dGUudXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9EQUFvRDtBQUNwRCw4Q0FBOEM7QUFDOUMsK0NBQWdEO0FBR2hELHFEQUFpRDtBQUNqRCxpREFBNkM7QUFHN0M7SUFFSSxtREFBbUQ7SUFDbkQsc0RBQXNEO0lBQ3RELE1BQU0sQ0FBQyx3QkFBd0I7SUFDM0IsMENBQTBDO0lBQzFDLGVBQWU7SUFDZixXQUFtQjtJQUNuQiwyQ0FBMkM7SUFDM0MsVUFBVTtJQUNWLFlBQW9CO1FBRXBCLElBQUksSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUNyQixJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLDBCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxzQ0FBc0M7UUFDdEMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUViLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLENBQUMsRUFBRSxDQUFDO1NBQ1A7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsNEVBQTRFO0lBQzVFLGtGQUFrRjtJQUNsRixNQUFNLENBQUMsb0NBQW9DLENBQ3ZDLFdBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFdBQWdCLEVBQ2hCLE1BQWdCO1FBRWhCLElBQUksR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUV2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRW5DLElBQUksR0FBRyxHQUFHLFlBQVk7YUFDakIsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXpELHFEQUFxRDtRQUNyRCx3RUFBd0U7UUFDeEUsNkNBQTZDO1FBQzdDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLHlDQUF5QztRQUN6Qyw2Q0FBNkM7UUFDN0MsOEJBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDN0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFqRUQsb0NBaUVDIn0=