UNPKG

ekko-nodejs

Version:

Ekko Rest Api wrapper — nodeJs

34 lines (31 loc) 3.25 kB
"use strict"; var _ = require("lodash"); var endpointParamRegExp = /\{(\w+?)\}/g; function matchAll(str, re) { var ret = []; var m = void 0, i = 0; while (m = re.exec(str)) { ret.push({ i: i++, key: m[0], name: m[1] }); } return ret; } module.exports = { parse: function parse(endpoint) { var template = _.template(endpoint, { interpolate: endpointParamRegExp }); return { args: matchAll(endpoint, endpointParamRegExp), compile: function compile(args) { var params = _.zipObject(_.map(this.args, "name"), args); return template(params); } }; } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lbmRwb2ludFBhcnNlci5qcyJdLCJuYW1lcyI6WyJfIiwicmVxdWlyZSIsImVuZHBvaW50UGFyYW1SZWdFeHAiLCJtYXRjaEFsbCIsInN0ciIsInJlIiwicmV0IiwibSIsImkiLCJleGVjIiwicHVzaCIsImtleSIsIm5hbWUiLCJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJlbmRwb2ludCIsInRlbXBsYXRlIiwiaW50ZXJwb2xhdGUiLCJhcmdzIiwiY29tcGlsZSIsInBhcmFtcyIsInppcE9iamVjdCIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBTUEsSUFBSUMsUUFBUSxRQUFSLENBQVY7QUFDQSxJQUFNQyxzQkFBc0IsYUFBNUI7O0FBRUEsU0FBU0MsUUFBVCxDQUFrQkMsR0FBbEIsRUFBdUJDLEVBQXZCLEVBQTJCO0FBQ3ZCLFFBQU1DLE1BQU0sRUFBWjtBQUNBLFFBQUlDLFVBQUo7QUFBQSxRQUNJQyxJQUFJLENBRFI7QUFFQSxXQUFRRCxJQUFJRixHQUFHSSxJQUFILENBQVFMLEdBQVIsQ0FBWixFQUEyQjtBQUN2QkUsWUFBSUksSUFBSixDQUFTO0FBQ0xGLGVBQUdBLEdBREU7QUFFTEcsaUJBQUtKLEVBQUUsQ0FBRixDQUZBO0FBR0xLLGtCQUFNTCxFQUFFLENBQUY7QUFIRCxTQUFUO0FBS0g7QUFDRCxXQUFPRCxHQUFQO0FBQ0g7O0FBRURPLE9BQU9DLE9BQVAsR0FBaUI7QUFDYkMsU0FEYSxpQkFDUEMsUUFETyxFQUNHO0FBQ1osWUFBTUMsV0FBV2pCLEVBQUVpQixRQUFGLENBQVdELFFBQVgsRUFBcUI7QUFDbENFLHlCQUFhaEI7QUFEcUIsU0FBckIsQ0FBakI7QUFHQSxlQUFPO0FBQ0hpQixrQkFBTWhCLFNBQVNhLFFBQVQsRUFBbUJkLG1CQUFuQixDQURIO0FBRUhrQixtQkFGRyxtQkFFS0QsSUFGTCxFQUVXO0FBQ1Ysb0JBQU1FLFNBQVNyQixFQUFFc0IsU0FBRixDQUFZdEIsRUFBRXVCLEdBQUYsQ0FBTSxLQUFLSixJQUFYLEVBQWlCLE1BQWpCLENBQVosRUFBc0NBLElBQXRDLENBQWY7QUFDQSx1QkFBT0YsU0FBU0ksTUFBVCxDQUFQO0FBQ0g7QUFMRSxTQUFQO0FBT0g7QUFaWSxDQUFqQiIsImZpbGUiOiJlbmRwb2ludFBhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBfID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbmNvbnN0IGVuZHBvaW50UGFyYW1SZWdFeHAgPSAvXFx7KFxcdys/KVxcfS9nO1xuXG5mdW5jdGlvbiBtYXRjaEFsbChzdHIsIHJlKSB7XG4gICAgY29uc3QgcmV0ID0gW107XG4gICAgbGV0IG0sXG4gICAgICAgIGkgPSAwO1xuICAgIHdoaWxlICgobSA9IHJlLmV4ZWMoc3RyKSkpIHtcbiAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgaTogaSsrLFxuICAgICAgICAgICAga2V5OiBtWzBdLFxuICAgICAgICAgICAgbmFtZTogbVsxXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgcGFyc2UoZW5kcG9pbnQpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBfLnRlbXBsYXRlKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0ZTogZW5kcG9pbnRQYXJhbVJlZ0V4cFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IG1hdGNoQWxsKGVuZHBvaW50LCBlbmRwb2ludFBhcmFtUmVnRXhwKSxcbiAgICAgICAgICAgIGNvbXBpbGUoYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IF8uemlwT2JqZWN0KF8ubWFwKHRoaXMuYXJncywgXCJuYW1lXCIpLCBhcmdzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGUocGFyYW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19