UNPKG

webpack-mock-server

Version:

Mocks api requests for webpack-dev-server with hot-replacement

115 lines (114 loc) 3.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tryParseDate = tryParseDate; exports.tryParseJSONDate = tryParseJSONDate; exports.parseFormDataObject = parseFormDataObject; exports.requireDefault = requireDefault; const log_1 = __importDefault(require("./log")); function tryParseDate(value) { if (typeof value !== "string" || value.length < 19 || value.length > 27) return value; if (/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/.test(value)) { const v = Date.parse(value); if (!Number.isNaN(v)) return new Date(v); } return value; } function tryParseJSONDate(obj) { try { function map(v) { if (!v) return v; const t = typeof v; if (t === "string") { return tryParseDate(v); } if (t !== "object" || v instanceof Date) return v; if (Array.isArray(v)) { for (let i = 0; i < v.length; ++i) { v[i] = map(v[i]); } } else { const keys = Object.keys(v); for (let i = 0; i < keys.length; ++i) { const key = keys[i]; v[key] = map(v[key]); } } return v; } return map(obj); } catch (err) { log_1.default.error("Failed parsing json-date", err); return obj; } } function parseFormDataObject(v) { try { if (v == null) { return null; } if (Array.isArray(v)) { v.forEach((_, i) => { v[i] = parseFormDataObject(v[i]); }); return v; } if (typeof v === "object") { const result = {}; Object.entries(v).forEach(([key, value]) => { const keys = key.replace(/\[(\d+)]/g, ".$1").split("."); let current = result; for (let i = 0; i < keys.length; i++) { const k = keys[i]; if (i === keys.length - 1) { current[k] = parseFormDataObject(value); return; } const nextKey = keys[i + 1]; current[k] = current[k] || (Number.isNaN(Number(nextKey)) ? {} : []); current = current[k]; } }); return result; } if (v === "true") return true; if (v === "false") return false; if (v === "null") return null; const num = Number(v); if (!Number.isNaN(num)) return num; return tryParseJSONDate(v); } catch (err) { log_1.default.error("Failed parsing form-data primitives", err); return v; } } function requireDefault(file) { const m = require(file.path); const arr = []; function moduleEachWrapper(usedApp) { arr.forEach((f) => f(usedApp)); } Object.keys(m).forEach((key) => { const f = m[key]; if (typeof f !== "function") { log_1.default.error(`Wrong 'export ${key} = ${f}' from ${file.rootName}: expected exporting only functions`); } else { arr.push(f); } }); return moduleEachWrapper; }