@expressive/mvc 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +40 -36
- package/lib/index.esm.js +118 -98
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +118 -98
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/issues.ts","../src/object.ts","../src/suspense.ts","../src/instruction/get.compute.ts","../src/subscriber.ts","../src/control.ts","../src/instruction/add.ts","../src/instruction/run.ts","../src/instruction/get.factory.ts","../src/instruction/get.ts","../src/effect.ts","../src/instruction/ref.ts","../src/instruction/set.ts","../src/instruction/use.keyed.ts","../src/instruction/use.ts","../src/instruction/has.ts","../src/model.ts","../src/react/context.ts","../src/react/tap.ts","../src/react/use.ts","../src/react/useModel.ts","../src/react/useValue.ts","../src/react/useTap.ts","../src/react/mvc.ts","../src/debug.ts","../src/react/consumer.ts","../src/react/provider.ts","../src/react/global.ts"],"sourcesContent":["declare namespace Issue {\n export type Variable = {} | string | number | boolean | null;\n export type Variables<T> = T extends (...args: infer T) => any ? T : never;\n\n export type Messages = {\n [named: string]: (...args: Variable[]) => string;\n }\n\n export type Output<M extends Messages> = {\n readonly [P in keyof M]: (...args: Variables<M[P]>) => Issue;\n }\n}\n\nexport class Issue extends Error {\n // drop first line (error factory) in stack trace.\n stack = this.stack.replace(/\\n.+/, \"\") as string;\n\n warn(){\n console.warn(this.message);\n }\n}\n\nexport function issues<M extends Issue.Messages>(register: M){\n const Library = {} as any;\n\n for(const name in register)\n Library[name] = (...args: Issue.Variable[]) => \n new Issue(register[name].apply(null, args));\n\n return Library as Issue.Output<M>;\n}","const {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyNames,\n getOwnPropertyDescriptor,\n getOwnPropertySymbols,\n values\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n values\n}","import { Control } from './control';\nimport { issues } from './issues';\nimport { assign } from './object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`,\n})\n\ntype Suspense<T = any> = Promise<T> & Error;\n\nexport function suspend(\n source: Control, key: string): Suspense {\n\n const error =\n Oops.NotReady(source.subject, key);\n\n const promise = new Promise<void>(resolve => {\n const release = source.addListener(forKey => {\n if(forKey == key)\n return () => {\n if(source.state.get(key) !== undefined){\n release();\n resolve();\n }\n }\n });\n });\n\n return assign(promise, {\n toString: () => String(error),\n name: \"Suspense\",\n message: error.message,\n stack: error.stack\n });\n}\n\nexport function mayRetry(fn: () => any): any {\n const retry = (err: unknown) => {\n if(err instanceof Promise)\n return err.then(compute);\n else\n throw err;\n }\n\n const compute = (): any => {\n try {\n const output = fn();\n\n return output instanceof Promise\n ? output.catch(retry)\n : output;\n }\n catch(err){\n return retry(err);\n }\n }\n\n return compute();\n}","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\nimport { Callback } from '../types';\n\nimport type { get } from './get';\n\nexport const Oops = issues({\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\nconst INFO = new WeakMap<Callback, string>();\nconst KEYS = new WeakMap<Control, Set<Callback>>();\nconst ORDER = new WeakMap<Control, Map<Callback, number>>();\n\nexport function computeMode(\n self: Control,\n source: Control,\n setter: get.Function<any, any>,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let sub: Subscriber;\n let order = ORDER.get(self)!;\n let pending = KEYS.get(self)!\n\n if(!order)\n ORDER.set(self, order = new Map());\n\n if(!pending)\n KEYS.set(self, pending = new Set());\n\n const compute = (initial: boolean) => {\n try {\n return setter.call(sub.proxy, sub.proxy);\n }\n catch(err){\n Oops.Failed(subject, key, initial).warn();\n throw err;\n }\n }\n\n const refresh = () => {\n let value;\n\n try {\n value = compute(false);\n }\n catch(e){\n console.error(e);\n }\n finally {\n if(state.get(key) !== value){\n state.set(key, value);\n self.update(key);\n return value;\n }\n }\n }\n\n const create = () => {\n sub = source.subscribe((_, source) => {\n if(source !== self)\n refresh();\n else\n pending.add(refresh);\n });\n\n try {\n const value = compute(true);\n state.set(key, value);\n return value;\n }\n catch(e){\n throw e;\n }\n finally {\n sub.commit();\n order.set(refresh, order.size);\n }\n }\n\n INFO.set(refresh, key);\n\n return () => {\n if(pending.has(refresh)){\n pending.delete(refresh)\n refresh();\n }\n\n const value = sub ? state.get(key) : create();\n\n if(value === undefined && required)\n throw suspend(self, key);\n\n return value;\n }\n}\n\nexport function flush(control: Control){\n const pending = KEYS.get(control);\n\n if(!pending || !pending.size)\n return;\n\n const priority = ORDER.get(control)!;\n\n while(pending.size){\n let compute!: Callback;\n\n for(const item of pending)\n if(!compute || priority.get(item)! < priority.get(compute)!)\n compute = item;\n\n pending.delete(compute);\n\n const key = INFO.get(compute)!;\n\n if(!control.frame.has(key))\n compute();\n }\n\n pending.clear();\n}","import { Control } from './control';\nimport { Model } from './model';\nimport { create, defineProperty, getOwnPropertyNames } from './object';\n\nimport type { Callback } from './types';\n\nconst REGISTER = new WeakMap<{}, Subscriber>();\n\ntype Listener = {\n commit(): void;\n release(): void;\n}\n\ndeclare namespace Subscriber {\n type OnEvent<T = any> = (key: Model.Event<T> | null, source: Control) => Callback | void;\n}\n\nclass Subscriber <T extends {} = any> {\n static get<T extends {}>(from: T){\n return REGISTER.get(from) as Subscriber<T> | undefined;\n }\n\n public proxy!: T;\n public release!: Callback;\n public latest?: Model.Event<T>[];\n\n public active = false;\n public dependant = new Set<Listener>();\n public watch = new Map<any, boolean | (() => true | void)>();\n\n constructor(\n public parent: Control<T>,\n public onUpdate: Subscriber.OnEvent){\n\n const proxy = create(parent.subject);\n const reset = () => this.latest = undefined;\n\n REGISTER.set(proxy, this);\n \n defineProperty(this, \"proxy\", {\n configurable: true,\n get(){\n setTimeout(reset, 0);\n return proxy;\n }\n })\n }\n\n get using(): Model.Values<T>[] {\n return Array.from(this.watch.keys());\n }\n\n assign(apply: Model.Compat<T>, keys?: any){\n const { waiting, subject } = this.parent;\n\n this.active = false;\n\n if(typeof keys !== \"object\")\n keys = getOwnPropertyNames(subject) as Model.Field<T>[];\n\n for(const key of keys)\n if(key in apply)\n (subject as any)[key] = (apply as any)[key];\n\n waiting.add(() => this.active = true);\n }\n\n add(key: any, value?: boolean | Callback){\n if(value !== undefined)\n this.watch.set(key, value);\n else if(!this.watch.has(key))\n this.watch.set(key, true);\n }\n\n commit = () => {\n const release = this.parent.addListener(this.event);\n\n this.active = true;\n this.dependant.forEach(x => x.commit());\n\n return this.release = () => {\n this.dependant.forEach(x => x.release());\n release();\n };\n }\n\n private event = (key: Model.Event<T> | null) => {\n if(!this.active)\n return;\n\n const { parent, watch } = this;\n\n const handler = watch.get(key);\n let notify: void | Control.OnAsync;\n\n if(typeof handler == \"function\"){\n const callback = handler();\n\n if(callback === true)\n notify = this.onUpdate(key, parent);\n }\n else if(handler === true)\n notify = this.onUpdate(key, parent);\n\n if(!notify)\n return;\n\n parent.waiting.add(update => {\n this.latest = update.filter(k => watch.has(k));\n });\n parent.waiting.add(notify);\n }\n}\n\nexport { Subscriber }","import { Instruction } from './instruction/add';\nimport { flush } from './instruction/get.compute';\nimport { Model } from './model';\nimport { defineProperty, getOwnPropertyDescriptor } from './object';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback } from './types';\n\nconst REGISTER = new WeakMap<{}, Control>();\nconst PENDING = new Map<symbol, Instruction.Runner<any>>();\n\ndeclare namespace Control {\n /**\n * Callback for Controller.for() static method.\n * Returned callback is forwarded.\n */\n type OnReady<T extends {}> = (control: Control<T>) => Callback | void;\n\n /**\n * Called immediately when any key is changed or emitted.\n * Returned callback is notified when update is complete.\n */\n type OnSync<T = any> = (key: Model.Event<T> | null, source: Control) => OnAsync<T> | void;\n\n /** Called at the end of an event frame with all keys affected. */\n type OnAsync<T = any> = (keys: Model.Event<T>[]) => void;\n\n // TODO: implement value type\n type OnValue<T = any> = (this: T, value: any) => boolean | void;\n}\n\nclass Control<T extends {} = any> {\n public state!: Map<any, any>;\n public frame = new Set<string>();\n public waiting = new Set<Control.OnAsync<T>>();\n public followers = new Set<Control.OnSync>();\n public latest?: Model.Event<T>[];\n\n constructor(public subject: T){\n REGISTER.set(subject, this);\n }\n\n subscribe(callback: Subscriber.OnEvent<T>){\n return new Subscriber<T>(this, callback);\n }\n\n watch(key: keyof T & string){\n const { subject, state } = this;\n const { value } = getOwnPropertyDescriptor(subject, key)!;\n\n if(typeof value == \"function\")\n return;\n\n if(typeof value == \"symbol\"){\n const instruction = PENDING.get(value);\n\n if(instruction){\n delete subject[key];\n PENDING.delete(value);\n instruction.call(this, key, this);\n }\n\n return;\n }\n\n state.set(key, value);\n\n defineProperty(subject, key, {\n enumerable: false,\n set: this.ref(key as any),\n get(){\n const sub = Subscriber.get(this);\n\n if(sub)\n sub.add(key);\n\n return state.get(key);\n }\n });\n }\n\n addListener(listener: Control.OnSync<T>){\n this.followers.add(listener);\n return () => {\n this.followers.delete(listener)\n }\n }\n\n ref<K extends Model.Field<T>>(\n key: K,\n handler?: (this: T, value: T[K]) => boolean | void){\n \n const { subject, state } = this;\n \n return (value: any) => {\n if(state.get(key) == value)\n return;\n \n if(handler)\n switch(handler.call(subject, value)){\n case true:\n this.update(key);\n case false:\n return;\n }\n \n state.set(key, value);\n this.update(key);\n }\n }\n\n update(key: Model.Field<T>){\n const { followers, frame, waiting } = this;\n \n if(frame.has(key))\n return;\n \n else if(!frame.size)\n setTimeout(() => {\n flush(this); \n const keys = this.latest = Array.from(frame);\n setTimeout(() => this.latest = undefined, 0);\n\n frame.clear();\n \n for(const notify of waiting)\n try {\n waiting.delete(notify);\n notify(keys);\n }\n catch(err){\n console.error(err);\n }\n }, 0);\n \n frame.add(key);\n \n for(const callback of followers){\n const event = callback(key, this);\n \n if(typeof event == \"function\")\n waiting.add(event);\n }\n }\n\n clear(){\n const listeners = [ ...this.followers ];\n\n this.followers.clear();\n listeners.forEach(x => x(null, this));\n }\n\n static get<T extends {}>(from: T){\n if(from && \"is\" in from)\n from = (from as any).is as T;\n \n return REGISTER.get(from) as Control<T> | undefined;\n }\n\n static for<T extends {}>(subject: T): Control<T>;\n static for<T extends {}>(subject: T, cb: Control.OnReady<T>): Callback;\n static for<T extends {}>(subject: T, cb?: Control.OnReady<T>){\n const control = this.get(subject) || new this(subject);\n\n if(!control.state){\n const { waiting } = control;\n \n if(cb){\n let callback: Callback | void;\n \n waiting.add(() => {\n callback = cb(control);\n });\n \n return () => {\n if(callback)\n callback();\n }\n }\n \n control.state = new Map();\n \n for(const key in subject)\n control.watch(key);\n \n control.waiting = new Set();\n \n for(const cb of waiting)\n cb([]);\n }\n \n return cb ? cb(control) : control;\n }\n}\n\nexport {\n Control,\n PENDING\n}","import { Control, PENDING } from '../control';\nimport { defineProperty } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\nimport { Callback } from '../types';\n\n/**\n * Property initializer, will run upon instance creation.\n * Optional returned callback will run when once upon first access.\n */\ntype Instruction<T> = (this: Control, key: string, thisArg: Control) =>\n | Instruction.Getter<T> \n | Instruction.ExplicitDescriptor\n | Instruction.Descriptor<T>\n | Instruction.RecursiveDescriptor<T>\n | boolean\n | void;\n\ndeclare namespace Instruction {\n type Getter<T> = (within?: Subscriber) => T;\n type Setter<T> = (value: T) => boolean | void;\n\n type Runner<T> = (this: Control, key: string, on: Control) =>\n Instruction.Descriptor<T> | boolean | undefined;\n\n interface Descriptor<T> {\n configurable?: boolean;\n enumerable?: boolean;\n value?: T;\n writable?: boolean;\n get?: Getter<T>;\n set?: Setter<T> | false;\n suspend?: boolean;\n destroy?: () => void;\n }\n\n interface ExplicitDescriptor extends PropertyDescriptor {\n explicit: true;\n }\n\n interface RecursiveDescriptor<T> {\n recursive: true;\n enumerable?: boolean;\n value?: T;\n set?: Setter<T> | false;\n suspend?: boolean;\n }\n}\n\n/**\n * Run instruction as controller sets itself up.\n * This will specialize the behavior of a given property.\n */\nfunction add<T = any>(\n instruction: Instruction<any>,\n label?: string){\n\n const name = label || instruction.name || \"pending\";\n const placeholder = Symbol(`${name} instruction`);\n\n function setup(this: Control, key: string){\n const { subject, state } = this;\n\n let output = instruction.call(this, key, this);\n\n if(typeof output == \"function\")\n output = { get: output };\n\n if(typeof output != \"object\")\n return;\n\n if(\"explicit\" in output && output.explicit){\n defineProperty(subject, key, output);\n return false;\n }\n\n let {\n get: onGet,\n set: onSet,\n suspend: shouldSuspend\n } = output as Instruction.Descriptor<any>;\n\n if(\"value\" in output)\n state.set(key, output.value);\n\n if(\"recursive\" in output && output.recursive)\n onGet = getRecursive(key, this);\n\n if(\"destroy\" in output){\n const { destroy } = output;\n\n if(destroy)\n this.addListener((key) => {\n if(key == null)\n destroy();\n })\n }\n\n const control = this;\n\n defineProperty(subject, key, {\n enumerable: output.enumerable,\n\n set: onSet !== false\n ? this.ref(key, onSet)\n : undefined,\n\n get(this: any){\n if(!state.has(key) && shouldSuspend)\n throw suspend(control, key);\n \n const local = Subscriber.get(this);\n \n if(local)\n local.add(key);\n \n return onGet\n ? onGet(local)\n : state.get(key);\n }\n });\n }\n\n PENDING.set(placeholder, setup);\n\n return placeholder as unknown as T;\n}\n\nexport function getRecursive(key: string, from: Control){\n const context = new WeakMap<Subscriber, {} | undefined>();\n\n return (local: Subscriber | undefined) => {\n if(!local)\n return from.state.get(key);\n\n if(!context.has(local)){\n let reset: Callback | undefined;\n\n const init = () => {\n if(reset)\n reset();\n\n const value = from.state.get(key);\n \n if(Control.get(value)){\n const child = Control.for(value).subscribe(local.onUpdate);\n \n if(local.active)\n child.commit();\n \n local.dependant.add(child);\n context.set(local, child.proxy);\n\n reset = () => {\n child.release();\n local.dependant.delete(child);\n context.set(local, undefined);\n reset = undefined;\n }\n }\n\n return true;\n }\n \n local.add(key, init);\n init();\n }\n\n return context.get(local);\n }\n}\n\nexport { add, Instruction }","import { issues } from '../issues';\nimport { defineProperty } from '../object';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\n\ntype Async<T = any> = (...args: any[]) => Promise<T>;\n\nexport const Oops = issues({\n DuplicatePending: (key) =>\n `Invoked action ${key} but one is already active.`\n})\n\n/**\n * Sets an exotic method with managed ready-state. Property accepts an async function.\n *\n * When a run-method is invoked, its `active` property to true for duration of call.\n * This is emitted as an update to property, both when called and after returns (or throws).\n *\n * **Note:** Subsequent calls will immediately throw if one is still pending.\n *\n * @param action - Action to fire when resulting property is invoked.\n */\nfunction run (action: Async): typeof action & { active: boolean };\nfunction run <S> (action: Async<S>): typeof action & { active: boolean };\n\nfunction run<T extends Async>(task: T){\n return add<T>(\n function run(key){\n let pending = false;\n\n const invoke = async (...args: any[]) => {\n if(pending)\n return Promise.reject(\n Oops.DuplicatePending(key)\n )\n\n pending = true;\n this.update(key);\n\n try {\n return await mayRetry(() => (\n task.apply(this.subject, args)\n ))\n }\n finally {\n pending = false;\n this.update(key);\n }\n }\n\n this.state.set(key, undefined);\n\n defineProperty(invoke, \"active\", {\n get: () => pending\n })\n\n return {\n value: invoke as T,\n set: false\n };\n }\n )\n}\n\nexport { run }","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { assign } from '../object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n});\n\nexport function factoryMode<T>(\n self: Control,\n output: Promise<T> | T,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let pending: Promise<any> | undefined;\n let error: any;\n\n if(output instanceof Promise){\n state.set(key, undefined);\n\n pending = output\n .catch(err => error = err)\n .then(val => {\n state.set(key, val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n self.update(key);\n })\n }\n\n state.set(key, output);\n\n const suspend = () => {\n if(required === false)\n return undefined;\n\n const issue =\n Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n \n return (): T | undefined => {\n if(error)\n throw error;\n\n if(pending)\n return suspend();\n\n if(state.has(key))\n return state.get(key);\n }\n}","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\nimport { computeMode } from './get.compute';\nimport { factoryMode } from './get.factory';\n\nexport const Oops = issues({\n PeerNotAllowed: (model, property) =>\n `Attempted to use an instruction result (probably use or tap) as computed source for ${model}.${property}. This is not possible.`,\n\n ComputeFailed: (model, key) =>\n `Generating initial value for ${model}.${key} failed.`,\n\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\ndeclare namespace get {\n type Function<T, S = any> = (this: S, on: S) => T;\n type Factory<T, S = unknown> = (this: S, key: string, thisArg: S) => T;\n}\n\n/**\n * Implement a computed value; output will be generated by provided function.\n *\n * @param source - Source model from which computed value will be a subscriber.\n * @param compute - Compute function. Bound to a subscriber-proxy of source, returns output value. Will update automatically as input values change.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend?: boolean): R;\n\n/**\n * Implement a computed value; output is returned by function from provided factory.\n *\n * @param compute - Factory function to generate a getter to subscribe dependancies.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend?: boolean): R;\n\n/**\n * Set property with an async function.\n *\n * Property cannot be accessed until factory resolves, yeilding a result.\n * If accessed while processing, React Suspense will be thrown.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T> (factory: get.Factory<Promise<T>>, required: false): T | undefined;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required: false): T | undefined;\n\nfunction get <T> (factory: get.Factory<Promise<T>>, required?: boolean): T;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required?: boolean): T;\n\n/**\n * Set property with a factory function.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T>(factory: get.Factory<T>, required: false): T | undefined;\nfunction get <T, S>(factory: get.Factory<T, S>, required: false): T | undefined;\n\nfunction get <T>(factory: get.Factory<T>, required?: boolean): T;\nfunction get <T, S>(factory: get.Factory<T, S>, required?: boolean): T;\n\n/**\n * Assign a property with result of a promise.\n */\nfunction get <T> (factory: Promise<T>, required: false): T | undefined;\nfunction get <T> (factory: Promise<T>, required?: boolean): T;\n \nfunction get<R, T>(\n arg0: ((this: T, key: string, thisArg: T) => get.Function<R, T> | T) | Promise<R>,\n arg1?: get.Function<T> | boolean,\n arg2?: boolean): R {\n\n return add(\n function get(key){\n const { subject } = this;\n const computeRequired = arg1 === true || arg2 === true;\n const factoryRequired = arg1 !== false && arg2 !== false;\n\n let getter: () => any;\n\n // Easy mistake, using a peer, will always be unresolved.\n if(typeof arg0 == \"symbol\")\n throw Oops.PeerNotAllowed(subject, key);\n\n // if(typeof arg0 == \"function\" && /^[A-Z]/.test(arg0.name))\n // throw Oops.BadSource(subject, key, arg0);\n\n this.state.set(key, undefined);\n\n const init = (): any => {\n let source = this;\n let setter: get.Function<T, any>;\n \n if(typeof arg0 == \"function\"){\n const result = mayRetry(() => arg0.call(subject, key, subject));\n \n if(typeof result == \"function\")\n setter = result;\n else {\n getter = factoryMode(this, result, key, factoryRequired);\n return;\n }\n }\n else if(arg0 instanceof Promise){\n getter = factoryMode(this, arg0, key, factoryRequired);\n return;\n }\n else if(typeof arg1 == \"function\"){\n // replace source controller in-case it is different\n source = Control.for(arg0);\n setter = arg1;\n }\n else\n throw new Error(`Factory argument cannot be ${arg1}`);\n\n getter = computeMode(this, source, setter, key, computeRequired);\n }\n\n if(typeof arg0 == \"function\" && computeRequired)\n try {\n init();\n }\n catch(err){\n Oops.ComputeFailed(subject, key).warn();\n throw err;\n }\n\n return () => {\n if(!getter)\n init();\n\n return getter();\n }\n }\n )\n}\n\nexport { get }","import { Model } from \"./model\";\nimport { Control } from \"./control\";\nimport { mayRetry } from \"./suspense\";\nimport { Callback } from \"./types\";\nimport { issues } from \"./issues\";\n\nexport const Oops = issues({\n BadCallback: () =>\n `Callback for effect-callback may only return a function.`\n})\n\nexport function createEffect<T extends Model>(\n model: T,\n callback: Model.Effect<T>,\n keys: Model.Event<T>[]){\n\n return Control.for(model, control => {\n let unSet: Callback | Promise<any> | void;\n let busy = false;\n\n function effect(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet();\n \n unSet = callback.call(this, value);\n \n if(unSet instanceof Promise)\n unSet = undefined;\n \n if(unSet && typeof unSet !== \"function\")\n throw Oops.BadCallback()\n }\n\n function invoke(){\n if(busy)\n return;\n\n const output = mayRetry(() => {\n effect.call(model, model);\n })\n\n if(output instanceof Promise){\n output.finally(() => busy = false);\n busy = true;\n }\n }\n\n if(Array.isArray(keys)){\n invoke();\n\n return control.addListener(key => {\n if(key === null){\n if(!keys.length)\n invoke();\n }\n else if(keys.includes(key))\n return invoke;\n });\n }\n\n const sub = control.subscribe(() => invoke);\n\n model = sub.proxy;\n invoke();\n\n return sub.commit();\n });\n}\n\nexport type AssignCallback<T> =\n (this: any, argument: T, thisArg: any) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n\nexport function createValueEffect<T = any>(\n callback: AssignCallback<T>){\n\n let unSet: ((next: T) => void) | undefined;\n\n return function(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet(value);\n\n const out = callback.call(this, value, this);\n\n if(typeof out == \"boolean\")\n return out;\n\n if(!out || out instanceof Promise)\n return;\n\n if(typeof out == \"function\")\n unSet = out;\n else\n throw Oops.BadCallback()\n }\n}","import { Control } from '../control';\nimport { createValueEffect } from '../effect';\nimport { Model } from '../model';\nimport { defineProperty } from '../object';\nimport { add } from './add';\n\ndeclare namespace ref {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<void> | void | boolean;\n\n interface Object<T = any> {\n (next: T): void;\n current: T | null;\n }\n\n /** Object with references to all managed values of `T`. */\n type Proxy<T extends Model> = {\n [P in Model.Field<T>]-?: Model.Ref<T[P]>\n };\n\n type CustomProxy<T extends Model, R> = {\n [P in Model.Field<T>]-?: R;\n }\n}\n\n/**\n * Creates an object with references to all managed values.\n * Each property is a function to set value in state when invoked.\n *\n * *Properties are simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param target - Source model from which to reference values.\n */\nfunction ref <T extends Model> (target: T): ref.Proxy<T>;\n\n/**\n * Creates an object with values based on managed values.\n * Each property will invoke mapper function on first access supply\n * the its return value going forward.\n *\n * @param target - Source model from which to reference values.\n * @param mapper - Function producing the placeholder value for any given property.\n */\nfunction ref <O extends Model, R>\n (target: O, mapper: (key: Model.Field<O>) => R): ref.CustomProxy<O, R>;\n\n/**\n * Creates a ref-compatible property.\n * Will persist value, and updates to this are made part of controller event-stream.\n *\n * *Output is simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param callback - Optional callback to synchronously fire when reference is first set or does update.\n */\nfunction ref <T = HTMLElement> (callback?: ref.Callback<T>): ref.Object<T>;\nfunction ref <T, S> (callback?: ref.Callback<T, S>): ref.Object<T>;\n\nfunction ref<T>(\n arg?: ref.Callback<T> | Model,\n mapper?: (key: string) => any){\n\n return add(\n function ref(key){\n let value: ref.Object | ref.Proxy<any> = {};\n\n if(typeof arg != \"object\")\n value = createRef(this, key, arg);\n else\n Control.for(arg).state.forEach((_val, key) => {\n defineProperty(value, key,\n mapper ? {\n configurable: true,\n get(){\n const out = mapper(key);\n defineProperty(value, key, { value: out });\n return out;\n }\n } : {\n value: createRef(this, key)\n })\n })\n\n return { value, explicit: true };\n }\n )\n}\n\nexport { ref }\n\nfunction createRef(\n src: Control,\n key: string,\n cb?: ref.Callback<any>){\n\n const refObjectFunction =\n src.ref(key, cb && createValueEffect(cb));\n\n defineProperty(refObjectFunction, \"current\", {\n set: refObjectFunction,\n get: () => src.state.get(key)\n })\n\n return refObjectFunction as ref.Object;\n}","import { createValueEffect } from '../effect';\nimport { add } from './add';\n\ndeclare namespace set {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n}\n\n/**\n * Set property with a placeholder.\n * \n * Property cannot be accessed until it is defined. If accessed while undefined, a hybrid\n * `Promise`/`Error` (ala: [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html)) will be thrown.\n */\nfunction set <T = any>(): T;\n\nfunction set <T> (onUpdate: set.Callback<T>): T;\nfunction set <T, S> (onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: undefined, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: undefined, onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: T, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: T, onUpdate: set.Callback<T, S>): T;\n\nfunction set(\n value?: any,\n argument?: set.Callback<any> | boolean): any {\n\n if(!(1 in arguments)){\n argument = value;\n value = undefined;\n }\n\n return add(\n function set(key){\n if(value !== undefined)\n this.state.set(key, value);\n\n return {\n suspend: true,\n set: typeof argument == \"function\"\n ? createValueEffect(argument)\n : undefined\n }\n }\n )\n}\n\nexport { set }","import { Control } from '../control';\nimport { assign, create, defineProperty } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { Instruction } from './add';\n\ntype MapFunction<T, R> =\n T extends Map<infer K, infer V> ?\n (value: V, key: K, map: T) => R | void :\n T extends Set<infer K> ?\n (value: K, key: K, set: T) => R | void :\n never;\n\ntype Managed<T> = Exclude<T, \"forEach\"> & {\n from?: T;\n\n forEach<R>(\n mapFunction: MapFunction<T, R>,\n thisArg?: any\n ): Exclude<R, undefined>[] | void;\n}\n\nconst ANY = Symbol(\"any\");\n\ntype Keyed<K = unknown> = Set<K> | Map<K, unknown>;\n\nfunction keyed<T extends Keyed>(\n control: Control,\n property: any,\n initial: T\n): Instruction.Descriptor<T> {\n type K = typeof ANY | (\n T extends Set<infer U> ? U :\n T extends Map<infer U, any> ? U :\n never\n );\n\n const init = createProxy(emit, watch);\n const frozen = new Set<Subscriber>();\n const context = new Map<Subscriber, T>();\n const users = new Map<Subscriber, Set<K>>();\n const watched = new WeakMap<T, Set<K>>();\n const update = new Set<(key: K) => void>();\n\n let managed: T = init(initial);\n\n function watch(on: any, key: K){\n const include = watched.get(on);\n\n if(include)\n include.add(key);\n }\n\n function emit(key: K){\n control.update(property);\n control.waiting.add(() => frozen.clear());\n update.forEach(notify => notify(key));\n }\n\n function subscribe(local: Subscriber){\n const proxy = create(managed);\n let watch = users.get(local);\n\n if(!watch){\n const using = watch = new Set<K>();\n users.set(local, using);\n \n function onEvent(key: K){\n if(frozen.has(local))\n return;\n \n if(key === ANY || using.has(key) || using.has(ANY)){\n const refresh = local.onUpdate(property, control);\n \n if(refresh){\n frozen.add(local);\n refresh()\n }\n }\n }\n \n local.add(property, false);\n local.dependant.add({\n commit(){\n if(using.size === 0)\n using.add(ANY);\n \n update.add(onEvent);\n },\n release(){\n update.delete(onEvent);\n }\n })\n }\n\n watched.set(proxy, watch);\n context.set(local, proxy);\n\n return proxy;\n }\n\n return {\n value: initial,\n get(local){\n return local ?\n context.get(local) || subscribe(local) :\n managed;\n },\n set(next){\n control.state.set(property, next);\n managed = init(next);\n context.clear();\n emit(ANY);\n },\n destroy(){\n update.clear();\n context.clear();\n }\n }\n}\n\nfunction createProxy(\n emit: (key: any) => void,\n watch: (self: any, key: any) => void){\n\n return <T extends Keyed<any>>(from: T) => {\n const proxy = create(from) as T;\n\n assign(proxy,\n {\n from,\n delete(key: any){\n // TODO: this commit's fix needs tests.\n // Was not cause by coverage.\n const out = from.delete(key);\n emit(key);\n return out;\n },\n clear(){\n from.clear();\n emit(ANY);\n },\n has(key: any){\n watch(this, key);\n return from.has(key);\n },\n keys(){\n watch(this, ANY);\n return from.keys();\n },\n values(){\n watch(this, ANY);\n return from.values();\n },\n entries(){\n watch(this, ANY);\n return from.entries();\n },\n forEach(\n callbackfn: (a: any, b: any, c: any) => any,\n thisArg: any){\n\n const acc = [] as any[];\n\n from.forEach((a, b, c) => {\n const result = callbackfn.call(thisArg, a, b, c);\n\n if(result !== undefined)\n acc.push(result);\n });\n\n watch(this, ANY);\n\n return acc;\n },\n [Symbol.iterator](){\n watch(this, ANY);\n return from[Symbol.iterator]();\n },\n },\n from instanceof Set\n ? {\n add(key: any){\n from.add(key);\n emit(key);\n return this;\n }\n }\n : {\n get(key: any){\n watch(this, ANY);\n return from.get(key);\n },\n set(key: any, value: any){\n from.set(key, value);\n emit(key);\n return this;\n }\n }\n )\n\n defineProperty(proxy, \"size\", {\n get(){\n watch(this, ANY);\n return from.size;\n }\n })\n \n return proxy;\n }\n}\n\nexport { keyed, Managed };","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { assign } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { mayRetry } from '../suspense';\nimport { add, getRecursive } from './add';\nimport { keyed, Managed } from './use.keyed';\n\nexport const Parent = new WeakMap<{}, {}>();\n\nexport const Oops = issues({\n BadArgument: (type) =>\n `Instruction \\`use\\` cannot accept argument type of ${type}.`,\n\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n})\n\nfunction use <K = any> (initial: SetConstructor): Managed<Set<K>>;\nfunction use <K = any, V = any> (initial: MapConstructor): Managed<Map<K, V>>;\n\nfunction use (initial: Set<unknown>): Managed<Set<any>>;\nfunction use (initial: Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use (from: () => Set<unknown>): Managed<Set<any>>;\nfunction use (from: () => Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use <T extends Set<any> | Map<any, any>> (initial: T): Managed<T>;\nfunction use <T extends Set<any> | Map<any, any>> (from: () => T): Managed<T>;\n\n/**\n * Create a placeholder for specified Model type.\n */\nfunction use <T extends Model> (): T | undefined;\nfunction use <T extends Model> (from: () => T, required: false): T | undefined;\nfunction use <T extends Model> (from: () => T, required: boolean): T;\n\n /**\n * Create a new child instance of model.\n */\nfunction use <T extends Model> (Type: Model.Type<T>, callback?: (i: T) => void): T;\n\n /**\n * Create a managed child from factory function.\n */\nfunction use <T extends {}> (from: () => Promise<T>, required: false): T | undefined;\nfunction use <T extends {}> (from: () => Promise<T>, required: boolean): T;\nfunction use <T extends {}> (from: () => Promise<T>, callback?: (i: T) => void): T;\nfunction use <T extends {}> (from: () => T, callback?: (i: T) => void): T;\n\n /**\n * Create child-instance relationship with provided model.\n *\n * Note: If `peer` is not already initialized before parent is\n * (created with `new` as opposed to create method), that model will\n * attach this via `parent()` instruction. It will not, however, if\n * already active.\n */\nfunction use <T extends {}> (peer: T, callback?: (i: T) => void): T;\n\nfunction use(\n input?: any,\n argument?: boolean | ((i: {} | undefined) => void)){\n\n return add(\n function use(key){\n const { state, subject } = this;\n const required = argument !== false;\n\n let pending: Promise<any> | undefined;\n let error: any;\n let get: (local: Subscriber | undefined) => any =\n (_local: Subscriber | undefined) => state.get(key);\n\n if(typeof input === \"function\"){\n if(\"prototype\" in input &&\n input === input.prototype.constructor)\n input = new input();\n }\n\n else if(input && typeof input !== \"object\")\n throw Oops.BadArgument(typeof input);\n\n if(input instanceof Map || input instanceof Set)\n return keyed(this, key, input);\n\n const onUpdate = (next: {} | undefined) => {\n state.set(key, next);\n\n if(next){\n get = getRecursive(key, this);\n Parent.set(next, subject);\n Control.for(next);\n }\n\n if(typeof argument == \"function\")\n argument(next);\n\n return true;\n }\n\n const suspend = () => {\n if(required === false)\n return;\n\n const issue =\n Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n\n const initialize = () => {\n const output = typeof input == \"function\" ?\n mayRetry(() => input.call(subject, subject)) :\n input;\n\n if(output instanceof Promise){\n pending = output\n .catch(err => error = err)\n .then(val => {\n onUpdate(val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n this.update(key);\n })\n\n return;\n }\n\n onUpdate(output);\n }\n\n if(input !== undefined && required)\n initialize();\n\n return {\n set: onUpdate,\n get(local){\n if(pending)\n return suspend();\n \n if(error)\n throw error;\n\n if(!state.has(key))\n initialize();\n \n if(pending)\n return suspend();\n \n return get(local);\n }\n };\n }\n )\n}\n\nexport { use }","import { issues } from '../issues';\nimport { Model } from '../model';\nimport { add } from './add';\nimport { Parent } from './use';\n\nexport const Oops = issues({\n Required: (expects, child) => \n `New ${child} created standalone but requires parent of type ${expects}. Did you remember to create via use(${child})?`,\n\n Unexpected: (expects, child, got) =>\n `New ${child} created as child of ${got}, but must be instanceof ${expects}.`,\n})\n\n/**\n * Fetches and assigns the controller which spawned this host.\n * When parent assigns an instance via `use()` directive, it\n * will be made available to child upon this request.\n *\n * @param Type - Type of controller compatible with this class. \n * @param required - Throw if controller is created independantly.\n */\nfunction has <T extends Model> (Type: Model.Type<T>, required: false): T | undefined;\nfunction has <T extends Model> (Type: Model.Type<T>, required?: true): T;\n\nfunction has<T extends Model>(\n Type: Model.Type<T>, required?: boolean){\n\n return add(\n function parent(){\n const child = this.subject;\n const value = Parent.get(child) as T;\n const expected = Type.name;\n\n if(!value){\n if(required !== false)\n throw Oops.Required(expected, child);\n }\n else if(!(value instanceof Type))\n throw Oops.Unexpected(expected, child, value);\n\n return { value };\n }\n );\n }\n\n export { has }","import { Control } from './control';\nimport { createEffect } from './effect';\nimport { issues } from './issues';\nimport { defineProperty } from './object';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback, Class, InstanceOf } from './types';\n\nexport const Oops = issues({\n Timeout: (keys, timeout) => \n `No update seen for [${keys}] within ${timeout}.`,\n\n KeysExpected: (key) =>\n `Key \"${key}\" was expected in current update.`,\n\n StrictUpdate: () => \n `Expected update but none in progress.`,\n\n StrictNoUpdate: () =>\n `Update is not expected but one is in progress!`,\n\n NoChaining: () =>\n `Then called with undefined; update promise will never catch nor supports chaining.`\n});\n\ndeclare namespace Model {\n export { Control };\n export { Subscriber };\n\n /** Including but not limited to T. */\n type Extends<T> = T | (string & Record<never, never>);\n\n export type Type<T extends Model = Model> = typeof Model & (new () => T);\n\n export type Effect<T> = (this: T, argument: T) => Callback | Promise<any> | void;\n\n /** Exotic value, actual value is contained. */\n export type Ref<T = any> = {\n (next: T): void;\n current: T | null;\n }\n\n /** Properties of T which are methods. */\n export type Methods<T> = {\n [K in keyof T]:\n T[K] extends Ref ? never :\n T[K] extends Function ? K :\n never;\n }[keyof T];\n\n /**\n * Subset of `keyof T` which are not methods or defined by base Model U.\n * \n * **Note**: This excludes all keys which are not of type `string` (only those are managed).\n * \n * TODO: Should exclude methods\n **/\n export type Field<T, U extends Model = Model> = Exclude<keyof T & string, keyof U>;\n\n /**\n * Including but not limited to `keyof T` which are not methods or defined by base Model.\n **/\n export type Event<T, U extends Model = Model> = Extends<Field<T, U>>;\n\n /** Object containing managed entries found in T. */\n export type Entries<T, U extends Model = Model> = { [K in Field<T, U>]: T[K] };\n\n /** Object comperable to data found in T. */\n export type Compat<T, U extends Model = Model> = { [K in Field<T, U>]?: T[K] };\n\n /** Actual value stored in state. */\n export type Value<R> = R extends Ref<infer T> ? T : R;\n\n /** Actual value belonging to a managed property. */\n export type ValueOf<T extends {}, K> = K extends keyof T ? Value<T[K]> : undefined;\n\n /**\n * Values from current state of given controller.\n * \n * Differs from `Entries` as values here will drill into \"real\" values held by exotics like ref.\n */\n export type Values<T, K extends Field<T> = Field<T>> = { [P in K]: Value<T[P]> }\n}\n\nclass Model {\n /**\n * Circular reference to `this` controller.\n * \n * Useful to obtain full reference where one has already destructured.\n */\n is!: this;\n\n constructor(){\n new Control(this);\n defineProperty(this, \"is\", { value: this });\n }\n\n on <P extends Model.Event<this>> (key: P, timeout?: number): Promise<Model.ValueOf<this, P>>;\n on <P extends Model.Field<this>> (key: P, listener: (this: this, value: this[P], key: P) => void, once?: boolean): Callback;\n on <P extends Model.Event<this>> (key: P, listener: (this: this, value: undefined, key: P) => void, once?: boolean): Callback;\n\n on <P extends Model.Event<this>> (keys: P[], timeout?: number): Promise<P[]>;\n on <P extends Model.Event<this>> (keys: P[], listener: (keys: P[]) => void, once?: boolean): Callback;\n\n on (effect: Model.Effect<this>): Callback;\n on (effect: Model.Effect<this>, watch?: []): Callback;\n on (effect: Model.Effect<this>, watch?: Model.Event<this>[]): Callback;\n\n on (key?: undefined, timeout?: number): Promise<Model.Event<this>[]>;\n on (current?: boolean): Promise<Model.Event<this>[] | null>;\n on (current: true): Promise<Model.Event<this>[]>;\n on (current: null): Promise<null>;\n\n on <P extends Model.Event<this>> (\n arg1?: boolean | null | P | P[] | Model.Effect<this>,\n arg2?: number | P[] | Function,\n arg3?: boolean){\n\n if(typeof arg1 == \"function\")\n return createEffect(this.is, arg1, arg2 as P[]);\n\n const single = typeof arg1 == \"string\";\n const keys =\n typeof arg1 == \"string\" ? [ arg1 ] :\n typeof arg1 == \"object\" ? arg1 : \n undefined;\n\n if(typeof arg2 == \"function\" && keys)\n return Control.for(this, control => {\n for(const key of keys)\n try { void (this as any)[key] }\n catch(e){}\n\n const invoke: Control.OnAsync = single\n ? () => arg2.call(this, control.state.get(arg1), arg1)\n : (frame) => arg2.call(this, frame);\n \n const removeListener =\n control.addListener(key => {\n if(!key && !keys.length)\n invoke([]);\n \n if(keys.includes(key as P)){\n if(arg3)\n removeListener();\n\n return invoke;\n }\n });\n\n return removeListener;\n });\n\n return new Promise<any>((resolve, reject) => {\n const timeout = (message: string) => {\n const k = keys ? keys.join(\", \") : \"any\";\n\n removeListener();\n reject(Oops.Timeout(k, message));\n }\n\n const removeListener = Control.for(this, control => {\n const pending = control.frame;\n\n if(keys === null){\n if(pending.size)\n reject(Oops.StrictNoUpdate())\n else\n resolve(null);\n\n return;\n }\n\n if(keys){\n if(keys.length){\n if(arg2 === 0 && single && !pending.has(keys[0])){\n reject(Oops.KeysExpected(keys[0]));\n return;\n }\n else for(const key of keys)\n try { void (this as any)[key] }\n catch(e){}\n }\n }\n else if(!pending.size && arg1 === true || arg2 === 0){\n reject(Oops.StrictUpdate());\n return;\n }\n else\n control.waiting.add(resolve);\n\n return control.addListener(key => {\n if(!key){\n if(keys && !keys.length)\n resolve([]);\n else\n timeout(`lifetime of ${this}`);\n }\n else if(!keys || keys.includes(key as P)){\n removeListener();\n return keys =>\n resolve(single ? control.state.get(key) : keys)\n }\n });\n })\n\n if(arg2 && typeof arg2 == \"number\")\n setTimeout(() => timeout(`${arg2}ms`), arg2);\n });\n }\n\n export(): Model.Values<this>;\n export <P extends Model.Field<this>> (select: Iterable<P>): Model.Values<this, P>;\n\n export <P extends Model.Field<this>> (subset?: Iterable<P>){\n const { state } = Control.for(this);\n const output = {} as Model.Values<this, P>;\n const keys = subset || state.keys();\n\n for(const key of keys)\n (output as any)[key] = state.get(key);\n\n return output;\n }\n\n update(key: Model.Event<this>): PromiseLike<readonly Model.Event<this>[]>;\n update(key: Model.Event<this>, callMethod: boolean): PromiseLike<readonly Model.Event<this>[]>;\n update<T>(key: Model.Event<this>, argument: T): PromiseLike<readonly Model.Event<this>[]>;\n\n update<T extends Model.Compat<this>> (source: T, select: (keyof T)[]): PromiseLike<(keyof T)[]>;\n update<T extends Model.Compat<this>> (source: T, force?: boolean): PromiseLike<(keyof T)[]>;\n\n update(\n arg1: Model.Event<this> | Model.Compat<this>,\n arg2?: boolean | any[]): any {\n\n const control = Control.for(this);\n\n if(typeof arg1 == \"object\"){\n for(const key in arg1)\n if(arg2 === true || (arg2 ? arg2.includes(key) : control.state.has(key))){\n control.state.set(key, (arg1 as any)[key]);\n control.update(key as any);\n }\n }\n else if(typeof arg1 == \"string\"){\n control.update(arg1 as Model.Field<this>);\n\n if(1 in arguments && arg1 in this){\n const method = (this as any)[arg1];\n\n if(typeof method == \"function\")\n if(typeof arg2 != \"boolean\")\n method.call(this, arg2);\n else if(arg2)\n method.call(this);\n }\n }\n\n return <PromiseLike<readonly Model.Event<this>[] | null>> {\n then: (callback) => {\n if(!callback)\n throw Oops.NoChaining();\n\n control.waiting.add(callback);\n }\n }\n }\n\n /** \n * Clean up side effects and mark this instance for garbage-collection.\n */\n destroy(){\n Control.for(this).clear();\n }\n\n /**\n * Creates a new instance of this controller.\n * \n * Beyond `new this(...)`, method will activate managed-state.\n * \n * @param args - arguments sent to constructor\n */\n static new<T extends Class>(\n this: T, ...args: ConstructorParameters<T>): InstanceOf<T> {\n\n const instance = new this(...args);\n\n Control.for(instance);\n\n return instance;\n }\n\n /**\n * Static equivalent of `x instanceof this`.\n * \n * Will determine if provided class is a subtype of this one. \n */\n static isTypeof<T extends Model.Type>(\n this: T, maybe: any): maybe is T {\n\n return (\n typeof maybe == \"function\" &&\n maybe.prototype instanceof this\n )\n }\n}\n\ndefineProperty(Model.prototype, \"toString\", {\n value(){\n return this.constructor.name;\n }\n})\n\nexport { Model }","import React from 'react';\n\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertySymbols, getPrototypeOf } from '../object';\nimport { Callback } from '../types';\n\nconst Oops = issues({\n NotFound: (name) =>\n `Couldn't find ${name} in context; did you forget to use a Provider?`\n})\n\nclass Lookup {\n private table = new Map<Model.Type, symbol>();\n\n public get local(){\n return [\n ...new Set(getOwnPropertySymbols(this).map(\n symbol => (this as any)[symbol] as Model\n ))\n ]\n }\n\n private key(T: Model.Type){\n let key = this.table.get(T);\n\n if(!key){\n key = Symbol(T.name);\n this.table.set(T, key);\n }\n\n return key;\n }\n\n public get(T: Model.Type){\n return (this as any)[this.key(T)];\n }\n\n public push(){\n return create(this) as this;\n }\n\n public inject(\n T: Model.Type,\n I: Model,\n writable?: boolean){\n\n do {\n const key = this.key(T);\n const conflict = this.hasOwnProperty(key);\n\n defineProperty(this, key, {\n value: conflict ? null : I,\n configurable: true,\n writable\n });\n\n T = getPrototypeOf(T);\n }\n while(T !== Model);\n }\n\n public pop(){\n const items = new Set<Model>();\n\n for(const key of getOwnPropertySymbols(this)){\n const entry = getOwnPropertyDescriptor(this, key)!;\n\n if(entry.writable && entry.value)\n items.add(entry.value)\n }\n\n for(const model of items)\n model.destroy();\n }\n}\n\nconst LookupContext = React.createContext(new Lookup());\nconst useLookup = () => React.useContext(LookupContext);\n\nfunction useContext <T extends Model> (Type: Model.Type<T>, required: false):T | undefined;\nfunction useContext <T extends Model> (Type: Model.Type<T>, arg?: boolean):T;\nfunction useContext <T extends Model> (Type: Model.Type<T>, effect: (found: T) => Callback | void): T;\nfunction useContext <T extends Model, K extends Model.Field<T>> (Type: Model.Type<T>, key: K): T[K];\n\nfunction useContext<T extends Model>(\n Type: Model.Type<T>,\n arg?: boolean | string | ((found: T) => Callback | void)) {\n\n const instance = useLookup().get(Type);\n\n if(!instance && arg !== false)\n throw Oops.NotFound(Type.name);\n\n switch(typeof arg){\n case \"string\":\n return (instance as any)[arg];\n\n case \"function\":\n React.useLayoutEffect(() => arg(instance), []);\n\n default:\n return instance;\n }\n}\n\nexport { Lookup, useLookup, useContext, Oops, LookupContext }","import { add } from '../instruction/add';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { InstanceOf } from '../types';\nimport { Lookup, useLookup } from './context';\nimport { Global } from './global';\n\nexport const Oops = issues({\n NotAllowed: (parent, child) =>\n `Global '${parent}' attempted to attach '${child}' but it is not also a singleton.`,\n\n AmbientRequired: (requested, requester, key) =>\n `Attempted to find an instance of ${requested} in context. It is required for [${requester}.${key}], but one could not be found.`\n})\n\nexport type Peer = typeof Model | typeof Global;\n\nconst PendingContext = new WeakMap<{}, ((context: Lookup) => void)[]>();\nconst ContextWasUsed = new WeakMap<Model, boolean>();\n\n/**\n * Find and attach most applicable instance of Model via context.\n * \n * Host controller will search element-hierarchy relative to where it spawned.\n * \n * @param Type - Type of model to find from context\n * @param callback -\n * - Invoked after context is scanned, is passed result - either found or undefined.\n * - If argument is inadequate, but required, your implemention should simply throw.\n * - If inadequate and not required, conditionally return false.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | boolean): T | undefined;\n\n/**\n * Find and attach most applicable instance of Model via context.\n *\n * Expects a `<Provider>` of target controller to exist. \n * Host controller will search element-hierarchy relative to where it spawned.\n *\n * @param Type - Type of controller to attach to property. \n * @param required - Throw if instance of Type cannot be found.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, required: true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, required?: boolean): T | undefined;\n\nfunction tap<T extends Peer>(\n type: T,\n argument?: boolean | ((instance: InstanceOf<T> | undefined) => void | boolean)){\n\n return add(\n function tap(key){\n if(\"set\" in type)\n return {\n recursive: true,\n value: type.get()\n }\n\n const { subject } = this;\n\n if(\"set\" in subject.constructor)\n throw Oops.NotAllowed(subject, type.name);\n\n getPending(subject).push(context => {\n let instance = context.get(type);\n\n if(typeof argument == \"function\"){\n if(argument(instance) === false)\n instance = undefined;\n }\n\n else if(!instance && argument)\n throw Oops.AmbientRequired(type.name, subject, key);\n\n this.state.set(key, instance);\n this.update(key);\n })\n\n return {\n recursive: true,\n suspend: true\n }\n }\n )\n};\n\nfunction usePeerContext(subject: Model){\n if(ContextWasUsed.has(subject)){\n if(ContextWasUsed.get(subject))\n useLookup();\n\n return;\n }\n\n const pending = PendingContext.get(subject);\n\n if(pending){\n const local = useLookup();\n\n for(const init of pending)\n init(local);\n\n PendingContext.delete(subject);\n }\n\n ContextWasUsed.set(subject, !!pending);\n}\n\nfunction getPending(subject: {}){\n let pending = PendingContext.get(subject);\n\n if(!pending)\n PendingContext.set(subject, pending = []);\n\n return pending;\n}\n\nexport { tap, usePeerContext, getPending }","import React from 'react';\nimport { Callback } from '../types';\n\nexport function use<T>(init: (trigger: Callback) => T){\n const [ state, update ] = React.useState((): T[] => [\n init(() => update(state.concat()))\n ]);\n\n return state[0];\n}","import React, { useState } from 'react';\n\nimport { Control } from '../control';\nimport { Model } from '../model';\nimport { usePeerContext } from './tap';\nimport { use } from './use';\n\nfunction useModel <T extends Model> (\n source: Model.Type<T> | (() => T),\n callback?: (instance: T) => void\n): T;\n\nfunction useModel <T extends Model> (\n source: Model.Type<T> | (() => T),\n watch: Model.Field<T>[],\n callback?: (instance: T) => void\n): T;\n\nfunction useModel <T extends Model> (\n source: Model.Type<T> | (() => T),\n apply: Model.Compat<T>,\n keys?: Model.Event<T>[]\n): T;\n\nfunction useModel <T extends Model> (\n source: (() => T) | Model.Type<T>,\n arg?: ((i: T) => void) | Model.Event<T>[] | Model.Compat<T>,\n arg2?: ((i: T) => void) | Model.Field<T>[]){\n\n const instance = React.useMemo(() => {\n const callback = arg2 || arg;\n const instance =\n Model.isTypeof(source) ?\n source.new() :\n source();\n\n Control.for(instance);\n\n if(typeof callback == \"function\")\n callback(instance);\n\n return instance;\n }, []);\n\n usePeerContext(instance);\n\n if(Array.isArray(arg)){\n const update = useState(0)[1];\n\n React.useLayoutEffect(() => { \n if(arg.length && instance instanceof Model)\n instance.on(arg, () => update(x => x+1));\n\n return () => {\n if(Model.isTypeof(source))\n (instance as Model).destroy();\n }\n }, []);\n\n return instance;\n }\n \n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n if(typeof arg == \"object\")\n local.assign(arg, arg2);\n\n React.useLayoutEffect(() => {\n local.commit();\n\n return () => {\n local.release();\n\n if(Model.isTypeof(source))\n (instance as Model).destroy();\n };\n }, []);\n\n return local.proxy;\n}\n\nexport { useModel }","import React from 'react';\n\nimport { Control } from '../control';\nimport { defineProperty } from '../object';\nimport { use } from './use';\n\nimport type { Callback } from '../types';\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect: true\n): Exclude<R, undefined>;\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect?: boolean\n): R;\n\nfunction useValue(\n source: {},\n compute: Function,\n suspend?: boolean) {\n\n const local = use(refresh => {\n const sub = Control.for(source).subscribe(() => update);\n const spy = sub.proxy;\n\n let value = compute.call(spy, spy);\n let update: Callback | undefined;\n let retry: Callback | undefined;\n\n const set = (next: any) => {\n value = next;\n\n if(retry) {\n retry();\n retry = undefined;\n }\n else\n refresh();\n };\n\n if(value instanceof Promise) {\n value.then(set);\n value = undefined;\n }\n else {\n sub.commit();\n update = () => {\n const next = compute.call(spy, spy);\n\n if(value != next)\n set(next);\n };\n }\n\n defineProperty(sub, \"proxy\", {\n get() {\n if(value === undefined && suspend)\n throw new Promise<void>(res => retry = res);\n\n return value;\n }\n });\n\n return sub;\n });\n\n React.useLayoutEffect(() => local.release, []);\n\n return local.proxy;\n}\n\nexport { useValue }\n","import React, { useMemo } from 'react';\n\nimport { Control } from '../control';\nimport { Model } from '../model';\nimport { suspend } from '../suspense';\nimport { useContext } from './context';\nimport { MVC } from './mvc';\nimport { use } from './use';\nimport { useValue } from './useValue';\n\ndeclare namespace useTap {\n type Source<T extends Model> =\n | T\n | Model.Type<T>\n | (() => T | Model.Type<T>);\n}\n\nfunction useTap <T extends Model> (\n source: useTap.Source<T>\n ): T;\n\nfunction useTap <T extends Model, K extends Model.Field<T>> (\n source: useTap.Source<T>,\n path: K,\n expect: true\n): Exclude<T[K], undefined>;\n\nfunction useTap <T extends Model, K extends Model.Field<T>> (\n source: useTap.Source<T>,\n path: K,\n expect?: boolean\n): T[K];\n\nfunction useTap <T extends Model, R> (\n source: useTap.Source<T>,\n compute: (this: T, from: T) => R,\n expect: true\n): Exclude<R, undefined>;\n\nfunction useTap <T extends Model, R> (\n source: useTap.Source<T>,\n compute: (this: T, from: T) => R,\n expect?: boolean\n): R;\n\nfunction useTap <T extends Model> (\n source: typeof Model | typeof MVC | (() => any),\n arg1?: Model.Field<T> | ((this: T, from: T) => any),\n arg2?: boolean) {\n\n const instance = useMemo(() => {\n if(typeof source == \"object\")\n return () => source;\n\n if(Model.isTypeof(source))\n return \"get\" in source\n ? () => source.get(true)\n : () => useContext(source);\n\n return source;\n }, [])() as T;\n\n if(typeof arg1 == \"function\")\n return useValue(instance, arg1, arg2);\n\n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n React.useLayoutEffect(local.commit, []);\n\n if(arg1 === undefined)\n return local.proxy;\n\n const value = local.proxy[arg1];\n\n if(value === undefined && arg2)\n throw suspend(local.parent, arg1);\n\n return value;\n}\n\nexport { useTap }","import { Model } from '../model';\nimport { Callback, Class } from '../types';\nimport { useContext } from './context';\nimport { useModel } from './useModel';\nimport { useTap } from './useTap';\n\nclass MVC extends Model {\n /**\n * **React Hook** - Fetch most instance of this controller from context, if it exists.\n * \n * @param required - Unless false, will throw where instance cannot be found.\n */\n static get <T extends MVC> (this: Model.Type<T>, required?: boolean): T;\n\n /**\n * **React Hook** - Fetch most instance of this controller from context.\n * \n * @param required - If false, may return undefined.\n */\n static get <T extends MVC> (this: Model.Type<T>, required: false): T | undefined;\n\n /**\n * **React Hook** - Fetch specific value from instance of this controller in context.\n */\n static get <I extends MVC, K extends Model.Field<I>> (this: Model.Type<I>, key: K): I[K];\n\n /**\n * **React Hook** - Fetch instance.\n * \n * Effect callback will run once if found, throw if not found.\n * Returned function is called on unmount.\n */\n static get <I extends MVC> (this: Model.Type<I>, effect: (found: I) => Callback | void): I;\n\n static get <T extends typeof MVC> (this: T, arg: any){\n return useContext(this, arg);\n }\n\n /** \n * **React Hook** - Fetch and subscribe to instance of this controller within ambient component.\n */\n static tap <T extends MVC> (this: Model.Type<T>): T;\n static tap <I extends MVC, K extends Model.Field<I>> (this: Model.Type<I>, key: K, expect: true): Exclude<I[K], undefined>;\n static tap <I extends MVC, K extends Model.Field<I>> (this: Model.Type<I>, key: K, expect?: boolean): I[K];\n static tap <T, I extends MVC> (this: Model.Type<I>, from: (this: I, state: I) => Promise<T>, expect: true): Exclude<T, undefined>;\n static tap <T, I extends MVC> (this: Model.Type<I>, from: (this: I, state: I) => Promise<T>, expect?: boolean): T;\n static tap <T, I extends MVC> (this: Model.Type<I>, from: (this: I, state: I) => T, expect: true): Exclude<T, undefined>;\n static tap <T, I extends MVC> (this: Model.Type<I>, from: (this: I, state: I) => T, expect?: boolean): T;\n\n static tap (key?: string | Function, expect?: boolean): any {\n return useTap(this, key as any, expect);\n }\n\n static use <I extends MVC> (this: Model.Type<I>, watch: Model.Field<I>[], callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, apply: Model.Compat<I>, keys?: Model.Event<I>[]): I;\n\n static use <T extends typeof MVC> (this: T, a: any, b?: any){\n return useModel(this, a, b);\n }\n\n static meta <T extends Class>(this: T): T;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect: true): Exclude<T[K], undefined>;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect?: boolean): T[K];\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect?: boolean): T;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect?: boolean): T;\n\n static meta (path?: string | Function, expect?: boolean): any {\n return useTap(() => this, path as any, expect);\n }\n}\n\nexport { MVC };","import { Control } from './control';\nimport { Model } from './model';\nimport { defineProperties } from './object';\nimport { Subscriber } from './subscriber';\n\nconst LOCAL = \"$debug local\";\nconst STATE = \"$debug state\";\nconst UPDATE = \"$debug update\";\nconst CONTROL = \"$debug controller\";\n\ndefineProperties(Model.prototype, {\n [CONTROL]: {\n get(this: Model){\n return Control.get(this);\n }\n },\n [LOCAL]: {\n get(this: Model){\n return Subscriber.get(this);\n }\n },\n [STATE]: {\n get(this: Model){\n const { state } = Control.get(this)!;\n const output: any = {};\n\n state.forEach((value, key) => output[key] = value);\n\n return output;\n }\n },\n [UPDATE]: {\n get(this: Model){\n const source = Subscriber.get(this) || Control.get(this);\n\n return source && source.latest;\n }\n }\n})\n\nconst Debug = {\n CONTROL,\n LOCAL,\n STATE,\n UPDATE\n} as const;\n\ntype Debug<T extends {}> = T & {\n /** Controller for this instance. */\n [CONTROL]?: Control<T>;\n\n /** Current subscriber (if present) while used in a live context (e.g. hook or effect). */\n [LOCAL]?: Subscriber<T>;\n\n /** Current state of this instance. */\n [STATE]?: Model.Values<T>;\n\n /**\n * Last update causing a refresh to subscribers.\n * \n * If accessed directly, will contain all keys from last push.\n * If within a subscribed function, will contain only keys which explicitly caused a refresh.\n */\n [UPDATE]?: readonly Model.Event<T>[];\n}\n\nexport { Debug };","import React from 'react';\n\nimport { issues } from '../issues';\nimport { Class } from '../types';\nimport { useContext } from './context';\nimport { useTap } from './useTap';\n\nexport const Oops = issues({\n BadProps: () =>\n `Provider expects either a render function, 'get' or 'has' props.`\n})\n\ndeclare namespace Consumer {\n type HasProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Getter function. Is called on every natural render of this component.\n * Will throw if usable instance cannot be found in context.\n */\n has: (value: InstanceType<E>) => void;\n }\n\n type GetProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /** Getter function. Is called on every natural render of this component. */\n get: (value: InstanceType<E> | undefined) => void;\n }\n\n type RenderProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Render function, will receive instance of desired controller.\n *\n * Similar to `tap()`, updates to properties accessed in\n * this function will cause a refresh when they change.\n */\n children: (value: InstanceType<E>) => React.ReactElement<any, any> | null;\n }\n\n type Props<T extends Class> = HasProps<T> | GetProps<T> | RenderProps<T>\n}\n\nfunction Consumer<T extends Class>(props: Consumer.Props<T>){\n const { get, has, children, for: type } = props as any;\n\n if(typeof children == \"function\")\n return children(useTap(type));\n\n const callback = has || get;\n\n if(typeof callback == \"function\")\n callback(useContext(type, !!has));\n else\n throw Oops.BadProps()\n\n return null;\n}\n\nexport { Consumer };","import React from 'react';\n\nimport { Control } from '../control';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { entries, values } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { Class } from '../types';\nimport { Lookup, LookupContext, useLookup } from './context';\nimport { getPending } from './tap';\nimport { use } from './use';\n\nexport const Oops = issues({\n NoType: () =>\n \"Provider 'for' prop must be Model, typeof Model or a collection of them.\"\n})\n\ndeclare namespace Provider {\n type Item = Model | Model.Type;\n\n type Multiple<T extends Item = Item> = T[] | { [key: string]: T };\n\n type Existent<E> = E extends Class ? InstanceType<E> : E extends Model ? E : never;\n\n type NormalProps<E, I = Existent<E>> =\n & {\n for: E;\n children?: React.ReactNode | ((instance: I) => React.ReactNode);\n }\n & Model.Compat<I>;\n\n // FIX: This fails to exclude properties with same key but different type.\n type MultipleProps<T extends Item> =\n & {\n for: Multiple<T>;\n children?: React.ReactNode | (() => React.ReactNode);\n }\n & Model.Compat<Existent<T>>;\n\n type Props<T extends Item> = MultipleProps<T> | NormalProps<T>;\n}\n\nfunction Provider<T extends Provider.Item>(props: Provider.Props<T>){\n const context = useNewContext(props.for);\n const render = props.children;\n\n useAppliedProps(context, props);\n React.useLayoutEffect(() => () => context.pop(), []);\n\n return React.createElement(LookupContext.Provider, { value: context },\n typeof render == \"function\"\n ? React.createElement(RenderFunction, { context, render })\n : render\n );\n}\n\nexport { Provider };\n\nfunction useNewContext(\n include: Provider.Item | Provider.Multiple){\n\n const ambient = useLookup();\n\n return React.useMemo(() => {\n if(!include)\n throw Oops.NoType();\n\n const layer = ambient.push();\n\n function register(I: Model | typeof Model){\n if(I instanceof Model)\n layer.inject(I.constructor as any, I, false);\n else\n layer.inject(I, I.new(), true);\n }\n\n if(include instanceof Model || typeof include == \"function\")\n register(include);\n else\n values(include).forEach(register);\n\n for(const instance of layer.local)\n if(instance)\n for(const apply of getPending(instance))\n apply(layer)\n\n return layer;\n }, []);\n}\n\nfunction useAppliedProps(context: Lookup, props: {}){\n const apply = React.useMemo(() => {\n return (props: {}) => {\n entries(props).forEach(([key, value]) => {\n if(key == \"for\" || key == \"children\")\n return;\n\n for(const into of context.local)\n if(into && key in into)\n (into as any)[key] = value;\n })\n };\n }, []);\n\n apply(props);\n}\n\ninterface RenderFunctionProps {\n context: Lookup;\n render: Function;\n}\n\nfunction RenderFunction(props: RenderFunctionProps): any {\n const hook = use(refresh => {\n const targets = props.context.local;\n\n if(targets.length == 1)\n return Control.for(targets[0]).subscribe(() => refresh);\n\n return {} as Subscriber;\n });\n\n if(hook.commit)\n React.useLayoutEffect(hook.commit, []);\n\n return props.render(hook.proxy);\n}","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { Class, InstanceOf } from '../types';\nimport { MVC } from './mvc';\n\nexport const Oops = issues({\n DoesNotExist: (name) =>\n `Tried to access singleton ${name}, but none exist! Did you forget to initialize?\\nCall ${name}.new() before attempting to access, or consider using ${name}.use() instead.`,\n\n AlreadyExists: (name) =>\n `Shared instance of ${name} already exists! Consider unmounting existing, or use ${name}.reset() to force-delete it.`\n})\n\nconst Active = new WeakMap<Class, Global>();\n\nexport class Global extends MVC {\n constructor(){\n super();\n Active.set(this.constructor as Class, this);\n }\n\n destroy(force?: boolean){\n const type = this.constructor as typeof Global;\n \n if(type.keepAlive && !force)\n return false;\n\n Control.for(this).clear();\n Active.delete(type);\n return true;\n }\n\n static keepAlive = true;\n\n static new<T extends Class>(\n this: T, ...args: ConstructorParameters<T>){\n\n if(Active.has(this))\n if((this as any).keepAlive)\n return Active.get(this) as InstanceOf<T>;\n else\n throw Oops.AlreadyExists(this.name);\n\n const instance = new this(...args);\n\n Control.for(instance);\n\n return instance as InstanceOf<T>;\n }\n\n /**\n * Update the active instance of this class.\n * Returns a thenable; resolves after successful update.\n * If instance does not already exist, one will be created. \n */\n static set<T extends typeof Global>(\n this: T, values: Model.Compat<InstanceOf<T>, Global>){\n\n return this.get(true).update(values);\n }\n\n /**\n * **React Hook** - Fetch most instance of this controller from context, if it exists.\n * \n * @param required - If false, may return undefined.\n */\n static get <T extends Global> (this: Model.Type<T>, required: false): T | undefined;\n\n /**\n * **React Hook** - Fetch most instance of this controller from context.\n * \n * @param required - Unless false, will throw where instance cannot be found.\n */\n static get <T extends Global> (this: Model.Type<T>, required?: boolean): T;\n\n /**\n * **React Hook** - Fetch specific value from instance of this controller in context.\n */\n static get <T extends Global, K extends Model.Field<T, Global>> (this: Model.Type<T>, key: K): T[K];\n\n static get(arg?: boolean | string){\n const instance = Active.get(this);\n\n if(!instance && arg !== false)\n throw Oops.DoesNotExist(this.name);\n\n return (\n typeof arg == \"string\" ?\n (instance as any)[arg] :\n instance\n )\n }\n\n /** Destroy current instance of Global, if it exists. */\n static reset(){\n const current = Active.get(this);\n\n if(current)\n current.destroy(true);\n }\n}"],"names":["Oops","REGISTER","use","React","useState","useMemo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/issues.ts","../src/object.ts","../src/suspense.ts","../src/instruction/get.compute.ts","../src/subscriber.ts","../src/control.ts","../src/instruction/add.ts","../src/instruction/run.ts","../src/instruction/get.factory.ts","../src/instruction/get.ts","../src/effect.ts","../src/instruction/ref.ts","../src/instruction/set.ts","../src/instruction/use.keyed.ts","../src/instruction/use.ts","../src/instruction/has.ts","../src/event.ts","../src/model.ts","../src/react/context.ts","../src/react/tap.ts","../src/react/use.ts","../src/react/useModel.ts","../src/react/useValue.ts","../src/react/useTap.ts","../src/react/mvc.ts","../src/debug.ts","../src/react/consumer.ts","../src/react/provider.ts","../src/react/global.ts"],"sourcesContent":["declare namespace Issue {\n export type Variable = {} | string | number | boolean | null;\n export type Variables<T> = T extends (...args: infer T) => any ? T : never;\n\n export type Messages = {\n [named: string]: (...args: Variable[]) => string;\n }\n\n export type Output<M extends Messages> = {\n readonly [P in keyof M]: (...args: Variables<M[P]>) => Issue;\n }\n}\n\nexport class Issue extends Error {\n // drop first line (error factory) in stack trace.\n stack = this.stack.replace(/\\n.+/, \"\") as string;\n\n warn(){\n console.warn(this.message);\n }\n}\n\nexport function issues<M extends Issue.Messages>(register: M){\n const Library = {} as any;\n\n for(const name in register)\n Library[name] = (...args: Issue.Variable[]) => \n new Issue(register[name].apply(null, args));\n\n return Library as Issue.Output<M>;\n}","const {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyNames,\n getOwnPropertyDescriptor,\n getOwnPropertySymbols,\n values\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n values\n}","import { Control } from './control';\nimport { issues } from './issues';\nimport { assign } from './object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`,\n})\n\ntype Suspense<T = any> = Promise<T> & Error;\n\nexport function suspend(\n source: Control, key: string): Suspense {\n\n const error =\n Oops.NotReady(source.subject, key);\n\n const promise = new Promise<void>(resolve => {\n const release = source.addListener(forKey => {\n if(forKey == key)\n return () => {\n if(source.state.get(key) !== undefined){\n release();\n resolve();\n }\n }\n });\n });\n\n return assign(promise, {\n toString: () => String(error),\n name: \"Suspense\",\n message: error.message,\n stack: error.stack\n });\n}\n\nexport function mayRetry(fn: () => any): any {\n const retry = (err: unknown) => {\n if(err instanceof Promise)\n return err.then(compute);\n else\n throw err;\n }\n\n const compute = (): any => {\n try {\n const output = fn();\n\n return output instanceof Promise\n ? output.catch(retry)\n : output;\n }\n catch(err){\n return retry(err);\n }\n }\n\n return compute();\n}","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\nimport { Callback } from '../types';\n\nimport type { get } from './get';\n\nexport const Oops = issues({\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\nconst INFO = new WeakMap<Callback, string>();\nconst KEYS = new WeakMap<Control, Set<Callback>>();\nconst ORDER = new WeakMap<Control, Map<Callback, number>>();\n\nexport function computeMode(\n self: Control,\n source: Control,\n setter: get.Function<any, any>,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let sub: Subscriber;\n let order = ORDER.get(self)!;\n let pending = KEYS.get(self)!\n\n if(!order)\n ORDER.set(self, order = new Map());\n\n if(!pending)\n KEYS.set(self, pending = new Set());\n\n const compute = (initial: boolean) => {\n try {\n return setter.call(sub.proxy, sub.proxy);\n }\n catch(err){\n Oops.Failed(subject, key, initial).warn();\n throw err;\n }\n }\n\n const refresh = () => {\n let value;\n\n try {\n value = compute(false);\n }\n catch(e){\n console.error(e);\n }\n finally {\n if(state.get(key) !== value){\n state.set(key, value);\n self.update(key);\n return value;\n }\n }\n }\n\n const create = () => {\n sub = source.subscribe((_, source) => {\n if(source !== self)\n refresh();\n else\n pending.add(refresh);\n });\n\n sub.watch.set(key, false);\n\n try {\n const value = compute(true);\n state.set(key, value);\n return value;\n }\n catch(e){\n throw e;\n }\n finally {\n sub.commit();\n order.set(refresh, order.size);\n }\n }\n\n INFO.set(refresh, key);\n\n return () => {\n if(pending.has(refresh)){\n pending.delete(refresh)\n refresh();\n }\n\n const value = sub ? state.get(key) : create();\n\n if(value === undefined && required)\n throw suspend(self, key);\n\n return value;\n }\n}\n\nexport function flush(control: Control){\n const pending = KEYS.get(control);\n\n if(!pending || !pending.size)\n return;\n\n const priority = ORDER.get(control)!;\n\n while(pending.size){\n let compute!: Callback;\n\n for(const item of pending)\n if(!compute || priority.get(item)! < priority.get(compute)!)\n compute = item;\n\n pending.delete(compute);\n\n const key = INFO.get(compute)!;\n\n if(!control.frame.has(key))\n compute();\n }\n\n pending.clear();\n}","import { Control } from './control';\nimport { Model } from './model';\nimport { create, defineProperty, getOwnPropertyNames } from './object';\n\nimport type { Callback } from './types';\n\nconst REGISTER = new WeakMap<{}, Subscriber>();\n\ntype Listener = {\n commit(): void;\n release(): void;\n}\n\ndeclare namespace Subscriber {\n type OnEvent<T = any> = (key: Model.Event<T> | null, source: Control) => Callback | void;\n}\n\nclass Subscriber <T extends {} = any> {\n static get<T extends {}>(from: T){\n return REGISTER.get(from) as Subscriber<T> | undefined;\n }\n\n public proxy!: T;\n public release!: Callback;\n public latest?: Model.Event<T>[];\n\n public active = false;\n public dependant = new Set<Listener>();\n public watch = new Map<any, boolean | (() => true | void)>();\n\n constructor(\n public parent: Control<T>,\n public onUpdate: Subscriber.OnEvent){\n\n const proxy = create(parent.subject);\n const reset = () => this.latest = undefined;\n\n REGISTER.set(proxy, this);\n \n defineProperty(this, \"proxy\", {\n configurable: true,\n get(){\n setTimeout(reset, 0);\n return proxy;\n }\n })\n }\n\n get using(): Model.Values<T>[] {\n return Array.from(this.watch.keys());\n }\n\n assign(apply: Model.Compat<T>, keys?: any){\n const { waiting, subject } = this.parent;\n\n this.active = false;\n\n if(typeof keys !== \"object\")\n keys = getOwnPropertyNames(subject) as Model.Field<T>[];\n\n for(const key of keys)\n if(key in apply)\n (subject as any)[key] = (apply as any)[key];\n\n waiting.add(() => this.active = true);\n }\n\n add(key: any, value?: boolean | Callback){\n if(value !== undefined)\n this.watch.set(key, value);\n else if(!this.watch.has(key))\n this.watch.set(key, true);\n }\n\n commit = () => {\n const release = this.parent.addListener(this.event);\n\n this.active = true;\n this.dependant.forEach(x => x.commit());\n\n return this.release = () => {\n this.dependant.forEach(x => x.release());\n release();\n };\n }\n\n private event = (key: Model.Event<T> | null) => {\n if(!this.active)\n return;\n\n const { parent, watch } = this;\n\n const handler = watch.get(key);\n let notify: void | Control.OnAsync;\n\n if(typeof handler == \"function\"){\n const callback = handler();\n\n if(callback === true)\n notify = this.onUpdate(key, parent);\n }\n else if(handler === true)\n notify = this.onUpdate(key, parent);\n\n if(!notify)\n return;\n\n parent.waiting.add(update => {\n this.latest = update.filter(k => watch.has(k));\n });\n parent.waiting.add(notify);\n }\n}\n\nexport { Subscriber }","import { Instruction } from './instruction/add';\nimport { flush } from './instruction/get.compute';\nimport { Model } from './model';\nimport { defineProperty, getOwnPropertyDescriptor } from './object';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback } from './types';\n\nconst REGISTER = new WeakMap<{}, Control>();\nconst PENDING = new Map<symbol, Instruction.Runner<any>>();\n\ndeclare namespace Control {\n /**\n * Callback for Controller.for() static method.\n * Returned callback is forwarded.\n */\n type OnReady<T extends {}> = (control: Control<T>) => Callback | void;\n\n /**\n * Called immediately when any key is changed or emitted.\n * Returned callback is notified when update is complete.\n */\n type OnSync<T = any> = (key: Model.Event<T> | null, source: Control) => OnAsync<T> | void;\n\n /** Called at the end of an event frame with all keys affected. */\n type OnAsync<T = any> = (keys: Model.Event<T>[]) => void;\n\n // TODO: implement value type\n type OnValue<T = any> = (this: T, value: any) => boolean | void;\n}\n\nclass Control<T extends {} = any> {\n public state!: Map<any, any>;\n public frame = new Set<string>();\n public waiting = new Set<Control.OnAsync<T>>();\n public followers = new Set<Control.OnSync>();\n public latest?: Model.Event<T>[];\n\n constructor(public subject: T){\n REGISTER.set(subject, this);\n }\n\n subscribe(callback: Subscriber.OnEvent<T>){\n return new Subscriber<T>(this, callback);\n }\n\n watch(key: keyof T & string){\n const { subject, state } = this;\n const { value } = getOwnPropertyDescriptor(subject, key)!;\n\n if(typeof value == \"function\")\n return;\n\n if(typeof value == \"symbol\"){\n const instruction = PENDING.get(value);\n\n if(instruction){\n delete subject[key];\n PENDING.delete(value);\n instruction.call(this, key, this);\n }\n\n return;\n }\n\n state.set(key, value);\n\n defineProperty(subject, key, {\n enumerable: false,\n set: this.ref(key as any),\n get(){\n const sub = Subscriber.get(this);\n\n if(sub)\n sub.add(key);\n\n return state.get(key);\n }\n });\n }\n\n addListener(listener: Control.OnSync<T>){\n this.followers.add(listener);\n return () => {\n this.followers.delete(listener)\n }\n }\n\n ref<K extends Model.Field<T>>(\n key: K,\n handler?: (this: T, value: T[K]) => boolean | void){\n \n const { subject, state } = this;\n \n return (value: any) => {\n if(state.get(key) == value)\n return;\n \n if(handler)\n switch(handler.call(subject, value)){\n case true:\n this.update(key);\n case false:\n return;\n }\n \n state.set(key, value);\n this.update(key);\n }\n }\n\n update(key: Model.Field<T>){\n const { followers, frame, waiting } = this;\n \n if(frame.has(key))\n return;\n \n else if(!frame.size)\n setTimeout(() => {\n flush(this); \n const keys = this.latest = Array.from(frame);\n setTimeout(() => this.latest = undefined, 0);\n\n frame.clear();\n \n for(const notify of waiting)\n try {\n waiting.delete(notify);\n notify(keys);\n }\n catch(err){\n console.error(err);\n }\n }, 0);\n \n frame.add(key);\n \n for(const callback of followers){\n const event = callback(key, this);\n \n if(typeof event == \"function\")\n waiting.add(event);\n }\n }\n\n clear(){\n const listeners = [ ...this.followers ];\n\n this.followers.clear();\n listeners.forEach(x => x(null, this));\n }\n\n static get<T extends {}>(from: T){\n if(from && \"is\" in from)\n from = (from as any).is as T;\n \n return REGISTER.get(from) as Control<T> | undefined;\n }\n\n static for<T extends {}>(subject: T): Control<T>;\n static for<T extends {}>(subject: T, cb: Control.OnReady<T>): Callback;\n static for<T extends {}>(subject: T, cb?: Control.OnReady<T>){\n const control = this.get(subject) || new this(subject);\n\n if(!control.state){\n const { waiting } = control;\n \n if(cb){\n let callback: Callback | void;\n \n waiting.add(() => {\n callback = cb(control);\n });\n \n return () => {\n if(callback)\n callback();\n }\n }\n \n control.state = new Map();\n \n for(const key in subject)\n control.watch(key);\n \n control.waiting = new Set();\n \n for(const cb of waiting)\n cb([]);\n }\n \n return cb ? cb(control) : control;\n }\n}\n\nexport {\n Control,\n PENDING\n}","import { Control, PENDING } from '../control';\nimport { defineProperty } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\nimport { Callback } from '../types';\n\n/**\n * Property initializer, will run upon instance creation.\n * Optional returned callback will run when once upon first access.\n */\ntype Instruction<T> = (this: Control, key: string, thisArg: Control) =>\n | Instruction.Getter<T> \n | Instruction.ExplicitDescriptor\n | Instruction.Descriptor<T>\n | Instruction.RecursiveDescriptor<T>\n | boolean\n | void;\n\ndeclare namespace Instruction {\n type Getter<T> = (within?: Subscriber) => T;\n type Setter<T> = (value: T) => boolean | void;\n\n type Runner<T> = (this: Control, key: string, on: Control) =>\n Instruction.Descriptor<T> | boolean | undefined;\n\n interface Descriptor<T> {\n configurable?: boolean;\n enumerable?: boolean;\n value?: T;\n writable?: boolean;\n get?: Getter<T>;\n set?: Setter<T> | false;\n suspend?: boolean;\n destroy?: () => void;\n }\n\n interface ExplicitDescriptor extends PropertyDescriptor {\n explicit: true;\n }\n\n interface RecursiveDescriptor<T> {\n recursive: true;\n enumerable?: boolean;\n value?: T;\n set?: Setter<T> | false;\n suspend?: boolean;\n }\n}\n\n/**\n * Run instruction as controller sets itself up.\n * This will specialize the behavior of a given property.\n */\nfunction add<T = any>(\n instruction: Instruction<any>,\n label?: string){\n\n const name = label || instruction.name || \"pending\";\n const placeholder = Symbol(`${name} instruction`);\n\n function setup(this: Control, key: string){\n const { subject, state } = this;\n\n let output = instruction.call(this, key, this);\n\n if(typeof output == \"function\")\n output = { get: output };\n\n if(typeof output != \"object\")\n return;\n\n if(\"explicit\" in output && output.explicit){\n defineProperty(subject, key, output);\n return false;\n }\n\n let {\n get: onGet,\n set: onSet,\n suspend: shouldSuspend\n } = output as Instruction.Descriptor<any>;\n\n if(\"value\" in output)\n state.set(key, output.value);\n\n if(\"recursive\" in output && output.recursive)\n onGet = getRecursive(key, this);\n\n if(\"destroy\" in output){\n const { destroy } = output;\n\n if(destroy)\n this.addListener((key) => {\n if(key == null)\n destroy();\n })\n }\n\n const control = this;\n\n defineProperty(subject, key, {\n enumerable: output.enumerable,\n\n set: onSet !== false\n ? this.ref(key, onSet)\n : undefined,\n\n get(this: any){\n if(!state.has(key) && shouldSuspend)\n throw suspend(control, key);\n \n const local = Subscriber.get(this);\n \n if(local)\n local.add(key);\n \n return onGet\n ? onGet(local)\n : state.get(key);\n }\n });\n }\n\n PENDING.set(placeholder, setup);\n\n return placeholder as unknown as T;\n}\n\nexport function getRecursive(key: string, from: Control){\n const context = new WeakMap<Subscriber, {} | undefined>();\n\n return (local: Subscriber | undefined) => {\n if(!local)\n return from.state.get(key);\n\n if(!context.has(local)){\n let reset: Callback | undefined;\n\n const init = () => {\n if(reset)\n reset();\n\n const value = from.state.get(key);\n \n if(Control.get(value)){\n const child = Control.for(value).subscribe(local.onUpdate);\n \n if(local.active)\n child.commit();\n \n local.dependant.add(child);\n context.set(local, child.proxy);\n\n reset = () => {\n child.release();\n local.dependant.delete(child);\n context.set(local, undefined);\n reset = undefined;\n }\n }\n\n return true;\n }\n \n local.add(key, init);\n init();\n }\n\n return context.get(local);\n }\n}\n\nexport { add, Instruction }","import { issues } from '../issues';\nimport { defineProperty } from '../object';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\n\ntype Async<T = any> = (...args: any[]) => Promise<T>;\n\nexport const Oops = issues({\n DuplicatePending: (key) =>\n `Invoked action ${key} but one is already active.`\n})\n\n/**\n * Sets an exotic method with managed ready-state. Property accepts an async function.\n *\n * When a run-method is invoked, its `active` property to true for duration of call.\n * This is emitted as an update to property, both when called and after returns (or throws).\n *\n * **Note:** Subsequent calls will immediately throw if one is still pending.\n *\n * @param action - Action to fire when resulting property is invoked.\n */\nfunction run (action: Async): typeof action & { active: boolean };\nfunction run <S> (action: Async<S>): typeof action & { active: boolean };\n\nfunction run<T extends Async>(task: T){\n return add<T>(\n function run(key){\n let pending = false;\n\n const invoke = async (...args: any[]) => {\n if(pending)\n return Promise.reject(\n Oops.DuplicatePending(key)\n )\n\n pending = true;\n this.update(key);\n\n try {\n return await mayRetry(() => (\n task.apply(this.subject, args)\n ))\n }\n finally {\n pending = false;\n this.update(key);\n }\n }\n\n this.state.set(key, undefined);\n\n defineProperty(invoke, \"active\", {\n get: () => pending\n })\n\n return {\n value: invoke as T,\n set: false\n };\n }\n )\n}\n\nexport { run }","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { assign } from '../object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n});\n\nexport function factoryMode<T>(\n self: Control,\n output: Promise<T> | T,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let pending: Promise<any> | undefined;\n let error: any;\n\n if(output instanceof Promise){\n state.set(key, undefined);\n\n pending = output\n .catch(err => error = err)\n .then(val => {\n state.set(key, val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n self.update(key);\n })\n }\n\n state.set(key, output);\n\n const suspend = () => {\n if(required === false)\n return undefined;\n\n const issue =\n Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n \n return (): T | undefined => {\n if(error)\n throw error;\n\n if(pending)\n return suspend();\n\n if(state.has(key))\n return state.get(key);\n }\n}","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\nimport { computeMode } from './get.compute';\nimport { factoryMode } from './get.factory';\n\nexport const Oops = issues({\n PeerNotAllowed: (model, property) =>\n `Attempted to use an instruction result (probably use or tap) as computed source for ${model}.${property}. This is not possible.`,\n\n ComputeFailed: (model, key) =>\n `Generating initial value for ${model}.${key} failed.`,\n\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\ndeclare namespace get {\n type Function<T, S = any> = (this: S, on: S) => T;\n type Factory<T, S = unknown> = (this: S, key: string, thisArg: S) => T;\n}\n\n/**\n * Implement a computed value; output will be generated by provided function.\n *\n * @param source - Source model from which computed value will be a subscriber.\n * @param compute - Compute function. Bound to a subscriber-proxy of source, returns output value. Will update automatically as input values change.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend?: boolean): R;\n\n/**\n * Implement a computed value; output is returned by function from provided factory.\n *\n * @param compute - Factory function to generate a getter to subscribe dependancies.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend?: boolean): R;\n\n/**\n * Set property with an async function.\n *\n * Property cannot be accessed until factory resolves, yeilding a result.\n * If accessed while processing, React Suspense will be thrown.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T> (factory: get.Factory<Promise<T>>, required: false): T | undefined;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required: false): T | undefined;\n\nfunction get <T> (factory: get.Factory<Promise<T>>, required?: boolean): T;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required?: boolean): T;\n\n/**\n * Set property with a factory function.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T>(factory: get.Factory<T>, required: false): T | undefined;\nfunction get <T, S>(factory: get.Factory<T, S>, required: false): T | undefined;\n\nfunction get <T>(factory: get.Factory<T>, required?: boolean): T;\nfunction get <T, S>(factory: get.Factory<T, S>, required?: boolean): T;\n\n/**\n * Assign a property with result of a promise.\n */\nfunction get <T> (factory: Promise<T>, required: false): T | undefined;\nfunction get <T> (factory: Promise<T>, required?: boolean): T;\n \nfunction get<R, T>(\n arg0: ((this: T, key: string, thisArg: T) => get.Function<R, T> | T) | Promise<R>,\n arg1?: get.Function<T> | boolean,\n arg2?: boolean): R {\n\n return add(\n function get(key){\n const { subject } = this;\n const computeRequired = arg1 === true || arg2 === true;\n const factoryRequired = arg1 !== false && arg2 !== false;\n\n let getter: () => any;\n\n // Easy mistake, using a peer, will always be unresolved.\n if(typeof arg0 == \"symbol\")\n throw Oops.PeerNotAllowed(subject, key);\n\n // if(typeof arg0 == \"function\" && /^[A-Z]/.test(arg0.name))\n // throw Oops.BadSource(subject, key, arg0);\n\n this.state.set(key, undefined);\n\n const init = (): any => {\n let source = this;\n let setter: get.Function<T, any>;\n \n if(typeof arg0 == \"function\"){\n const result = mayRetry(() => arg0.call(subject, key, subject));\n \n if(typeof result == \"function\")\n setter = result;\n else {\n getter = factoryMode(this, result, key, factoryRequired);\n return;\n }\n }\n else if(arg0 instanceof Promise){\n getter = factoryMode(this, arg0, key, factoryRequired);\n return;\n }\n else if(typeof arg1 == \"function\"){\n // replace source controller in-case it is different\n source = Control.for(arg0);\n setter = arg1;\n }\n else\n throw new Error(`Factory argument cannot be ${arg1}`);\n\n getter = computeMode(this, source, setter, key, computeRequired);\n }\n\n if(typeof arg0 == \"function\" && computeRequired)\n try {\n init();\n }\n catch(err){\n Oops.ComputeFailed(subject, key).warn();\n throw err;\n }\n\n return () => {\n if(!getter)\n init();\n\n return getter();\n }\n }\n )\n}\n\nexport { get }","import { Model } from \"./model\";\nimport { Control } from \"./control\";\nimport { mayRetry } from \"./suspense\";\nimport { Callback } from \"./types\";\nimport { issues } from \"./issues\";\n\nexport const Oops = issues({\n BadCallback: () =>\n `Callback for effect-callback may only return a function.`\n})\n\nexport function createEffect<T extends Model>(\n model: T,\n callback: Model.Effect<T>,\n keys: Model.Event<T>[]){\n\n return Control.for(model, control => {\n let unSet: Callback | Promise<any> | void;\n let busy = false;\n\n function effect(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet();\n \n unSet = callback.call(this, value);\n \n if(unSet instanceof Promise)\n unSet = undefined;\n \n if(unSet && typeof unSet !== \"function\")\n throw Oops.BadCallback()\n }\n\n function invoke(){\n if(busy)\n return;\n\n const output = mayRetry(() => {\n effect.call(model, model);\n })\n\n if(output instanceof Promise){\n output.finally(() => busy = false);\n busy = true;\n }\n }\n\n if(Array.isArray(keys)){\n invoke();\n\n return control.addListener(key => {\n if(key === null){\n if(!keys.length)\n invoke();\n }\n else if(keys.includes(key))\n return invoke;\n });\n }\n\n const sub = control.subscribe(() => invoke);\n\n model = sub.proxy;\n invoke();\n\n return sub.commit();\n });\n}\n\nexport type AssignCallback<T> =\n (this: any, argument: T, thisArg: any) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n\nexport function createValueEffect<T = any>(\n callback: AssignCallback<T>){\n\n let unSet: ((next: T) => void) | undefined;\n\n return function(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet(value);\n\n const out = callback.call(this, value, this);\n\n if(typeof out == \"boolean\")\n return out;\n\n if(!out || out instanceof Promise)\n return;\n\n if(typeof out == \"function\")\n unSet = out;\n else\n throw Oops.BadCallback()\n }\n}","import { Control } from '../control';\nimport { createValueEffect } from '../effect';\nimport { Model } from '../model';\nimport { defineProperty } from '../object';\nimport { add } from './add';\n\ndeclare namespace ref {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<void> | void | boolean;\n\n interface Object<T = any> {\n (next: T): void;\n current: T | null;\n }\n\n /** Object with references to all managed values of `T`. */\n type Proxy<T extends Model> = {\n [P in Model.Field<T>]-?: Model.Ref<T[P]>\n };\n\n type CustomProxy<T extends Model, R> = {\n [P in Model.Field<T>]-?: R;\n }\n}\n\n/**\n * Creates an object with references to all managed values.\n * Each property is a function to set value in state when invoked.\n *\n * *Properties are simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param target - Source model from which to reference values.\n */\nfunction ref <T extends Model> (target: T): ref.Proxy<T>;\n\n/**\n * Creates an object with values based on managed values.\n * Each property will invoke mapper function on first access supply\n * the its return value going forward.\n *\n * @param target - Source model from which to reference values.\n * @param mapper - Function producing the placeholder value for any given property.\n */\nfunction ref <O extends Model, R>\n (target: O, mapper: (key: Model.Field<O>) => R): ref.CustomProxy<O, R>;\n\n/**\n * Creates a ref-compatible property.\n * Will persist value, and updates to this are made part of controller event-stream.\n *\n * *Output is simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param callback - Optional callback to synchronously fire when reference is first set or does update.\n */\nfunction ref <T = HTMLElement> (callback?: ref.Callback<T>): ref.Object<T>;\nfunction ref <T, S> (callback?: ref.Callback<T, S>): ref.Object<T>;\n\nfunction ref<T>(\n arg?: ref.Callback<T> | Model,\n mapper?: (key: string) => any){\n\n return add(\n function ref(key){\n let value: ref.Object | ref.Proxy<any> = {};\n\n if(typeof arg != \"object\")\n value = createRef(this, key, arg);\n else\n Control.for(arg).state.forEach((_val, key) => {\n defineProperty(value, key,\n mapper ? {\n configurable: true,\n get(){\n const out = mapper(key);\n defineProperty(value, key, { value: out });\n return out;\n }\n } : {\n value: createRef(this, key)\n })\n })\n\n return { value, explicit: true };\n }\n )\n}\n\nexport { ref }\n\nfunction createRef(\n src: Control,\n key: string,\n cb?: ref.Callback<any>){\n\n const refObjectFunction =\n src.ref(key, cb && createValueEffect(cb));\n\n defineProperty(refObjectFunction, \"current\", {\n set: refObjectFunction,\n get: () => src.state.get(key)\n })\n\n return refObjectFunction as ref.Object;\n}","import { createValueEffect } from '../effect';\nimport { add } from './add';\n\ndeclare namespace set {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n}\n\n/**\n * Set property with a placeholder.\n * \n * Property cannot be accessed until it is defined. If accessed while undefined, a hybrid\n * `Promise`/`Error` (ala: [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html)) will be thrown.\n */\nfunction set <T = any>(): T;\n\nfunction set <T> (onUpdate: set.Callback<T>): T;\nfunction set <T, S> (onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: undefined, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: undefined, onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: T, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: T, onUpdate: set.Callback<T, S>): T;\n\nfunction set(\n value?: any,\n argument?: set.Callback<any> | boolean): any {\n\n if(!(1 in arguments)){\n argument = value;\n value = undefined;\n }\n\n return add(\n function set(key){\n if(value !== undefined)\n this.state.set(key, value);\n\n return {\n suspend: true,\n set: typeof argument == \"function\"\n ? createValueEffect(argument)\n : undefined\n }\n }\n )\n}\n\nexport { set }","import { Control } from '../control';\nimport { assign, create, defineProperty } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { Instruction } from './add';\n\ntype MapFunction<T, R> =\n T extends Map<infer K, infer V> ?\n (value: V, key: K, map: T) => R | void :\n T extends Set<infer K> ?\n (value: K, key: K, set: T) => R | void :\n never;\n\ntype Managed<T> = Exclude<T, \"forEach\"> & {\n from?: T;\n\n forEach<R>(\n mapFunction: MapFunction<T, R>,\n thisArg?: any\n ): Exclude<R, undefined>[] | void;\n}\n\nconst ANY = Symbol(\"any\");\n\ntype Keyed<K = unknown> = Set<K> | Map<K, unknown>;\n\nfunction keyed<T extends Keyed>(\n control: Control,\n property: any,\n initial: T\n): Instruction.Descriptor<T> {\n type K = typeof ANY | (\n T extends Set<infer U> ? U :\n T extends Map<infer U, any> ? U :\n never\n );\n\n const init = createProxy(emit, watch);\n const frozen = new Set<Subscriber>();\n const context = new Map<Subscriber, T>();\n const users = new Map<Subscriber, Set<K>>();\n const watched = new WeakMap<T, Set<K>>();\n const update = new Set<(key: K) => void>();\n\n let managed: T = init(initial);\n\n function watch(on: any, key: K){\n const include = watched.get(on);\n\n if(include)\n include.add(key);\n }\n\n function emit(key: K){\n control.update(property);\n control.waiting.add(() => frozen.clear());\n update.forEach(notify => notify(key));\n }\n\n function subscribe(local: Subscriber){\n const proxy = create(managed);\n let watch = users.get(local);\n\n if(!watch){\n const using = watch = new Set<K>();\n users.set(local, using);\n \n function onEvent(key: K){\n if(frozen.has(local))\n return;\n \n if(key === ANY || using.has(key) || using.has(ANY)){\n const refresh = local.onUpdate(property, control);\n \n if(refresh){\n frozen.add(local);\n refresh()\n }\n }\n }\n \n local.add(property, false);\n local.dependant.add({\n commit(){\n if(using.size === 0)\n using.add(ANY);\n \n update.add(onEvent);\n },\n release(){\n update.delete(onEvent);\n }\n })\n }\n\n watched.set(proxy, watch);\n context.set(local, proxy);\n\n return proxy;\n }\n\n return {\n value: initial,\n get(local){\n return local ?\n context.get(local) || subscribe(local) :\n managed;\n },\n set(next){\n control.state.set(property, next);\n managed = init(next);\n context.clear();\n emit(ANY);\n },\n destroy(){\n update.clear();\n context.clear();\n }\n }\n}\n\nfunction createProxy(\n emit: (key: any) => void,\n watch: (self: any, key: any) => void){\n\n return <T extends Keyed<any>>(from: T) => {\n const proxy = create(from) as T;\n\n assign(proxy,\n {\n from,\n delete(key: any){\n // TODO: this commit's fix needs tests.\n // Was not cause by coverage.\n const out = from.delete(key);\n emit(key);\n return out;\n },\n clear(){\n from.clear();\n emit(ANY);\n },\n has(key: any){\n watch(this, key);\n return from.has(key);\n },\n keys(){\n watch(this, ANY);\n return from.keys();\n },\n values(){\n watch(this, ANY);\n return from.values();\n },\n entries(){\n watch(this, ANY);\n return from.entries();\n },\n forEach(\n callbackfn: (a: any, b: any, c: any) => any,\n thisArg: any){\n\n const acc = [] as any[];\n\n from.forEach((a, b, c) => {\n const result = callbackfn.call(thisArg, a, b, c);\n\n if(result !== undefined)\n acc.push(result);\n });\n\n watch(this, ANY);\n\n return acc;\n },\n [Symbol.iterator](){\n watch(this, ANY);\n return from[Symbol.iterator]();\n },\n },\n from instanceof Set\n ? {\n add(key: any){\n from.add(key);\n emit(key);\n return this;\n }\n }\n : {\n get(key: any){\n watch(this, ANY);\n return from.get(key);\n },\n set(key: any, value: any){\n from.set(key, value);\n emit(key);\n return this;\n }\n }\n )\n\n defineProperty(proxy, \"size\", {\n get(){\n watch(this, ANY);\n return from.size;\n }\n })\n \n return proxy;\n }\n}\n\nexport { keyed, Managed };","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { assign } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { mayRetry } from '../suspense';\nimport { add, getRecursive } from './add';\nimport { keyed, Managed } from './use.keyed';\n\nexport const Parent = new WeakMap<{}, {}>();\n\nexport const Oops = issues({\n BadArgument: (type) =>\n `Instruction \\`use\\` cannot accept argument type of ${type}.`,\n\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n})\n\nfunction use <K = any> (initial: SetConstructor): Managed<Set<K>>;\nfunction use <K = any, V = any> (initial: MapConstructor): Managed<Map<K, V>>;\n\nfunction use (initial: Set<unknown>): Managed<Set<any>>;\nfunction use (initial: Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use (from: () => Set<unknown>): Managed<Set<any>>;\nfunction use (from: () => Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use <T extends Set<any> | Map<any, any>> (initial: T): Managed<T>;\nfunction use <T extends Set<any> | Map<any, any>> (from: () => T): Managed<T>;\n\n/**\n * Create a placeholder for specified Model type.\n */\nfunction use <T extends Model> (): T | undefined;\nfunction use <T extends Model> (from: () => T, required: false): T | undefined;\nfunction use <T extends Model> (from: () => T, required: boolean): T;\n\n /**\n * Create a new child instance of model.\n */\nfunction use <T extends Model> (Type: Model.Type<T>, callback?: (i: T) => void): T;\n\n /**\n * Create a managed child from factory function.\n */\nfunction use <T extends {}> (from: () => Promise<T>, required: false): T | undefined;\nfunction use <T extends {}> (from: () => Promise<T>, required: boolean): T;\nfunction use <T extends {}> (from: () => Promise<T>, callback?: (i: T) => void): T;\nfunction use <T extends {}> (from: () => T, callback?: (i: T) => void): T;\n\n /**\n * Create child-instance relationship with provided model.\n *\n * Note: If `peer` is not already initialized before parent is\n * (created with `new` as opposed to create method), that model will\n * attach this via `parent()` instruction. It will not, however, if\n * already active.\n */\nfunction use <T extends {}> (peer: T, callback?: (i: T) => void): T;\n\nfunction use(\n input?: any,\n argument?: boolean | ((i: {} | undefined) => void)){\n\n return add(\n function use(key){\n const { state, subject } = this;\n const required = argument !== false;\n\n let pending: Promise<any> | undefined;\n let error: any;\n let get: (local: Subscriber | undefined) => any =\n (_local: Subscriber | undefined) => state.get(key);\n\n if(typeof input === \"function\"){\n if(\"prototype\" in input &&\n input === input.prototype.constructor)\n input = new input();\n }\n\n else if(input && typeof input !== \"object\")\n throw Oops.BadArgument(typeof input);\n\n if(input instanceof Map || input instanceof Set)\n return keyed(this, key, input);\n\n const onUpdate = (next: {} | undefined) => {\n state.set(key, next);\n\n if(next){\n get = getRecursive(key, this);\n Parent.set(next, subject);\n Control.for(next);\n }\n\n if(typeof argument == \"function\")\n argument(next);\n\n return true;\n }\n\n const suspend = () => {\n if(required === false)\n return;\n\n const issue =\n Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n\n const initialize = () => {\n const output = typeof input == \"function\" ?\n mayRetry(() => input.call(subject, subject)) :\n input;\n\n if(output instanceof Promise){\n pending = output\n .catch(err => error = err)\n .then(val => {\n onUpdate(val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n this.update(key);\n })\n\n return;\n }\n\n onUpdate(output);\n }\n\n if(input !== undefined && required)\n initialize();\n\n return {\n set: onUpdate,\n get(local){\n if(pending)\n return suspend();\n \n if(error)\n throw error;\n\n if(!state.has(key))\n initialize();\n \n if(pending)\n return suspend();\n \n return get(local);\n }\n };\n }\n )\n}\n\nexport { use }","import { issues } from '../issues';\nimport { Model } from '../model';\nimport { add } from './add';\nimport { Parent } from './use';\n\nexport const Oops = issues({\n Required: (expects, child) => \n `New ${child} created standalone but requires parent of type ${expects}. Did you remember to create via use(${child})?`,\n\n Unexpected: (expects, child, got) =>\n `New ${child} created as child of ${got}, but must be instanceof ${expects}.`,\n})\n\n/**\n * Fetches and assigns the controller which spawned this host.\n * When parent assigns an instance via `use()` directive, it\n * will be made available to child upon this request.\n *\n * @param Type - Type of controller compatible with this class. \n * @param required - Throw if controller is created independantly.\n */\nfunction has <T extends Model> (Type: Model.Type<T>, required: false): T | undefined;\nfunction has <T extends Model> (Type: Model.Type<T>, required?: true): T;\n\nfunction has<T extends Model>(\n Type: Model.Type<T>, required?: boolean){\n\n return add(\n function parent(){\n const child = this.subject;\n const value = Parent.get(child) as T;\n const expected = Type.name;\n\n if(!value){\n if(required !== false)\n throw Oops.Required(expected, child);\n }\n else if(!(value instanceof Type))\n throw Oops.Unexpected(expected, child, value);\n\n return { value };\n }\n );\n }\n\n export { has }","import { Control } from \"./control\";\nimport { issues } from \"./issues\";\nimport { Model } from \"./model\";\n\nexport const Oops = issues({\n Timeout: (keys, timeout) => \n `No update seen for [${keys}] within ${timeout}.`,\n\n KeysExpected: (key) =>\n `Key \"${key}\" was expected in current update.`,\n\n StrictUpdate: () => \n `Expected update but none in progress.`,\n\n StrictNoUpdate: () =>\n `Update is not expected but one is in progress!`\n});\n\nexport function addEventListener\n <T extends Model, P extends Model.Event<T>> (\n source: T,\n arg1?: boolean | null | P | P[],\n arg2?: number | P[] | Function,\n arg3?: boolean){\n\n const single = typeof arg1 == \"string\";\n const keys =\n typeof arg1 == \"string\" ? [ arg1 ] :\n typeof arg1 == \"object\" ? arg1 : \n undefined;\n\n if(typeof arg2 == \"function\" && keys)\n return Control.for(source, control => {\n for(const key of keys)\n try { void (source as any)[key] }\n catch(e){}\n\n const invoke: Control.OnAsync = single\n ? () => arg2.call(source, control.state.get(arg1), arg1)\n : (frame) => arg2.call(source, frame);\n \n const removeListener =\n control.addListener(key => {\n if(!key && !keys.length)\n invoke([]);\n \n if(keys.includes(key as P)){\n if(arg3)\n removeListener();\n\n return invoke;\n }\n });\n\n return removeListener;\n });\n\n return new Promise<any>((resolve, reject) => {\n const timeout = (message: string) => {\n const k = keys ? keys.join(\", \") : \"any\";\n\n removeListener();\n reject(Oops.Timeout(k, message));\n }\n\n const removeListener = Control.for(source, control => {\n const pending = control.frame;\n\n if(keys === null){\n if(pending.size)\n reject(Oops.StrictNoUpdate())\n else\n resolve(null);\n\n return;\n }\n\n if(keys){\n if(keys.length){\n if(arg2 === 0 && single && !pending.has(keys[0])){\n reject(Oops.KeysExpected(keys[0]));\n return;\n }\n else for(const key of keys)\n try { void (source as any)[key] }\n catch(e){}\n }\n }\n else if(!pending.size && arg1 === true || arg2 === 0){\n reject(Oops.StrictUpdate());\n return;\n }\n else\n control.waiting.add(resolve);\n\n return control.addListener(key => {\n if(!key){\n if(keys && !keys.length)\n resolve([]);\n else\n timeout(`lifetime of ${source}`);\n }\n else if(!keys || keys.includes(key as P)){\n removeListener();\n return keys =>\n resolve(single ? control.state.get(key) : keys)\n }\n });\n })\n\n if(arg2 && typeof arg2 == \"number\")\n setTimeout(() => timeout(`${arg2}ms`), arg2);\n });\n}","import { Control } from './control';\nimport { Debug } from './debug';\nimport { createEffect } from './effect';\nimport { addEventListener } from './event';\nimport { issues } from './issues';\nimport { defineProperty } from './object';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback, Class, InstanceOf } from './types';\n\nexport const Oops = issues({\n NoChaining: () =>\n `Then called with undefined; update promise will never catch nor supports chaining.`\n});\n\ndeclare namespace Model {\n export { Control };\n export { Subscriber };\n\n /** Including but not limited to T. */\n type Extends<T> = T | (string & Record<never, never>);\n\n export type Type<T extends Model = Model> = typeof Model & (new () => T);\n\n export type Effect<T> = (this: T, argument: T) => Callback | Promise<any> | void;\n\n /** Exotic value, actual value is contained. */\n export type Ref<T = any> = {\n (next: T): void;\n current: T | null;\n }\n\n /** Properties of T which are methods. */\n export type Methods<T> = {\n [K in keyof T]:\n T[K] extends Ref ? never :\n T[K] extends Function ? K :\n never;\n }[keyof T];\n\n /**\n * Subset of `keyof T` which are not methods or defined by base Model U.\n * \n * **Note**: This excludes all keys which are not of type `string` (only those are managed).\n * \n * TODO: Should exclude methods\n **/\n export type Field<T, U extends Model = Model> = Exclude<keyof T, keyof U | keyof Debug<{}>> & string;\n\n /**\n * Including but not limited to `keyof T` which are not methods or defined by base Model.\n **/\n export type Event<T, U extends Model = Model> = Extends<Field<T, U>>;\n\n /** Object containing managed entries found in T. */\n export type Entries<T, U extends Model = Model> = { [K in Field<T, U>]: T[K] };\n\n /** Object comperable to data found in T. */\n export type Compat<T, U extends Model = Model> = { [K in Field<T, U>]?: T[K] };\n\n /** Actual value stored in state. */\n export type Value<R> = R extends Ref<infer T> ? T : R;\n\n /** Actual value belonging to a managed property. */\n export type ValueOf<T extends {}, K> = K extends keyof T ? Value<T[K]> : undefined;\n\n /**\n * Values from current state of given controller.\n * \n * Differs from `Entries` as values here will drill into \"real\" values held by exotics like ref.\n */\n export type Values<T, K extends Field<T> = Field<T>> = { [P in K]: Value<T[P]> }\n}\n\nclass Model {\n /**\n * Circular reference to `this` controller.\n * \n * Useful to obtain full reference where one has already destructured.\n */\n is!: this;\n\n constructor(){\n new Control(this);\n defineProperty(this, \"is\", { value: this });\n }\n\n on <P extends Model.Event<this>> (key: P, timeout?: number): Promise<Model.ValueOf<this, P>>;\n on <P extends Model.Field<this>> (key: P, listener: (this: this, value: this[P], key: P) => void, once?: boolean): Callback;\n on <P extends Model.Event<this>> (key: P, listener: (this: this, value: undefined, key: P) => void, once?: boolean): Callback;\n\n on <P extends Model.Event<this>> (keys: P[], timeout?: number): Promise<P[]>;\n on <P extends Model.Event<this>> (keys: P[], listener: (keys: P[]) => void, once?: boolean): Callback;\n\n on (effect: Model.Effect<this>): Callback;\n on (effect: Model.Effect<this>, watch?: []): Callback;\n on (effect: Model.Effect<this>, watch?: Model.Event<this>[]): Callback;\n\n on (key?: undefined, timeout?: number): Promise<Model.Event<this>[]>;\n on (current?: boolean): Promise<Model.Event<this>[] | null>;\n on (current: true): Promise<Model.Event<this>[]>;\n on (current: null): Promise<null>;\n\n on <P extends Model.Event<this>> (\n arg1?: boolean | null | P | P[] | Model.Effect<this>,\n arg2?: number | P[] | Function,\n arg3?: boolean){\n\n if(typeof arg1 == \"function\")\n return createEffect(this.is, arg1, arg2 as P[]);\n\n return addEventListener(this.is, arg1, arg2, arg3);\n }\n\n export(): Model.Values<this>;\n export <P extends Model.Field<this>> (select: Iterable<P>): Model.Values<this, P>;\n\n export <P extends Model.Field<this>> (subset?: Iterable<P>){\n const { state } = Control.for(this);\n const output = {} as Model.Values<this, P>;\n const keys = subset || state.keys();\n\n for(const key of keys)\n (output as any)[key] = state.get(key);\n\n return output;\n }\n\n update(key: Model.Event<this>): PromiseLike<readonly Model.Event<this>[]>;\n update(key: Model.Event<this>, callMethod: boolean): PromiseLike<readonly Model.Event<this>[]>;\n update<T>(key: Model.Event<this>, argument: T): PromiseLike<readonly Model.Event<this>[]>;\n\n update<T extends Model.Compat<this>> (source: T, select: (keyof T)[]): PromiseLike<(keyof T)[]>;\n update<T extends Model.Compat<this>> (source: T, force?: boolean): PromiseLike<(keyof T)[]>;\n\n update(\n arg1: Model.Event<this> | Model.Compat<this>,\n arg2?: boolean | any[]): any {\n\n const control = Control.for(this);\n\n if(typeof arg1 == \"object\"){\n for(const key in arg1)\n if(arg2 === true || (arg2 ? arg2.includes(key) : control.state.has(key))){\n control.state.set(key, (arg1 as any)[key]);\n control.update(key as any);\n }\n }\n else if(typeof arg1 == \"string\"){\n control.update(arg1 as Model.Field<this>);\n\n if(1 in arguments && arg1 in this){\n const method = (this as any)[arg1];\n\n if(typeof method == \"function\")\n if(typeof arg2 != \"boolean\")\n method.call(this, arg2);\n else if(arg2)\n method.call(this);\n }\n }\n\n return <PromiseLike<readonly Model.Event<this>[] | null>> {\n then: (callback) => {\n if(!callback)\n throw Oops.NoChaining();\n\n control.waiting.add(callback);\n }\n }\n }\n\n /** \n * Clean up side effects and mark this instance for garbage-collection.\n */\n destroy(){\n Control.for(this).clear();\n }\n\n /**\n * Creates a new instance of this controller.\n * \n * Beyond `new this(...)`, method will activate managed-state.\n * \n * @param args - arguments sent to constructor\n */\n static new<T extends Class>(\n this: T, ...args: ConstructorParameters<T>): InstanceOf<T> {\n\n const instance = new this(...args);\n\n Control.for(instance);\n\n return instance;\n }\n\n /**\n * Static equivalent of `x instanceof this`.\n * \n * Will determine if provided class is a subtype of this one. \n */\n static isTypeof<T extends Model.Type>(\n this: T, maybe: any): maybe is T {\n\n return (\n typeof maybe == \"function\" &&\n maybe.prototype instanceof this\n )\n }\n}\n\ndefineProperty(Model.prototype, \"toString\", {\n value(){\n return this.constructor.name;\n }\n})\n\nexport { Model }","import React from 'react';\n\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertySymbols, getPrototypeOf } from '../object';\nimport { Callback } from '../types';\n\nconst Oops = issues({\n NotFound: (name) =>\n `Couldn't find ${name} in context; did you forget to use a Provider?`\n})\n\nclass Lookup {\n private table = new Map<Model.Type, symbol>();\n\n public get local(){\n return [\n ...new Set(getOwnPropertySymbols(this).map(\n symbol => (this as any)[symbol] as Model\n ))\n ]\n }\n\n private key(T: Model.Type){\n let key = this.table.get(T);\n\n if(!key){\n key = Symbol(T.name);\n this.table.set(T, key);\n }\n\n return key;\n }\n\n public get(T: Model.Type){\n return (this as any)[this.key(T)];\n }\n\n public push(){\n return create(this) as this;\n }\n\n public inject(\n T: Model.Type,\n I: Model,\n writable?: boolean){\n\n do {\n const key = this.key(T);\n const conflict = this.hasOwnProperty(key);\n\n defineProperty(this, key, {\n value: conflict ? null : I,\n configurable: true,\n writable\n });\n\n T = getPrototypeOf(T);\n }\n while(T !== Model);\n }\n\n public pop(){\n const items = new Set<Model>();\n\n for(const key of getOwnPropertySymbols(this)){\n const entry = getOwnPropertyDescriptor(this, key)!;\n\n if(entry.writable && entry.value)\n items.add(entry.value)\n }\n\n for(const model of items)\n model.destroy();\n }\n}\n\nconst LookupContext = React.createContext(new Lookup());\nconst useLookup = () => React.useContext(LookupContext);\n\nfunction useContext <T extends Model> (Type: Model.Type<T>, required: false):T | undefined;\nfunction useContext <T extends Model> (Type: Model.Type<T>, arg?: boolean):T;\nfunction useContext <T extends Model> (Type: Model.Type<T>, effect: (found: T) => Callback | void): T;\nfunction useContext <T extends Model, K extends Model.Field<T>> (Type: Model.Type<T>, key: K): T[K];\n\nfunction useContext<T extends Model>(\n Type: Model.Type<T>,\n arg?: boolean | string | ((found: T) => Callback | void)) {\n\n const instance = useLookup().get(Type);\n\n if(!instance && arg !== false)\n throw Oops.NotFound(Type.name);\n\n switch(typeof arg){\n case \"string\":\n return (instance as any)[arg];\n\n case \"function\":\n React.useLayoutEffect(() => arg(instance), []);\n\n default:\n return instance;\n }\n}\n\nexport { Lookup, useLookup, useContext, Oops, LookupContext }","import { add } from '../instruction/add';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { InstanceOf } from '../types';\nimport { Lookup, useLookup } from './context';\nimport { Global } from './global';\n\nexport const Oops = issues({\n NotAllowed: (parent, child) =>\n `Global '${parent}' attempted to attach '${child}' but it is not also a singleton.`,\n\n AmbientRequired: (requested, requester, key) =>\n `Attempted to find an instance of ${requested} in context. It is required for [${requester}.${key}], but one could not be found.`\n})\n\nexport type Peer = typeof Model | typeof Global;\n\nconst PendingContext = new WeakMap<{}, ((context: Lookup) => void)[]>();\nconst ContextWasUsed = new WeakMap<Model, boolean>();\n\n/**\n * Find and attach most applicable instance of Model via context.\n * \n * Host controller will search element-hierarchy relative to where it spawned.\n * \n * @param Type - Type of model to find from context\n * @param callback -\n * - Invoked after context is scanned, is passed result - either found or undefined.\n * - If argument is inadequate, but required, your implemention should simply throw.\n * - If inadequate and not required, conditionally return false.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | boolean): T | undefined;\n\n/**\n * Find and attach most applicable instance of Model via context.\n *\n * Expects a `<Provider>` of target controller to exist. \n * Host controller will search element-hierarchy relative to where it spawned.\n *\n * @param Type - Type of controller to attach to property. \n * @param required - Throw if instance of Type cannot be found.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, required: true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, required?: boolean): T | undefined;\n\nfunction tap<T extends Peer>(\n type: T,\n argument?: boolean | ((instance: InstanceOf<T> | undefined) => void | boolean)){\n\n return add(\n function tap(key){\n if(\"set\" in type)\n return {\n recursive: true,\n value: type.get()\n }\n\n const { subject } = this;\n\n if(\"set\" in subject.constructor)\n throw Oops.NotAllowed(subject, type.name);\n\n getPending(subject).push(context => {\n let instance = context.get(type);\n\n if(typeof argument == \"function\"){\n if(argument(instance) === false)\n instance = undefined;\n }\n\n else if(!instance && argument)\n throw Oops.AmbientRequired(type.name, subject, key);\n\n this.state.set(key, instance);\n this.update(key);\n })\n\n return {\n recursive: true,\n suspend: true\n }\n }\n )\n};\n\nfunction usePeerContext(subject: Model){\n if(ContextWasUsed.has(subject)){\n if(ContextWasUsed.get(subject))\n useLookup();\n\n return;\n }\n\n const pending = PendingContext.get(subject);\n\n if(pending){\n const local = useLookup();\n\n for(const init of pending)\n init(local);\n\n PendingContext.delete(subject);\n }\n\n ContextWasUsed.set(subject, !!pending);\n}\n\nfunction getPending(subject: {}){\n let pending = PendingContext.get(subject);\n\n if(!pending)\n PendingContext.set(subject, pending = []);\n\n return pending;\n}\n\nexport { tap, usePeerContext, getPending }","import React from 'react';\nimport { Callback } from '../types';\n\nexport function use<T>(init: (trigger: Callback) => T){\n const [ state, update ] = React.useState((): T[] => [\n init(() => update(state.concat()))\n ]);\n\n return state[0];\n}","import React, { useState } from 'react';\n\nimport { Control } from '../control';\nimport { Model } from '../model';\nimport { usePeerContext } from './tap';\nimport { use } from './use';\n\nfunction useModel <T extends Model> (\n source: Model.Type<T> | (() => T),\n callback?: (instance: T) => void\n): T;\n\nfunction useModel <T extends Model> (\n source: Model.Type<T> | (() => T),\n watch: Model.Field<T>[],\n callback?: (instance: T) => void\n): T;\n\nfunction useModel <T extends Model> (\n source: Model.Type<T> | (() => T),\n apply: Model.Compat<T>,\n keys?: Model.Event<T>[]\n): T;\n\nfunction useModel <T extends Model> (\n source: (() => T) | Model.Type<T>,\n arg?: ((i: T) => void) | Model.Event<T>[] | Model.Compat<T>,\n arg2?: ((i: T) => void) | Model.Field<T>[]){\n\n const instance = React.useMemo(() => {\n const callback = arg2 || arg;\n const instance =\n Model.isTypeof(source) ?\n source.new() :\n source();\n\n Control.for(instance);\n\n if(typeof callback == \"function\")\n callback(instance);\n\n return instance;\n }, []);\n\n usePeerContext(instance);\n\n if(Array.isArray(arg)){\n const update = useState(0)[1];\n\n React.useLayoutEffect(() => { \n if(arg.length && instance instanceof Model)\n instance.on(arg, () => update(x => x+1));\n\n return () => {\n if(Model.isTypeof(source))\n (instance as Model).destroy();\n }\n }, []);\n\n return instance;\n }\n \n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n if(typeof arg == \"object\")\n local.assign(arg, arg2);\n\n React.useLayoutEffect(() => {\n local.commit();\n\n return () => {\n local.release();\n\n if(Model.isTypeof(source))\n (instance as Model).destroy();\n };\n }, []);\n\n return local.proxy;\n}\n\nexport { useModel }","import React from 'react';\n\nimport { Control } from '../control';\nimport { defineProperty } from '../object';\nimport { use } from './use';\n\nimport type { Callback } from '../types';\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect: true\n): Exclude<R, undefined>;\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect?: boolean\n): R;\n\nfunction useValue(\n source: {},\n compute: Function,\n suspend?: boolean) {\n\n const local = use(refresh => {\n const sub = Control.for(source).subscribe(() => update);\n const spy = sub.proxy;\n\n let value = compute.call(spy, spy);\n let update: Callback | undefined;\n let retry: Callback | undefined;\n\n const set = (next: any) => {\n value = next;\n\n if(retry) {\n retry();\n retry = undefined;\n }\n else\n refresh();\n };\n\n if(value === null){\n sub.watch.clear();\n return {\n proxy: null,\n release: () => {}\n }\n }\n\n if(typeof value == \"function\"){\n const get = value;\n\n sub.watch.clear();\n compute = () => get();\n value = get();\n }\n\n if(value instanceof Promise) {\n value.then(set);\n value = undefined;\n }\n else {\n sub.commit();\n update = () => {\n const next = compute.call(spy, spy);\n\n if(value != next)\n set(next);\n };\n }\n\n defineProperty(sub, \"proxy\", {\n get() {\n if(value === undefined && suspend)\n throw new Promise<void>(res => retry = res);\n\n return value;\n }\n });\n\n return sub;\n });\n\n React.useLayoutEffect(() => local.release, []);\n\n return local.proxy;\n}\n\nexport { useValue }\n","import React, { useMemo } from 'react';\n\nimport { Control } from '../control';\nimport { Model } from '../model';\nimport { suspend } from '../suspense';\nimport { useContext } from './context';\nimport { MVC } from './mvc';\nimport { use } from './use';\nimport { useValue } from './useValue';\n\ndeclare namespace useTap {\n type Source<T extends Model> =\n | T\n | Model.Type<T>\n | (() => T | Model.Type<T>);\n}\n\nfunction useTap <T extends Model> (source: useTap.Source<T>): T;\n\nfunction useTap <T extends Model, K extends Model.Field<T>> (source: useTap.Source<T>, path: K, expect: true): Exclude<T[K], undefined>;\nfunction useTap <T extends Model, K extends Model.Field<T>> (source: useTap.Source<T>, path: K, expect?: boolean): T[K];\n\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, connect: (this: T, model: T) => () => R): R;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, connect: (this: T, model: T) => (() => R) | null): R | null;\n\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => Promise<R> | R, expect: true): Exclude<R, undefined>;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => Promise<R>, expect?: boolean): R | undefined;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => R, expect?: boolean): R;\n\nfunction useTap <T extends Model> (\n source: typeof Model | typeof MVC | (() => any),\n arg1?: Model.Field<T> | ((this: T, from: T) => any),\n arg2?: boolean) {\n\n const instance: T = useMemo(() => {\n if(typeof source == \"object\")\n return () => source;\n\n if(Model.isTypeof(source))\n return \"get\" in source\n ? () => source.get(true)\n : () => useContext(source);\n\n return source;\n }, [])();\n\n if(typeof arg1 == \"function\")\n return useValue(instance, arg1, arg2);\n\n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n React.useLayoutEffect(local.commit, []);\n\n if(arg1 === undefined)\n return local.proxy;\n\n const value = local.proxy[arg1];\n\n if(value === undefined && arg2)\n throw suspend(local.parent, arg1);\n\n return value;\n}\n\nexport { useTap }","import { Model } from '../model';\nimport { Callback, Class } from '../types';\nimport { useContext } from './context';\nimport { useModel } from './useModel';\nimport { useTap } from './useTap';\n\nclass MVC extends Model {\n /**\n * **React Hook** - Fetch most instance of this controller from context, if it exists.\n * \n * @param required - Unless false, will throw where instance cannot be found.\n */\n static get <T extends MVC> (this: Model.Type<T>, required?: boolean): T;\n\n /**\n * **React Hook** - Fetch most instance of this controller from context.\n * \n * @param required - If false, may return undefined.\n */\n static get <T extends MVC> (this: Model.Type<T>, required: false): T | undefined;\n\n /**\n * **React Hook** - Fetch specific value from instance of this controller in context.\n */\n static get <I extends MVC, K extends Model.Field<I>> (this: Model.Type<I>, key: K): I[K];\n\n /**\n * **React Hook** - Fetch instance.\n * \n * Effect callback will run once if found, throw if not found.\n * Returned function is called on unmount.\n */\n static get <I extends MVC> (this: Model.Type<I>, effect: (found: I) => Callback | void): I;\n\n static get <T extends typeof MVC> (this: T, arg: any){\n return useContext(this, arg);\n }\n\n /** \n * **React Hook** - Fetch and subscribe to instance of this controller within ambient component.\n */\n static tap <T extends MVC> (this: Model.Type<T>): T;\n\n static tap <T extends MVC, K extends Model.Field<T>> (this: Model.Type<T>, key: K, expect: true): Exclude<T[K], undefined>;\n static tap <T extends MVC, K extends Model.Field<T>> (this: Model.Type<T>, key: K, expect?: boolean): T[K];\n\n static tap <T extends MVC, R> (this: Model.Type<T>, connect: (this: T, model: T) => () => R): R;\n static tap <T extends MVC, R> (this: Model.Type<T>, connect: (this: T, model: T) => (() => R) | null): R | null;\n\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => Promise<R> | R, expect: true): Exclude<R, undefined>;\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => Promise<R>, expect?: boolean): R | undefined;\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => R, expect?: boolean): R;\n\n static tap (key?: string | Function, expect?: boolean): any {\n return useTap(this, key as any, expect);\n }\n\n static use <I extends MVC> (this: Model.Type<I>, watch: Model.Field<I>[], callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, apply: Model.Compat<I>, keys?: Model.Event<I>[]): I;\n\n static use <T extends typeof MVC> (this: T, a: any, b?: any){\n return useModel(this, a, b);\n }\n\n static meta <T extends Class>(this: T): T;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect: true): Exclude<T[K], undefined>;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect?: boolean): T[K];\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect?: boolean): T;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect?: boolean): T;\n\n static meta (path?: string | Function, expect?: boolean): any {\n return useTap(() => this, path as any, expect);\n }\n}\n\nexport { MVC };","import { Control } from './control';\nimport { Model } from './model';\nimport { defineProperties } from './object';\nimport { Subscriber } from './subscriber';\n\nconst LOCAL = \"$debug local\";\nconst STATE = \"$debug state\";\nconst UPDATE = \"$debug update\";\nconst CONTROL = \"$debug controller\";\n\ndefineProperties(Model.prototype, {\n [CONTROL]: {\n get(this: Model){\n return Control.get(this);\n }\n },\n [LOCAL]: {\n get(this: Model){\n return Subscriber.get(this);\n }\n },\n [STATE]: {\n get(this: Model){\n const { state } = Control.get(this)!;\n const output: any = {};\n\n state.forEach((value, key) => output[key] = value);\n\n return output;\n }\n },\n [UPDATE]: {\n get(this: Model){\n const source = Subscriber.get(this) || Control.get(this);\n\n return source && source.latest;\n }\n }\n})\n\nconst Debug = {\n CONTROL,\n LOCAL,\n STATE,\n UPDATE\n} as const;\n\ntype Debug<T extends {}> = T & {\n /** Controller for this instance. */\n [CONTROL]?: Control<T>;\n\n /** Current subscriber (if present) while used in a live context (e.g. hook or effect). */\n [LOCAL]?: Subscriber<T>;\n\n /** Current state of this instance. */\n [STATE]?: Model.Values<T>;\n\n /**\n * Last update causing a refresh to subscribers.\n * \n * If accessed directly, will contain all keys from last push.\n * If within a subscribed function, will contain only keys which explicitly caused a refresh.\n */\n [UPDATE]?: readonly Model.Event<T>[];\n}\n\nexport { Debug };","import React from 'react';\n\nimport { issues } from '../issues';\nimport { Class } from '../types';\nimport { useContext } from './context';\nimport { useTap } from './useTap';\n\nexport const Oops = issues({\n BadProps: () =>\n `Provider expects either a render function, 'get' or 'has' props.`\n})\n\ndeclare namespace Consumer {\n type HasProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Getter function. Is called on every natural render of this component.\n * Will throw if usable instance cannot be found in context.\n */\n has: (value: InstanceType<E>) => void;\n }\n\n type GetProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /** Getter function. Is called on every natural render of this component. */\n get: (value: InstanceType<E> | undefined) => void;\n }\n\n type RenderProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Render function, will receive instance of desired controller.\n *\n * Similar to `tap()`, updates to properties accessed in\n * this function will cause a refresh when they change.\n */\n children: (value: InstanceType<E>) => React.ReactElement<any, any> | null;\n }\n\n type Props<T extends Class> = HasProps<T> | GetProps<T> | RenderProps<T>\n}\n\nfunction Consumer<T extends Class>(props: Consumer.Props<T>){\n const { get, has, children, for: type } = props as any;\n\n if(typeof children == \"function\")\n return children(useTap(type));\n\n const callback = has || get;\n\n if(typeof callback == \"function\")\n callback(useContext(type, !!has));\n else\n throw Oops.BadProps()\n\n return null;\n}\n\nexport { Consumer };","import React from 'react';\n\nimport { Control } from '../control';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { entries, values } from '../object';\nimport { Subscriber } from '../subscriber';\nimport { Class } from '../types';\nimport { Lookup, LookupContext, useLookup } from './context';\nimport { getPending } from './tap';\nimport { use } from './use';\n\nexport const Oops = issues({\n NoType: () =>\n \"Provider 'for' prop must be Model, typeof Model or a collection of them.\"\n})\n\ndeclare namespace Provider {\n type Item = Model | Model.Type;\n\n type Multiple<T extends Item = Item> = T[] | { [key: string]: T };\n\n type Existent<E> = E extends Class ? InstanceType<E> : E extends Model ? E : never;\n\n type NormalProps<E, I = Existent<E>> =\n & {\n for: E;\n children?: React.ReactNode | ((instance: I) => React.ReactNode);\n }\n & Model.Compat<I>;\n\n // FIX: This fails to exclude properties with same key but different type.\n type MultipleProps<T extends Item> =\n & {\n for: Multiple<T>;\n children?: React.ReactNode | (() => React.ReactNode);\n }\n & Model.Compat<Existent<T>>;\n\n type Props<T extends Item> = MultipleProps<T> | NormalProps<T>;\n}\n\nfunction Provider<T extends Provider.Item>(props: Provider.Props<T>){\n const context = useNewContext(props.for);\n const render = props.children;\n\n useAppliedProps(context, props);\n React.useLayoutEffect(() => () => context.pop(), []);\n\n return React.createElement(LookupContext.Provider, { value: context },\n typeof render == \"function\"\n ? React.createElement(RenderFunction, { context, render })\n : render\n );\n}\n\nexport { Provider };\n\nfunction useNewContext(\n include: Provider.Item | Provider.Multiple){\n\n const ambient = useLookup();\n\n return React.useMemo(() => {\n if(!include)\n throw Oops.NoType();\n\n const layer = ambient.push();\n\n function register(I: Model | typeof Model){\n if(I instanceof Model)\n layer.inject(I.constructor as any, I, false);\n else\n layer.inject(I, I.new(), true);\n }\n\n if(include instanceof Model || typeof include == \"function\")\n register(include);\n else\n values(include).forEach(register);\n\n for(const instance of layer.local)\n if(instance)\n for(const apply of getPending(instance))\n apply(layer)\n\n return layer;\n }, []);\n}\n\nfunction useAppliedProps(context: Lookup, props: {}){\n const apply = React.useMemo(() => {\n return (props: {}) => {\n entries(props).forEach(([key, value]) => {\n if(key == \"for\" || key == \"children\")\n return;\n\n for(const into of context.local)\n if(into && key in into)\n (into as any)[key] = value;\n })\n };\n }, []);\n\n apply(props);\n}\n\ninterface RenderFunctionProps {\n context: Lookup;\n render: Function;\n}\n\nfunction RenderFunction(props: RenderFunctionProps): any {\n const hook = use(refresh => {\n const targets = props.context.local;\n\n if(targets.length == 1)\n return Control.for(targets[0]).subscribe(() => refresh);\n\n return {} as Subscriber;\n });\n\n if(hook.commit)\n React.useLayoutEffect(hook.commit, []);\n\n return props.render(hook.proxy);\n}","import { Control } from '../control';\nimport { issues } from '../issues';\nimport { Model } from '../model';\nimport { Class, InstanceOf } from '../types';\nimport { MVC } from './mvc';\n\nexport const Oops = issues({\n DoesNotExist: (name) =>\n `Tried to access singleton ${name}, but none exist! Did you forget to initialize?\\nCall ${name}.new() before attempting to access, or consider using ${name}.use() instead.`,\n\n AlreadyExists: (name) =>\n `Shared instance of ${name} already exists! Consider unmounting existing, or use ${name}.reset() to force-delete it.`\n})\n\nconst Active = new WeakMap<Class, Global>();\n\nexport class Global extends MVC {\n constructor(){\n super();\n Active.set(this.constructor as Class, this);\n }\n\n destroy(force?: boolean){\n const type = this.constructor as typeof Global;\n \n if(type.keepAlive && !force)\n return false;\n\n Control.for(this).clear();\n Active.delete(type);\n return true;\n }\n\n static keepAlive = true;\n\n static new<T extends Class>(\n this: T, ...args: ConstructorParameters<T>){\n\n if(Active.has(this))\n if((this as any).keepAlive)\n return Active.get(this) as InstanceOf<T>;\n else\n throw Oops.AlreadyExists(this.name);\n\n const instance = new this(...args);\n\n Control.for(instance);\n\n return instance as InstanceOf<T>;\n }\n\n /**\n * Update the active instance of this class.\n * Returns a thenable; resolves after successful update.\n * If instance does not already exist, one will be created. \n */\n static set<T extends typeof Global>(\n this: T, values: Model.Compat<InstanceOf<T>, Global>){\n\n return this.get(true).update(values);\n }\n\n /**\n * **React Hook** - Fetch most instance of this controller from context, if it exists.\n * \n * @param required - If false, may return undefined.\n */\n static get <T extends Global> (this: Model.Type<T>, required: false): T | undefined;\n\n /**\n * **React Hook** - Fetch most instance of this controller from context.\n * \n * @param required - Unless false, will throw where instance cannot be found.\n */\n static get <T extends Global> (this: Model.Type<T>, required?: boolean): T;\n\n /**\n * **React Hook** - Fetch specific value from instance of this controller in context.\n */\n static get <T extends Global, K extends Model.Field<T, Global>> (this: Model.Type<T>, key: K): T[K];\n\n static get(arg?: boolean | string){\n const instance = Active.get(this);\n\n if(!instance && arg !== false)\n throw Oops.DoesNotExist(this.name);\n\n return (\n typeof arg == \"string\" ?\n (instance as any)[arg] :\n instance\n )\n }\n\n /** Destroy current instance of Global, if it exists. */\n static reset(){\n const current = Active.get(this);\n\n if(current)\n current.destroy(true);\n }\n}"],"names":["Oops","REGISTER","use","React","useState","useMemo"],"mappings":"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"}
|