| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { __read, __spread } from "tslib";
- var DelayedConstructor = (function () {
- function DelayedConstructor(wrap) {
- this.wrap = wrap;
- this.reflectMethods = [
- "get",
- "getPrototypeOf",
- "setPrototypeOf",
- "getOwnPropertyDescriptor",
- "defineProperty",
- "has",
- "set",
- "deleteProperty",
- "apply",
- "construct",
- "ownKeys"
- ];
- }
- DelayedConstructor.prototype.createProxy = function (createObject) {
- var _this = this;
- var target = {};
- var init = false;
- var value;
- var delayedObject = function () {
- if (!init) {
- value = createObject(_this.wrap());
- init = true;
- }
- return value;
- };
- return new Proxy(target, this.createHandler(delayedObject));
- };
- DelayedConstructor.prototype.createHandler = function (delayedObject) {
- var handler = {};
- var install = function (name) {
- handler[name] = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- args[0] = delayedObject();
- var method = Reflect[name];
- return method.apply(void 0, __spread(args));
- };
- };
- this.reflectMethods.forEach(install);
- return handler;
- };
- return DelayedConstructor;
- }());
- export { DelayedConstructor };
- export function delay(wrappedConstructor) {
- if (typeof wrappedConstructor === "undefined") {
- throw new Error("Attempt to `delay` undefined. Constructor must be wrapped in a callback");
- }
- return new DelayedConstructor(wrappedConstructor);
- }
|