UNPKG

ava-playback

Version:

Record and playback http requests with nock, integrated into ava

75 lines 5.97 kB
"use strict"; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1QkFBd0I7QUFDeEIsMkJBQTRCO0FBQzVCLDJDQUFtQztBQUNuQyw2QkFBbUM7QUFDbkMsaUNBT2U7QUFJZixJQUFNLElBQUksR0FBRyxVQUFDLENBQVc7SUFBRSxjQUFjO1NBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYztRQUFkLDZCQUFjOztJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksT0FBTixDQUFDLEdBQU0sSUFBSSxTQUFLLElBQUk7QUFBcEIsQ0FBcUIsQ0FBQTtBQUNuRSxJQUFNLElBQUksR0FBRyxVQUFDLElBQVksSUFBSyxPQUFBLFVBQUMsSUFBWSxJQUFLLE9BQUEsV0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBaEIsQ0FBZ0IsRUFBbEMsQ0FBa0MsQ0FBQTtBQUNqRSxJQUFNLEtBQUssR0FBRyxVQUFDLEdBQVcsSUFBSyxPQUFBLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQTtBQUU1RCxJQUFNLGdCQUFnQixHQUFHLFVBQUMsSUFBMkI7SUFDbkQsT0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBWCxDQUFXLENBQUM7QUFBdkMsQ0FBdUMsQ0FBQTtBQUV6QyxJQUFNLFlBQVksR0FBRyxVQUFDLENBQU07SUFDMUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7QUFDNUIsQ0FBQyxDQUFBO0FBRUQsSUFBTSxXQUFXLEdBQUcsVUFBQyxJQUFZLEVBQUUsT0FBWSxFQUFFLFFBQWdCO0lBQ3pELElBQUEsd0JBQXFELEVBQXBELG9CQUFZ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