clonus
Version:
Ultimate object cloning library.
40 lines • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClassCloner = exports.BaseClassCloner = void 0;
const makeClone_1 = require("./makeClone");
class BaseClassCloner {
constructor(klass) {
this.klass = klass;
}
canClone(input) {
return input instanceof this.klass;
}
}
exports.BaseClassCloner = BaseClassCloner;
var ClassCloner;
(function (ClassCloner) {
function newForClass(klass, factory, options) {
const clonerClass = forClass(klass, factory, options);
return new clonerClass();
}
ClassCloner.newForClass = newForClass;
function forClass(klass, factory, options) {
return class DynamicClassCloner extends BaseClassCloner {
constructor() {
super(klass);
}
clone(input, context) {
if (!this.canClone(input)) {
throw "Can not clone this input.";
}
const result = factory(input);
if (!(options === null || options === void 0 ? void 0 : options.ignoreKeys)) {
(0, makeClone_1.cloneObjectKeys)(input, result, context);
}
return result;
}
};
}
ClassCloner.forClass = forClass;
})(ClassCloner = exports.ClassCloner || (exports.ClassCloner = {}));
//# sourceMappingURL=classCloner.js.map