39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
"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;
|