From c333cd05d46b24540f06cc0af4b446723cc7694f Mon Sep 17 00:00:00 2001 From: Arvid Nicolaas Date: Mon, 25 Dec 2023 22:52:04 +0100 Subject: [PATCH] fix(table): modifyAt did not correctly remove reference to immutable instance on change --- deno_dist/table/custom/implementation/base.ts | 4 ++++ packages/table/src/custom/implementation/base.mts | 4 ++++ packages/table/test-utils/table-standard-test.mts | 1 + 3 files changed, 9 insertions(+) diff --git a/deno_dist/table/custom/implementation/base.ts b/deno_dist/table/custom/implementation/base.ts index 0b3ab8c99..5a8a968d3 100644 --- a/deno_dist/table/custom/implementation/base.ts +++ b/deno_dist/table/custom/implementation/base.ts @@ -775,6 +775,10 @@ export class TableBuilder< }, }); + if (changed) { + this.source = undefined; + } + return changed; }; diff --git a/packages/table/src/custom/implementation/base.mts b/packages/table/src/custom/implementation/base.mts index f9b162521..80980ab1c 100644 --- a/packages/table/src/custom/implementation/base.mts +++ b/packages/table/src/custom/implementation/base.mts @@ -775,6 +775,10 @@ export class TableBuilder< }, }); + if (changed) { + this.source = undefined; + } + return changed; }; diff --git a/packages/table/test-utils/table-standard-test.mts b/packages/table/test-utils/table-standard-test.mts index fc107b14d..9f5699524 100644 --- a/packages/table/test-utils/table-standard-test.mts +++ b/packages/table/test-utils/table-standard-test.mts @@ -701,6 +701,7 @@ export function runTableTestsWith( expect(b.modifyAt(1, 'a', { ifExists: () => true })).toBe(false); expect(b.modifyAt(1, 'a', { ifExists: () => false })).toBe(true); expect(b.modifyAt(1, 'b', { ifNew: true })).toBe(true); + expect(b.get(1, 'b')).toBe(true); expect(b.modifyAt(1, 'b', { ifExists: () => true })).toBe(false); expect(b.modifyAt(1, 'b', { ifExists: () => false })).toBe(true); expect(b.modifyAt(10, 'a', { ifNew: (none) => none })).toBe(false);