@benev/slate
Version:
frontend web stuff
27 lines (21 loc) • 640 B
text/typescript
import {Recording} from "./types.js"
import {maptool} from "../../tools/maptool.js"
import {make_map, make_set} from "./makers.js"
import {Collector} from "../../reactor/types.js"
export class Recorder {
#recordings: Recording[] = []
record<P>(fn: Collector<P>) {
const recording: Recording = make_map()
this.#recordings.push(recording)
const payload = fn()
this.#recordings.pop()
return {payload, recording}
}
record_that_key_was_accessed(state: {}, key: string) {
const recording = this.#recordings.at(-1)
if (recording) {
const keyset = maptool(recording).guarantee(state, make_set)
keyset.add(key)
}
}
}