UNPKG

ember-source

Version:

A JavaScript framework for creating ambitious web applications

32 lines (28 loc) 841 B
import { d as dirtyTagFor, t as tagFor } from './meta-B9mldqPL.js'; import { a as consumeTag } from './cache-BIlOoPA7.js'; function trackedData(key, initializer) { let values = new WeakMap(); let hasInitializer = typeof initializer === 'function'; function getter(self) { consumeTag(tagFor(self, key)); let value; // If the field has never been initialized, we should initialize it if (hasInitializer && !values.has(self)) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme value = initializer.call(self); values.set(self, value); } else { value = values.get(self); } return value; } function setter(self, value) { dirtyTagFor(self, key); values.set(self, value); } return { getter, setter }; } export { trackedData as t };