react-torch
Version:
A lib to server-side render with react.
131 lines (130 loc) • 4.25 kB
JavaScript
;
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.forceCheckValue = exports.forcePlainDataCheck = exports.isThenble = exports.shallowEqual = exports.isPlainObject = exports.identity = void 0;
var identity = function (x) { return x; };
exports.identity = identity;
var isPlainObject = function (obj) {
if (typeof obj !== 'object' || obj === null)
return false;
var proto = obj;
while (Object.getPrototypeOf(proto) !== null) {
proto = Object.getPrototypeOf(proto);
}
return Object.getPrototypeOf(obj) === proto;
};
exports.isPlainObject = isPlainObject;
var shallowEqual = function (objA, objB) {
if (objA === objB) {
return true;
}
if (typeof objA !== 'object' ||
objA === null ||
typeof objB !== 'object' ||
objB === null) {
return false;
}
var keysA = Object.keys(objA);
var keysB = Object.keys(objB);
if (keysA.length !== keysB.length) {
return false;
}
// Test for A's keys different from B.
for (var i = 0; i < keysA.length; i++) {
if (!objB.hasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {
return false;
}
}
return true;
};
exports.shallowEqual = shallowEqual;
var isThenble = function (input) {
return !!(input && typeof input.then === 'function');
};
exports.isThenble = isThenble;
var forcePlainDataCheck = function (input, path) {
if (path === void 0) { path = ''; }
if (input === null)
return;
var type = typeof input;
if (type === 'function') {
throw new Error("Expected plain data, but found a function in " + path + ": " + input);
}
if (Array.isArray(input)) {
for (var i = 0; i < input.length; i++) {
(0, exports.forcePlainDataCheck)(input[i], path + "[" + i + "]");
}
return;
}
if (type === 'object') {
if (!(0, exports.isPlainObject)(input)) {
throw new Error("Expected plain object, but found an instance of " + input.constructor + " in path " + path + ": " + input);
}
for (var key in input) {
(0, exports.forcePlainDataCheck)(input[key], path + "." + key);
}
return;
}
};
exports.forcePlainDataCheck = forcePlainDataCheck;
var wrapFunctionForChecking = function (f) {
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
(0, exports.forcePlainDataCheck)(args);
return f.apply(void 0, __spreadArray([], __read(args), false));
};
};
var forceCheckValue = function (value) {
if (typeof value === 'function') {
return wrapFunctionForChecking(value);
}
if (Array.isArray(value)) {
return forceCheckArray(value);
}
if ((0, exports.isPlainObject)(value)) {
return forceCheckObject(value);
}
return value;
};
exports.forceCheckValue = forceCheckValue;
var forceCheckObject = function (object) {
var result = {};
for (var key in object) {
result[key] = (0, exports.forceCheckValue)(object[key]);
}
return result;
};
var forceCheckArray = function (array) {
var result = [];
for (var i = 0; i < array.length; i++) {
result[i] = (0, exports.forceCheckValue)(array[i]);
}
return result;
};