UNPKG

tilia

Version:

🍃 State management library, domain-driven.

8 lines (7 loc) 39.4 kB
{ "version": 3, "sources": ["../src/Tilia.mjs"], "sourcesContent": ["// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nlet raise = (function (message) {\n throw new Error(message)\n});\n\nlet reraise = (function (e) {\n console.error(\"Reraising exception after flush\");\n throw e\n});\n\nlet callCb = (function(cb, k, v) { cb(k, v) });\n\nfunction cleanTrace(stack) {\n if (typeof stack !== \"string\") return stack;\n \n const cleaned = [\"Exception thrown in computed or observe\"];\n let collapsing = false;\n\n for (const line of stack.split(\"\\n\")) {\n if (/src\\/Tilia\\.mjs:\\d+:\\d+/.test(line)) {\n if (!collapsing) {\n cleaned.push(\" [... tilia internals]\");\n collapsing = true;\n }\n } else {\n cleaned.push(line);\n collapsing = false;\n }\n }\n\n return cleaned.join(\"\\n\");\n}\n;\n\nlet symbol = (function(s) {\n return Symbol.for('tilia:' + s);\n});\n\nlet indexKey = symbol(\"indexKey\");\n\nlet metaKey = symbol(\"metaKey\");\n\nlet dynamicKey = symbol(\"dynamicKey\");\n\nlet ctxKey = symbol(\"ctx\");\n\nlet proxiable = (function(v) {\n if ( typeof v === 'object' && v !== null) {\n const proto = Object.getPrototypeOf(v)\n return proto === Object.prototype || proto === Array.prototype || proto === null\n }\n return false;\n});\n\nlet dynamic = (function(v) {\n return typeof v === 'object' && v !== null && v[dynamicKey] ? v : undefined;\n});\n\nfunction readonly(o, k) {\n let d = Object.getOwnPropertyDescriptor(o, k);\n if (d == null) {\n return false;\n } else {\n return d.writable === false;\n }\n}\n\nlet setError = (function (root, e) {\n if (typeof e === \"object\" && e !== null) {\n if (e.stack) {\n console.error(cleanTrace(e.stack));\n } else {\n console.error(e);\n }\n root.error = e;\n }\n});\n\nfunction observeKey(observed, key) {\n let w = observed.get(key);\n if (w !== null && w !== undefined) {\n return w;\n }\n w === null;\n let w$1 = {\n state: \"Pristine\",\n key: key,\n observed: observed,\n observers: new Set()\n };\n observed.set(key, w$1);\n return w$1;\n}\n\nfunction flush(root) {\n if (root.expired.size > 0) {\n while (root.expired.size > 0) {\n let expired = root.expired;\n root.expired = new Set();\n expired.forEach(observer => observer.notify());\n };\n }\n let gc = root.gc;\n if (gc.active.size >= gc.threshold) {\n gc.quarantine.forEach(w => {\n if (w.state === \"Pristine\" && w.observers.size === 0) {\n w.state = \"Cleared\";\n w.observed.delete(w.key);\n return;\n }\n });\n gc.quarantine = gc.active;\n gc.active = new Set();\n }\n if (root.error === undefined) {\n return;\n }\n let e = root.error;\n root.error = undefined;\n reraise(e);\n}\n\nfunction _clear(observer) {\n let root = observer.root;\n observer.observing.forEach(watchers => {\n if (watchers.state === \"Pristine\" && watchers.observers.delete(observer) && watchers.observers.size === 0) {\n root.gc.active.add(watchers);\n return;\n }\n });\n let o = root.observer;\n if ((o == null) || o !== observer) {\n return;\n } else {\n root.observer = undefined;\n if (!root.lock) {\n return flush(root);\n } else {\n return;\n }\n }\n}\n\nfunction _ready(observer, notifyIfChanged) {\n observer.observing.find((w, idx) => {\n let match = w.state;\n switch (match) {\n case \"Pristine\" :\n w.observers.add(observer);\n return false;\n case \"Changed\" :\n case \"Cleared\" :\n break;\n }\n if (notifyIfChanged) {\n _clear(observer);\n observer.notify();\n return true;\n }\n let w$1 = observeKey(w.observed, w.key);\n w$1.observers.add(observer);\n observer.observing[idx] = w$1;\n return false;\n });\n let root = observer.root;\n let o = root.observer;\n if ((o == null) || o !== observer) {\n return;\n } else {\n root.observer = undefined;\n if (!root.lock) {\n return flush(root);\n } else {\n return;\n }\n }\n}\n\nfunction notify(root, observed, key) {\n let watchers = observed.get(key);\n if (watchers == null) {\n return;\n }\n observed.delete(key);\n watchers.state = \"Changed\";\n let expired = root.expired;\n watchers.observers.forEach(observer => {\n _clear(observer);\n expired.add(observer);\n });\n let match = root.observer;\n if (match !== null && match !== undefined) {\n return;\n }\n match === null;\n if (!root.lock) {\n return flush(root);\n }\n}\n\nfunction set(node, isArray, _fromComputed, target, _key, _value) {\n while (true) {\n let value = _value;\n let key = _key;\n let fromComputed = _fromComputed;\n let hadKey = Reflect.has(target, key);\n let prev = Reflect.get(target, key);\n let proxiable$1 = proxiable(value);\n let same;\n if (proxiable$1) {\n let m = Reflect.get(value, metaKey);\n same = (m == null) ? prev === value : m.target === prev;\n } else {\n same = prev === value;\n }\n if (same) {\n return true;\n }\n if (!Reflect.set(target, key, value)) {\n return false;\n }\n let key$1 = isArray && key === \"length\" ? indexKey : key;\n if (proxiable$1) {\n node.proxied.delete(key$1);\n }\n if (!fromComputed) {\n let clear = node.computes.get(key$1);\n if (clear == null) {\n clear === null;\n } else {\n node.computes.delete(key$1);\n clear();\n }\n }\n let match = dynamic(value);\n if (match == null) {\n match === null;\n } else {\n let w = node.observed.get(key$1);\n if (w == null) {\n return true;\n }\n if (!(w.state === \"Pristine\" && w.observers.size > 0)) {\n return true;\n }\n Reflect.set(target, key$1, prev);\n let compile$1 = callback => compile(node, isArray, target, key$1, callback);\n let setter = v => {\n set(node, isArray, true, target, key$1, v);\n };\n let get = _value => {\n while (true) {\n let value = _value;\n let dynamic$1 = dynamic(value);\n if (dynamic$1 == null) {\n return value;\n }\n let v;\n switch (dynamic$1.TAG) {\n case \"Computed\" :\n v = compile$1(dynamic$1._0);\n break;\n case \"Source\" :\n let source = dynamic$1._0;\n let v$1 = source.value;\n let val = {\n contents: v$1\n };\n let set = v => {\n val.contents = v;\n setter(v);\n };\n v = compile$1((set(v$1), () => {\n let callback = source.source;\n callback(val.contents, set);\n return val.contents;\n }));\n break;\n case \"Store\" :\n let store = dynamic$1._0;\n v = compile$1(() => store.store(setter));\n break;\n case \"Compiled\" :\n let rebuild = dynamic$1._0.rebuild;\n v = rebuild();\n break;\n }\n if (!proxiable(v)) {\n return v;\n }\n _value = v;\n continue;\n };\n };\n let v = get(value);\n _value = v;\n _key = key$1;\n _fromComputed = true;\n continue;\n }\n if (!fromComputed) {\n let cbs = node.changes;\n if (cbs == null) {\n cbs === null;\n } else {\n cbs.forEach(cb => callCb(cb, key, value));\n }\n }\n notify(node.root, node.observed, key$1);\n if (!hadKey) {\n notify(node.root, node.observed, indexKey);\n }\n return true;\n };\n}\n\nfunction compile(node, isArray, target, key, callback) {\n let lastValue = {\n v: undefined\n };\n let observer = {\n o: undefined\n };\n let compute = {\n rebuild: undefined\n };\n let compiled = {\n TAG: \"Compiled\",\n _0: compute\n };\n Reflect.set(compiled, dynamicKey, true);\n let notify = () => {\n let v = Reflect.get(target, key);\n if (v !== compiled) {\n lastValue.v = v;\n }\n let w = node.observed.get(key);\n if (w !== null && w !== undefined) {\n if (w.observers.size > 0) {\n set(node, isArray, true, target, key, rebuild());\n } else {\n w.state = \"Changed\";\n node.observed.delete(key);\n node.proxied.delete(key);\n Reflect.set(target, key, compiled);\n }\n return;\n }\n w === null;\n node.proxied.delete(key);\n Reflect.set(target, key, compiled);\n };\n let rebuild = () => {\n let curr = Reflect.get(target, key);\n if (curr === compiled) {\n Reflect.set(target, key, lastValue.v);\n } else {\n lastValue.v = curr;\n }\n let o_root = node.root;\n let o_observing = [];\n let o = {\n root: o_root,\n notify: notify,\n observing: o_observing\n };\n observer.o = o;\n let previous = node.root.observer;\n node.root.observer = o;\n let v;\n try {\n v = callback();\n } catch (_e) {\n setError(node.root, _e);\n _clear(o);\n if (previous == null) {\n previous === null;\n } else {\n _clear(previous);\n }\n v = lastValue.v;\n }\n node.root.observer = previous;\n if (o_observing.length === 0) {\n _clear(o);\n node.computes.delete(key);\n } else {\n _ready(o, false);\n }\n return v;\n };\n compute.rebuild = rebuild;\n let clear = () => {\n let o = observer.o;\n if (o == null) {\n return;\n }\n _clear(o);\n ((o.observing.length = 0));\n };\n node.computes.set(key, clear);\n return rebuild();\n}\n\nfunction proxify(root, _target) {\n while (true) {\n let target = _target;\n let m = Reflect.get(target, metaKey);\n if (m == null) {\n m === null;\n } else {\n if (m.root === root) {\n return m;\n }\n _target = m.target;\n continue;\n }\n let node = {\n root: root,\n observed: new Map(),\n proxied: new Map(),\n computes: new Map(),\n changes: undefined\n };\n let meta = ((node.target = target, node));\n let isArray = Array.isArray(target);\n let proxy = new Proxy(target, {\n set: (extra, extra$1, extra$2) => set(node, isArray, false, extra, extra$1, extra$2),\n deleteProperty: (extra, extra$1) => {\n let res = Reflect.deleteProperty(extra, extra$1);\n node.proxied.delete(extra$1);\n let clear = node.computes.get(extra$1);\n if (clear == null) {\n clear === null;\n } else {\n node.computes.delete(extra$1);\n clear();\n }\n let cbs = node.changes;\n if (cbs == null) {\n cbs === null;\n } else {\n cbs.forEach(cb => callCb(cb, extra$1, undefined));\n }\n notify(node.root, node.observed, extra$1);\n return res;\n },\n get: (extra, extra$1) => {\n if (extra$1 === metaKey) {\n return meta;\n }\n if (extra$1 === dynamicKey) {\n return undefined;\n }\n let value = Reflect.get(extra, extra$1);\n let own = Object.hasOwn(extra, extra$1);\n if (!(value === undefined || own)) {\n return value;\n }\n let o = node.root.observer;\n if (o == null) {\n o === null;\n } else if (isArray && extra$1 === \"length\") {\n let w = observeKey(node.observed, indexKey);\n o.observing.push(w);\n } else {\n let w$1 = observeKey(node.observed, extra$1);\n o.observing.push(w$1);\n }\n if (!(proxiable(value) && !readonly(extra, extra$1))) {\n return value;\n }\n let m = node.proxied.get(extra$1);\n if (m !== null && m !== undefined) {\n return m.proxy;\n }\n m === null;\n let compile$1 = callback => compile(node, isArray, extra, extra$1, callback);\n let setter = v => {\n set(node, isArray, true, extra, extra$1, v);\n };\n let get = _value => {\n while (true) {\n let value = _value;\n let dynamic$1 = dynamic(value);\n if (dynamic$1 == null) {\n return value;\n }\n let v;\n switch (dynamic$1.TAG) {\n case \"Computed\" :\n v = compile$1(dynamic$1._0);\n break;\n case \"Source\" :\n let source = dynamic$1._0;\n let v$1 = source.value;\n let val = {\n contents: v$1\n };\n let set = v => {\n val.contents = v;\n setter(v);\n };\n v = compile$1((set(v$1), () => {\n let callback = source.source;\n callback(val.contents, set);\n return val.contents;\n }));\n break;\n case \"Store\" :\n let store = dynamic$1._0;\n v = compile$1(() => store.store(setter));\n break;\n case \"Compiled\" :\n let rebuild = dynamic$1._0.rebuild;\n v = rebuild();\n break;\n }\n if (!proxiable(v)) {\n return v;\n }\n _value = v;\n continue;\n };\n };\n let v = get(value);\n Reflect.set(extra, extra$1, v);\n if (!proxiable(v)) {\n return v;\n }\n let m$1 = proxify(node.root, v);\n node.proxied.set(extra$1, m$1);\n return m$1.proxy;\n },\n ownKeys: extra => {\n let root = node.root;\n let observed = node.observed;\n let keys = Reflect.ownKeys(extra);\n let o = root.observer;\n if (o == null) {\n o === null;\n } else {\n let w = observeKey(observed, indexKey);\n o.observing.push(w);\n }\n return keys;\n }\n });\n meta.proxy = proxy;\n return meta;\n };\n}\n\nfunction makeTilia(root) {\n return value => {\n if (!proxiable(value)) {\n raise(\"tilia: value is not an object or array\");\n }\n return proxify(root, value).proxy;\n };\n}\n\nfunction makeDerived(p) {\n return fn => {\n let v = {\n TAG: \"Computed\",\n _0: () => fn(p.contents)\n };\n Reflect.set(v, dynamicKey, true);\n return v;\n };\n}\n\nfunction makeReactive(derived) {\n return { derived }\n}\n;\n\nfunction makeCarve(root) {\n return fn => {\n let p = {\n contents: {}\n };\n let ctx = makeReactive(makeDerived(p));\n let value = fn(ctx);\n if (!proxiable(value)) {\n raise(\"tilia: value is not an object or array\");\n }\n let value$1 = proxify(root, value).proxy;\n p.contents = value$1;\n return value$1;\n };\n}\n\nfunction makeObserve(root) {\n return callback => {\n let notify = () => {\n let observer_observing = [];\n let observer = {\n root: root,\n notify: notify,\n observing: observer_observing\n };\n root.observer = observer;\n let o = observer;\n try {\n callback();\n return _ready(o, true);\n } catch (_e) {\n setError(root, _e);\n return _clear(o);\n }\n };\n notify();\n };\n}\n\nfunction makeWatch(root, observe_) {\n return (callback, effect) => {\n let notify = () => {\n let o = observe_(notify);\n let v = callback();\n o.root.observer = undefined;\n if (root.lock) {\n effect(v);\n } else {\n root.lock = true;\n effect(v);\n root.lock = false;\n }\n _ready(o, false);\n };\n let o = observe_(notify);\n callback();\n _ready(o, false);\n };\n}\n\nfunction makeBatch(root) {\n return callback => {\n if (root.lock) {\n return callback();\n } else {\n root.lock = true;\n callback();\n root.lock = false;\n return flush(root);\n }\n };\n}\n\nlet orphanError = \"Cannot modify or access the value of an orphan computation. See https://tiliajs.com/errors#orphan\";\n\nfunction warningHandler() {\n return {\n set: (param, _key, _value) => raise(orphanError),\n deleteProperty: (param, _key) => raise(orphanError),\n get: (target, key) => {\n if (key === dynamicKey || key === metaKey || key === \"TAG\" || key === \"_0\") {\n return Reflect.get(target, key);\n } else {\n return raise(orphanError);\n }\n },\n ownKeys: target => Reflect.ownKeys(target)\n };\n}\n\nfunction computed(fn) {\n let v = {\n TAG: \"Computed\",\n _0: fn\n };\n Reflect.set(v, dynamicKey, true);\n return new Proxy(v, warningHandler());\n}\n\nfunction makeSource(tilia) {\n return (value, source) => {\n let d = dynamic(source);\n let s;\n s = (d == null) ? ({\n source: source,\n value: value\n }) : (tilia({value, source: d}));\n let v = {\n TAG: \"Source\",\n _0: s\n };\n Reflect.set(v, dynamicKey, true);\n return v;\n };\n}\n\nfunction makeStore(tilia) {\n return callback => {\n let d = dynamic(callback);\n let s;\n s = (d == null) ? ({\n store: callback\n }) : (tilia({store: d}));\n let v = {\n TAG: \"Store\",\n _0: s\n };\n Reflect.set(v, dynamicKey, true);\n return v;\n };\n}\n\nfunction makeDerived$1(tilia) {\n return fn => tilia({\n value: computed(() => fn())\n });\n}\n\nfunction _done(o) {\n o.root.observer = undefined;\n}\n\nfunction connector(tilia, carve, observe, watch, batch, signal, derived, source, store, _observe) {\n return {\n tilia,\n carve,\n observe,\n watch,\n batch,\n // extra\n signal,\n derived,\n source,\n store,\n // internal\n _observe,\n };\n}\n;\n\nfunction make(gcOpt) {\n let gc = gcOpt !== undefined ? gcOpt : 50;\n let gc$1 = {\n active: new Set(),\n quarantine: new Set(),\n threshold: gc\n };\n let root = {\n observer: undefined,\n expired: new Set(),\n lock: false,\n error: undefined,\n id: Math.random(),\n gc: gc$1\n };\n let tilia = makeTilia(root);\n let _observe = extra => {\n let observer_observing = [];\n let observer = {\n root: root,\n notify: extra,\n observing: observer_observing\n };\n root.observer = observer;\n return observer;\n };\n return connector(tilia, makeCarve(root), makeObserve(root), makeWatch(root, _observe), makeBatch(root), value => {\n let s = tilia({\n value: value\n });\n let set = v => {\n s.value = v;\n };\n return [\n s,\n set\n ];\n }, makeDerived$1(tilia), makeSource(tilia), makeStore(tilia), _observe);\n}\n\nlet ctx = Reflect.get(globalThis, ctxKey);\n\nlet _ctx;\n\nlet exit = 0;\n\nif (ctx == null) {\n exit = 1;\n} else {\n _ctx = ctx;\n}\n\nif (exit === 1) {\n let ctx$1 = make(undefined);\n Reflect.set(globalThis, ctxKey, ctx$1);\n _ctx = ctx$1;\n}\n\nfunction readonly$1(data) {\n let obj = {};\n Object.defineProperty(obj, \"data\", {\n writable: false,\n enumerable: true,\n configurable: false,\n value: data\n });\n return obj;\n}\n\nfunction lift(s) {\n return computed(() => s.value);\n}\n\nfunction changing(accessor, guard) {\n let empty_upsert = [];\n let empty_remove = [];\n let empty = {\n upsert: empty_upsert,\n remove: empty_remove\n };\n let m = Reflect.get(accessor(), metaKey);\n let meta;\n meta = (m == null) ? raise(\"changing: argument is not a tilia proxy\") : m;\n let root = meta.root;\n let pending = new Map();\n let counter = proxify(root, {\n changed: 0\n }).proxy;\n let currentMeta = {\n contents: meta\n };\n let register = (m, cb) => {\n let cbs = m.changes;\n let cbs$1;\n let exit = 0;\n if (cbs == null) {\n exit = 1;\n } else {\n cbs$1 = cbs;\n }\n if (exit === 1) {\n let cbs$2 = new Set();\n m.changes = cbs$2;\n cbs$1 = cbs$2;\n }\n cbs$1.add(cb);\n return cbs$1;\n };\n let drain = () => {\n let upsert = [];\n let remove = [];\n pending.forEach((v, k) => {\n if (v == null) {\n remove.push(k);\n } else {\n upsert.push(v);\n }\n pending.delete(k);\n });\n return {\n upsert: upsert,\n remove: remove\n };\n };\n let cb = (key, value) => {\n pending.set(key, value);\n counter.changed = counter.changed + 1 | 0;\n };\n let currentCbs = {\n contents: register(meta, cb)\n };\n let reregister = () => {\n let m = Reflect.get(accessor(), metaKey);\n if ((m == null) || m === currentMeta.contents) {\n return;\n } else {\n currentCbs.contents.delete(cb);\n currentCbs.contents = register(m, cb);\n currentMeta.contents = m;\n return;\n }\n };\n let capture = guard !== undefined ? () => {\n reregister();\n if (guard()) {\n Reflect.get(counter, \"changed\");\n if (pending.size > 0) {\n return drain();\n } else {\n return empty;\n }\n } else {\n return empty;\n }\n } : () => {\n reregister();\n Reflect.get(counter, \"changed\");\n if (pending.size > 0) {\n return drain();\n } else {\n return empty;\n }\n };\n let mute = fn => {\n reregister();\n currentCbs.contents.delete(cb);\n if (root.lock) {\n fn();\n } else {\n root.lock = true;\n fn();\n root.lock = false;\n flush(root);\n }\n currentCbs.contents.add(cb);\n };\n return {\n changes: capture,\n mute: mute\n };\n}\n\nlet tilia = _ctx.tilia;\n\nlet carve = _ctx.carve;\n\nlet observe = _ctx.observe;\n\nlet watch = _ctx.watch;\n\nlet batch = _ctx.batch;\n\nlet signal = _ctx.signal;\n\nlet derived = _ctx.derived;\n\nlet source = _ctx.source;\n\nlet store = _ctx.store;\n\nlet _observe = _ctx._observe;\n\nfunction _meta(p) {\n return Reflect.get(p, metaKey);\n}\n\nexport {\n make,\n tilia,\n carve,\n observe,\n watch,\n batch,\n signal,\n derived,\n readonly$1 as readonly,\n computed,\n lift,\n source,\n store,\n changing,\n _observe,\n _done,\n _ready,\n _clear,\n _meta,\n _ctx,\n}\n/* Not a pure module */\n"], "mappings": "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", "names": ["v", "_value", "value", "source", "set", "store", "notify", "m", "root", "derived", "ctx", "notify", "o", "tilia", "source", "carve", "observe", "watch", "batch", "signal", "derived", "store", "_observe", "tilia", "_observe", "set", "m", "cb", "exit"] }