diff --git a/packages/frptools/package.json b/packages/frptools/package.json index 6e7dac0..1ee960c 100644 --- a/packages/frptools/package.json +++ b/packages/frptools/package.json @@ -1,6 +1,6 @@ { "name": "frptools", - "version": "3.2.1", + "version": "3.2.2", "description": "Observable Property and Computed data streams", "main": "src/index.js", "files": [ diff --git a/packages/frptools/spec/container.spec.js b/packages/frptools/spec/container.spec.js index 9672351..c22181f 100644 --- a/packages/frptools/spec/container.spec.js +++ b/packages/frptools/spec/container.spec.js @@ -2,6 +2,17 @@ import { container, computed } from '../src/index.js'; import { dirtyMock, hashSet } from '../src/testUtil.js'; describe('A container', () => { + it('tracks properties', () => { + let i = 0; + const a = container({}, () => i++); + + a.a = 1; + expect(a.a).toBe(a._.a); + + a.b = false; + expect(a.b).toBe(a._.b); + }); + it('notifies dependents of updates', () => { let runCount = 0; let currentValue = new Set(); diff --git a/packages/frptools/src/container.js b/packages/frptools/src/container.js index eac0aa4..fdeda92 100644 --- a/packages/frptools/src/container.js +++ b/packages/frptools/src/container.js @@ -48,7 +48,9 @@ export function container(store, hash) { target[name] = newVal; checkUpdate(target); - return newVal; + // Returning a falsey value causes TypeError + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/set#Invariants + return newVal || true; } });