webpack-mock-server
Version:
Mocks api requests for webpack-dev-server with hot-replacement
115 lines (114 loc) • 3.57 kB
JavaScript
;
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;
}