diff --git a/src/cell.ts b/src/cell.ts index 8f4266c..5cd4274 100644 --- a/src/cell.ts +++ b/src/cell.ts @@ -110,13 +110,13 @@ abstract class SubscribeBench { // console.log(`Cell ${this.name}: `, `subscriber ${id} registered`); const subscriber: [(value: V) => void, number] = [run, id]; this._subscribers.push(subscriber); + // returns an unsubscribe function return () => { // console.log({ // cell: this.name, // subscriber: id, // unsubscribeOccurrences: this._subscribers.map((f) => f[0] === run), // }); - // returns an unsubscribe function const index = this._subscribers.indexOf(subscriber); if (index !== -1) this._subscribers.splice(index, 1); }; diff --git a/src/proxy.ts b/src/proxy.ts index db164e1..2a9ea56 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -280,4 +280,15 @@ export class SheetProxy { this._sheet.collect(...this._list); this._list = []; } + + /** + * @todo transaction semantics + */ + async values[]>( + ...l: In + ): Promise<{ [K in keyof In]: In[K] extends AnyCell ? T : never }> { + return Promise.all(l.map((cell) => cell.consolidatedValue)) as Promise<{ + [K in keyof In]: In[K] extends AnyCell ? T : never; + }>; + } }