"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LazyJsonString = exports.StringWrapper = void 0; const StringWrapper = function () { const Class = Object.getPrototypeOf(this).constructor; const Constructor = Function.bind.apply(String, [null, ...arguments]); const instance = new Constructor(); Object.setPrototypeOf(instance, Class.prototype); return instance; }; exports.StringWrapper = StringWrapper; exports.StringWrapper.prototype = Object.create(String.prototype, { constructor: { value: exports.StringWrapper, enumerable: false, writable: true, configurable: true, }, }); Object.setPrototypeOf(exports.StringWrapper, String); class LazyJsonString extends exports.StringWrapper { deserializeJSON() { return JSON.parse(super.toString()); } toJSON() { return super.toString(); } static fromObject(object) { if (object instanceof LazyJsonString) { return object; } else if (object instanceof String || typeof object === "string") { return new LazyJsonString(object); } return new LazyJsonString(JSON.stringify(object)); } } exports.LazyJsonString = LazyJsonString;