UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

27 lines (26 loc) 964 B
import { Log, misuse } from "./Dbg.js"; export class Sealant { static seal(collection, sealedType, typeName, member) { let result = collection; const createCopy = result[Sealant.CreateCopy]; if (createCopy) result = createCopy.call(result); if (Log.isOn && Log.opt.write) Log.write("║", " ", `${typeName}.${member.toString()} - collection is sealed`); Object.setPrototypeOf(result, sealedType); Object.freeze(result); return result; } static toMutable(collection) { const a = collection; const createCopy = a[Sealant.CreateCopy]; if (createCopy) collection = createCopy.call(collection); return collection; } static error(collection) { return misuse("use toMutable to create mutable copy of sealed collection"); } } Sealant.SealedType = Symbol("rxSealedType"); Sealant.CreateCopy = Symbol("rxCreateCopy");