UNPKG

@booxood/mocker-api

Version:

This is dev support mock RESTful API.

55 lines (49 loc) 4.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = delay; /** * You can use functional tool to enhance mock. [#17](https://github.com/jaywcjlove/webpack-api-mocker/issues/17) * * ```js * const delay = require('mocker-api/lib/delay'); * const noProxy = process.env.NO_PROXY === 'true'; * * const proxy = { * 'GET /api/user': { * id: 1, * username: 'kenny', * sex: 6 * }, * // ... * } * module.exports = (noProxy ? {} : delay(proxy, 1000)); * ``` */ function delay(proxy, timer = 0) { const mockApi = {}; Object.keys(proxy).forEach(key => { const result = proxy[key]; if (Object.prototype.toString.call(result) === '[object String]' && /^http/.test(result) || key === '_proxy' || timer === 0) { mockApi[key] = proxy[key]; } else { mockApi[key] = function (req, res) { let foo; if (Object.prototype.toString.call(result) === '[object Function]') { foo = result; } else { foo = (_req, _res) => { return _res.json(result); }; } setTimeout(() => { foo(req, res); }, timer); }; } }); return mockApi; } module.exports = exports.default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWxheS50cyJdLCJuYW1lcyI6WyJkZWxheSIsInByb3h5IiwidGltZXIiLCJtb2NrQXBpIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJyZXN1bHQiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJ0ZXN0IiwicmVxIiwicmVzIiwiZm9vIiwiX3JlcSIsIl9yZXMiLCJqc29uIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLFNBQVNBLEtBQVQsQ0FBZUMsS0FBZixFQUF3Q0MsS0FBYSxHQUFHLENBQXhELEVBQXlFO0FBQ3RGLFFBQU1DLE9BQXFCLEdBQUcsRUFBOUI7QUFDQUMsRUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVlKLEtBQVosRUFBbUJLLE9BQW5CLENBQTRCQyxHQUFELElBQVM7QUFDbEMsVUFBTUMsTUFBTSxHQUFHUCxLQUFLLENBQUNNLEdBQUQsQ0FBcEI7O0FBQ0EsUUFBS0gsTUFBTSxDQUFDSyxTQUFQLENBQWlCQyxRQUFqQixDQUEwQkMsSUFBMUIsQ0FBK0JILE1BQS9CLE1BQTJDLGlCQUEzQyxJQUFnRSxRQUFRSSxJQUFSLENBQWFKLE1BQWIsQ0FBakUsSUFBb0dELEdBQUcsS0FBSyxRQUE1RyxJQUF3SEwsS0FBSyxLQUFLLENBQXRJLEVBQXlJO0FBQ3ZJQyxNQUFBQSxPQUFPLENBQUNJLEdBQUQsQ0FBUCxHQUFlTixLQUFLLENBQUNNLEdBQUQsQ0FBcEI7QUFDRCxLQUZELE1BRU87QUFDTEosTUFBQUEsT0FBTyxDQUFDSSxHQUFELENBQVAsR0FBZSxVQUFVTSxHQUFWLEVBQXdCQyxHQUF4QixFQUF1QztBQUNwRCxZQUFJQyxHQUFKOztBQUNBLFlBQUlYLE1BQU0sQ0FBQ0ssU0FBUCxDQUFpQkMsUUFBakIsQ0FBMEJDLElBQTFCLENBQStCSCxNQUEvQixNQUEyQyxtQkFBL0MsRUFBb0U7QUFDbEVPLFVBQUFBLEdBQUcsR0FBR1AsTUFBTjtBQUNELFNBRkQsTUFFTztBQUNMTyxVQUFBQSxHQUFHLEdBQUcsQ0FBQ0MsSUFBRCxFQUFnQkMsSUFBaEIsS0FBbUM7QUFDdkMsbUJBQU9BLElBQUksQ0FBQ0MsSUFBTCxDQUFVVixNQUFWLENBQVA7QUFDRCxXQUZEO0FBR0Q7O0FBQ0RXLFFBQUFBLFVBQVUsQ0FBQyxNQUFNO0FBQ2ZKLFVBQUFBLEdBQUcsQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQUg7QUFDRCxTQUZTLEVBRVBaLEtBRk8sQ0FBVjtBQUdELE9BWkQ7QUFhRDtBQUNGLEdBbkJEO0FBcUJBLFNBQU9DLE9BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBNb2NrZXJQcm94eVJvdXRlLCBNb2NrZXJSZXN1bHQsIE1vY2tlclJlc3VsdEZ1bmN0aW9uIH0gZnJvbSAnLi8nO1xuXG4vKipcbiAqIFlvdSBjYW4gdXNlIGZ1bmN0aW9uYWwgdG9vbCB0byBlbmhhbmNlIG1vY2suIFsjMTddKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXl3Y2psb3ZlL3dlYnBhY2stYXBpLW1vY2tlci9pc3N1ZXMvMTcpXG4gKiBcbiAqIGBgYGpzXG4gKiBjb25zdCBkZWxheSA9IHJlcXVpcmUoJ21vY2tlci1hcGkvbGliL2RlbGF5Jyk7XG4gKiBjb25zdCBub1Byb3h5ID0gcHJvY2Vzcy5lbnYuTk9fUFJPWFkgPT09ICd0cnVlJztcbiAqIFxuICogY29uc3QgcHJveHkgPSB7XG4gKiAgICdHRVQgL2FwaS91c2VyJzoge1xuICogICAgIGlkOiAxLFxuICogICAgIHVzZXJuYW1lOiAna2VubnknLFxuICogICAgIHNleDogNlxuICogICB9LFxuICogICAvLyAuLi5cbiAqIH1cbiAqIG1vZHVsZS5leHBvcnRzID0gKG5vUHJveHkgPyB7fSA6IGRlbGF5KHByb3h5LCAxMDAwKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVsYXkocHJveHk6IE1vY2tlclByb3h5Um91dGUsIHRpbWVyOiBudW1iZXIgPSAwKTogTW9ja2VyUmVzdWx0IHtcbiAgY29uc3QgbW9ja0FwaTogTW9ja2VyUmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKHByb3h5KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBwcm94eVtrZXldO1xuICAgIGlmICgoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkgPT09ICdbb2JqZWN0IFN0cmluZ10nICYmIC9eaHR0cC8udGVzdChyZXN1bHQgYXMgc3RyaW5nKSkgfHwga2V5ID09PSAnX3Byb3h5JyB8fCB0aW1lciA9PT0gMCkge1xuICAgICAgbW9ja0FwaVtrZXldID0gcHJveHlba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW9ja0FwaVtrZXldID0gZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAgICAgICBsZXQgZm9vOiBNb2NrZXJSZXN1bHRGdW5jdGlvbjtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nKSB7XG4gICAgICAgICAgZm9vID0gcmVzdWx0IGFzIE1vY2tlclJlc3VsdEZ1bmN0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvbyA9IChfcmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF9yZXMuanNvbihyZXN1bHQpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgZm9vKHJlcSwgcmVzKTtcbiAgICAgICAgfSwgdGltZXIpO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBtb2NrQXBpO1xufSJdfQ==