@saber2pr/react
Version:
react in Typescript.
58 lines (57 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/*
* @Author: saber2pr
* @Date: 2019-12-07 15:20:04
* @Last Modified by: saber2pr
* @Last Modified time: 2019-12-11 20:51:02
*/
var MAX_STACK_SIZE = 10000;
var MAX_STACK_ID = Symbol("MAX_STACK_ID");
var setMaxStackSize = function (size) {
MAX_STACK_SIZE = size;
};
exports.setMaxStackSize = setMaxStackSize;
var resetStackSize = function (id) {
if (id === void 0) { id = "default"; }
var size = TestStackSize[MAX_STACK_ID];
if (size) {
size[id] = 0;
}
};
exports.resetStackSize = resetStackSize;
var resetStack = function () {
TestStackSize[MAX_STACK_ID] = {};
};
exports.resetStack = resetStack;
var listeners;
var watchStackSize = function (callback) {
if (!listeners) {
listeners = [];
}
listeners.push(callback);
return function () {
listeners.splice(listeners.indexOf(callback), 1);
};
};
exports.watchStackSize = watchStackSize;
var TestStackSize = function (id) {
if (id === void 0) { id = "default"; }
if (!TestStackSize[MAX_STACK_ID]) {
resetStack();
}
var size = TestStackSize[MAX_STACK_ID];
if (id in size) {
size[id]++;
}
else {
size[id] = 1;
}
if (size[id] > MAX_STACK_SIZE) {
throw new Error("STACK SIZE OVERFLOW: " + id + ", try to reset the MAX_STACK_SIZE(" + MAX_STACK_SIZE + ");\n method: React.Stack.setMaxStackSize()");
}
if (listeners) {
listeners.forEach(function (listener) { return listener({ id: id, size: size[id] }, size); });
}
};
exports.TestStackSize = TestStackSize;