ava-playback
Version:
Record and playback http requests with nock, integrated into ava
75 lines • 5.97 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var nock = require("nock");
var querystring_1 = require("querystring");
var path_1 = require("path");
var lodash_1 = require("lodash");
var bind = function (f) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return f.bind.apply(f, [null].concat(args));
};
var join = function (str1) { return function (str2) { return path_1.join(str1, str2); }; };
var isHex = function (str) { return /^[0-9A-Fa-f]{2,}$/.test(str); };
var definePersistent = function (defs) {
return nock.define(defs).map(function (m) { return m.persist(); });
};
var skipAsterisk = function (s) {
if (s === '*')
return true;
};
var pathMatcher = function (path, queries, matching) {
var _a = matching.split('?'), matchingPath = _a[0], matchingQueries = _a[1];
if (path !== matchingPath)
return false;
var equality = lodash_1.isEqualWith(queries, querystring_1.parse(matchingQueries), skipAsterisk);
return equality;
};
var asteriskToRx = function (value) {
if (value === '*')
return /.*/gi;
if (lodash_1.isArray(value))
return value.map(asteriskToRx);
if (lodash_1.isPlainObject(value))
return lodash_1.mapValues(value, asteriskToRx);
return value;
};
var defineMatchers = function (_a) {
var queries = _a.queries, response = _a.response, def = __rest(_a, ["queries", "response"]);
return Object.assign(def, {
response: lodash_1.isString(response) && isHex(response) ? Buffer.from(response, 'hex') : response,
path: bind(pathMatcher, def.path, queries),
body: asteriskToRx(def.body)
});
};
var readFile = function (filePath) {
return fs.readFileSync(filePath, { encoding: 'utf8' });
};
var readRecord = function (recordPath) {
return JSON.parse(readFile(recordPath));
};
var recordsByScope = function (scopeName) {
return fs.readdirSync(scopeName)
.map(join(scopeName))
.map(readRecord)
.map(defineMatchers);
};
exports.default = function (playbacksPath) {
return fs.readdirSync(playbacksPath)
.map(join(playbacksPath))
.map(recordsByScope)
.map(definePersistent);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1QkFBd0I7QUFDeEIsMkJBQTRCO0FBQzVCLDJDQUFtQztBQUNuQyw2QkFBbUM7QUFDbkMsaUNBT2U7QUFJZixJQUFNLElBQUksR0FBRyxVQUFDLENBQVc7SUFBRSxjQUFjO1NBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYztRQUFkLDZCQUFjOztJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksT0FBTixDQUFDLEdBQU0sSUFBSSxTQUFLLElBQUk7QUFBcEIsQ0FBcUIsQ0FBQTtBQUNuRSxJQUFNLElBQUksR0FBRyxVQUFDLElBQVksSUFBSyxPQUFBLFVBQUMsSUFBWSxJQUFLLE9BQUEsV0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBaEIsQ0FBZ0IsRUFBbEMsQ0FBa0MsQ0FBQTtBQUNqRSxJQUFNLEtBQUssR0FBRyxVQUFDLEdBQVcsSUFBSyxPQUFBLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQTtBQUU1RCxJQUFNLGdCQUFnQixHQUFHLFVBQUMsSUFBMkI7SUFDbkQsT0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBWCxDQUFXLENBQUM7QUFBdkMsQ0FBdUMsQ0FBQTtBQUV6QyxJQUFNLFlBQVksR0FBRyxVQUFDLENBQU07SUFDMUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7QUFDNUIsQ0FBQyxDQUFBO0FBRUQsSUFBTSxXQUFXLEdBQUcsVUFBQyxJQUFZLEVBQUUsT0FBWSxFQUFFLFFBQWdCO0lBQ3pELElBQUEsd0JBQXFELEVBQXBELG9CQUFZLEVBQUUsdUJBQWUsQ0FBdUI7SUFDM0QsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQztRQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUE7SUFDdkMsSUFBTSxRQUFRLEdBQUcsb0JBQU8sQ0FBQyxPQUFPLEVBQUUsbUJBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQTtJQUN2RSxNQUFNLENBQUMsUUFBUSxDQUFBO0FBQ2pCLENBQUMsQ0FBQTtBQUVELElBQU0sWUFBWSxHQUFHLFVBQUMsS0FBVTtJQUM5QixFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQTtJQUNoQyxFQUFFLENBQUMsQ0FBQyxnQkFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDbEQsRUFBRSxDQUFDLENBQUMsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxrQkFBUyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQTtJQUMxRCxNQUFNLENBQUMsS0FBSyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBRUQsSUFBTSxjQUFjLEdBQUcsVUFBQyxFQUF5QztJQUF2QyxJQUFBLG9CQUFPLEVBQUUsc0JBQVEsRUFBRSx5Q0FBTTtJQUFtQixNQUFNLENBQU4sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDdkYsUUFBUSxFQUFFLGlCQUFRLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN6RixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUMxQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7S0FDN0IsQ0FBQyxDQUFBO0NBQUEsQ0FBQTtBQUVGLElBQU0sUUFBUSxHQUFHLFVBQUMsUUFBZ0I7SUFDaEMsT0FBQSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUEvQyxDQUErQyxDQUFBO0FBRWpELElBQU0sVUFBVSxHQUFHLFVBQUMsVUFBa0I7SUFDcEMsT0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUFoQyxDQUFnQyxDQUFBO0FBRWxDLElBQU0sY0FBYyxHQUFHLFVBQUMsU0FBaUI7SUFDdkMsT0FBQSxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztTQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BCLEdBQUcsQ0FBQyxVQUFVLENBQUM7U0FDZixHQUFHLENBQUMsY0FBYyxDQUFDO0FBSHRCLENBR3NCLENBQUE7QUFFeEIsa0JBQWUsVUFBQyxhQUFxQjtJQUNuQyxPQUFBLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1NBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDeEIsR0FBRyxDQUFDLGNBQWMsQ0FBQztTQUNuQixHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFIeEIsQ0FHd0IsQ0FBQSJ9