UNPKG

transmutable

Version:

immutable objects that pretend to be mutable

92 lines (66 loc) 2.11 kB
const _require = require; const assert = require('assert'); const {transformAt} = require('../transform'); describe('example', () => { it('transformAt', () => { const require = (module) => { if (module == 'transmutable') return _require('..'); }; const original = { some: { deep: { object: { foo: 123, bar: 'hello' } } } } const copy = transformAt(['some', 'deep', 'object'], d => { d.foo = 456; d.bar += ' world'; }, original); assert.deepStrictEqual(copy, { some: { deep: { object: { foo: 456, bar: 'hello world' } } } }); }); it('works', () => { const require = (module) => { if (module == 'transmutable') return _require('..'); }; // COPY FROM HERE const log = console.log.bind(console); const { transform } = require('transmutable'); (() => { const { transform } = require('transmutable'); const original = {a: 123}; const copy = transform(draft => { draft.a = 456; }, original); console.log({original, copy}); // { original: { a: 123 }, copy: { a: 456 } } })(); const original = { cow: 123, dogs: { muchWow: 1 } }; // easy way: const copy = transform(stage => { stage.cow = 'doge'; }, original); log(copy); // { cow: 'doge', dogs: { muchWow: 1 } } log(original); // still the same: { cow: 123, dogs: { muchWow: 1 } } log(copy.dogs === original.dogs); // true // END COPY FROM HERE assert.deepStrictEqual(original, {cow: 123, dogs:{muchWow:1}}); }); });