UNPKG

json-tots

Version:

Template of Templates, a.k.a Template Should Eat Itself

113 lines (111 loc) 4.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray")); var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property")); var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each")); var _getOwnPropertyNames = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-names")); var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat")); var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map")); var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify")); var F = require('functional-pipelines'); // JSON.stringify return empty object for Error otherwise if (!('toJSON' in Error.prototype)) { (0, _defineProperty["default"])(Error.prototype, 'toJSON', { value: function value() { var _context; var alt = {}; (0, _forEach["default"])(_context = (0, _getOwnPropertyNames["default"])(this)).call(_context, function (key) { alt[key] = this[key]; }, this); return alt; }, configurable: true, writable: true }); } function log() { var _console, _context2; for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) { params[_key] = arguments[_key]; } (_console = console).log.apply(_console, (0, _toConsumableArray2["default"])(serialize.apply(void 0, (0, _concat["default"])(_context2 = [4]).call(_context2, params)))); } function peek() { for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { params[_key2] = arguments[_key2]; } log.apply(void 0, params); return params.length === 1 ? params[0] : params; } function logLine() { var _console2, _context3; for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { params[_key3] = arguments[_key3]; } (_console2 = console).log.apply(_console2, (0, _toConsumableArray2["default"])(serialize.apply(void 0, (0, _concat["default"])(_context3 = [0]).call(_context3, params)))); } function error() { var _console3, _context4, _context5; for (var _len4 = arguments.length, params = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { params[_key4] = arguments[_key4]; } (_console3 = console).error.apply(_console3, (0, _concat["default"])(_context4 = ['Error:']).call(_context4, (0, _toConsumableArray2["default"])(serialize.apply(void 0, (0, _concat["default"])(_context5 = [4]).call(_context5, params))))); } function serialize(indent) { for (var _len5 = arguments.length, params = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { params[_key5 - 1] = arguments[_key5]; } return (0, _map["default"])(params).call(params, stringify(indent)); } var stringify = function stringify(indent) { return function (value) { return F.isString(value) ? value : (0, _stringify["default"])(value, null, indent); }; }; var repeat = function repeat(str) { return function (count) { var _marked = /*#__PURE__*/_regenerator["default"].mark(generate); function generate() { return _regenerator["default"].wrap(function generate$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: if (!count) { _context6.next = 6; break; } _context6.next = 3; return str; case 3: count--; _context6.next = 0; break; case 6: case "end": return _context6.stop(); } } }, _marked); } return (0, _toConsumableArray2["default"])(generate()).join(''); }; }; var line = function line(count) { var sym = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-'; return console.log(repeat(sym)(count)); }; module.exports = { log: log, peek: peek, error: error, repeat: repeat, logLine: logLine, line: line, time: function time(label) { return console.time(label); }, timeEnd: function timeEnd(label) { return console.timeEnd(label); } };