UNPKG

plain-immutable

Version:
65 lines (46 loc) 1.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = makeObjectImmutable; var _ = require('.'); var _2 = _interopRequireDefault(_); var _tag = require('./tag'); var _set = require('./set'); var _remove = require('./remove'); var _merge = require('./merge'); var _merge2 = _interopRequireDefault(_merge); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function makeObjectImmutable(obj) { if ((0, _tag.isImmutable)(obj)) return obj; _tag.setImmutableTag.call(obj); // deeply make value immutable Object.keys(obj).forEach(function (key) { (0, _2.default)(obj[key]); }); addNewMethods.call(obj); return Object.freeze(obj); } function mutable() { var _this = this; if (!(0, _tag.isImmutable)(this)) return this; var result = {}; Object.keys(this).forEach(function (key) { result[key] = _this[key]; }); // addNewMethods.call(result); return result; } function addNewMethods() { Object.defineProperties(this, { mutable: { value: mutable }, asMutable: { value: mutable }, set: { value: _set.set }, setIn: { value: _set.setIn }, remove: { value: _remove.remove }, delete: { value: _remove.remove }, removeIn: { value: _remove.removeIn }, deleteIn: { value: _remove.removeIn }, merge: { value: _merge2.default } }); }