@expressive/mvc 1.0.0-beta.34 → 1.0.0-beta.35
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.esm.js +839 -822
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +845 -824
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/types/context.d.ts +2 -2
- package/types/index.d.ts +1 -2
- package/types/instructions.d.ts +49 -62
- package/types/lifecycle.d.ts +13 -11
- package/types/model.d.ts +78 -149
- package/types/types.d.ts +1 -15
- package/types/selector.ts +0 -47
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/issues.ts","../src/util.ts","../src/subscriber.ts","../src/compute.ts","../src/lifecycle.ts","../src/controller.ts","../src/attach.ts","../src/assign.ts","../src/peer.ts","../src/instructions.ts","../src/suspense.ts","../src/hooks.ts","../src/register.ts","../src/context.ts","../src/model.ts","../src/compose.ts","../src/singleton.ts"],"sourcesContent":["type MessageVar = {} | string | number | boolean | null;\ntype ExpectVars<T> = T extends (...args: infer T) => any ? T : never;\n\ntype Messages = {\n [named: string]: (...args: MessageVar[]) => string;\n}\n\ntype Issues<M extends Messages> = {\n readonly [P in keyof M]: (...args: ExpectVars<M[P]>) => Issue;\n}\n\nclass 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 throw(): never {\n throw this;\n }\n}\n\nexport function issues<M extends Messages>(register: M){\n const Library = {} as any;\n \n for(const name in register)\n Library[name] = (...args: MessageVar[]) => \n new Issue(register[name].apply(null, args));\n\n return Library as Issues<M>;\n}","import { issues } from './issues';\n\nexport const Oops = issues({\n BadEffectCallback: () =>\n `Callback for effect-callback may only return a function.`\n})\n\nconst {\n assign,\n create,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyNames,\n getOwnPropertyDescriptor,\n getOwnPropertyDescriptors,\n getOwnPropertySymbols,\n keys,\n values\n} = Object;\n\nexport {\n assign,\n create,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n getOwnPropertyDescriptors,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n keys,\n values\n}\n\nexport function define(\n target: {}, key: string | symbol, value: any){\n\n defineProperty(target, key, { value })\n}\n\nexport function defineLazy<T>(\n object: T, \n property: string | symbol, \n init: (this: T) => any){\n\n defineProperty(object, property, { \n configurable: true,\n get(){\n const value = init!.call(this);\n defineProperty(this, property, { value });\n return value;\n }\n });\n}\n\nexport function setAlias<T extends Function>(\n func: T, displayName: string){\n\n assign(func, { displayName });\n}\n\nexport function createEffect(\n callback: EffectCallback<any>){\n\n let unSet: Callback | Promise<any> | void;\n\n return function(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.BadEffectCallback()\n }\n}\n\nexport function createValueEffect<T = any>(\n callback: InterceptCallback<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);\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.BadEffectCallback()\n }\n}\n\nexport function select<T extends {}>(\n source: T, select: (from: { [K in keyof T]: K }) => any){\n\n const proxy = {} as any;\n\n for(const k in source)\n proxy[k] = k;\n\n return select(proxy) as string;\n}\n\nexport function selectRecursive(\n using: Function,\n keys: Iterable<string>){\n\n const found = new Set<string>();\n const spy = {} as Recursive<any>;\n\n for(const key of new Set(keys))\n defineProperty(spy, key, {\n get(){\n found.add(key);\n return spy;\n }\n });\n\n using(spy);\n\n return Array.from(found);\n}","import { Controller, LOCAL, manage, Stateful, UPDATE } from './controller';\nimport { create, define, defineLazy, defineProperty, getOwnPropertyDescriptor, setAlias } from './util';\n\ntype Listener = {\n commit(): void;\n release(): void;\n}\n\nexport class Subscriber {\n public proxy: any;\n public source: any;\n public active = false;\n public using = {} as BunchOf<Callback | true>;\n public dependant = new Set<Listener>();\n public parent: Controller;\n public notify?: RequestCallback;\n\n constructor(\n parent: Controller | Stateful,\n public onUpdate: Controller.Listen){\n\n if(!(parent instanceof Controller))\n parent = manage(parent);\n\n this.parent = parent;\n this.source = parent.subject;\n this.proxy = create(parent.subject);\n\n define(this.proxy, LOCAL, this);\n defineLazy(this.proxy, UPDATE, () => {\n const update: string[] = [];\n \n this.notify = keys => {\n update.splice(0, update.length,\n ...keys.filter(k => k in this.using) \n )\n }\n \n return update;\n });\n\n for(const key in parent.state)\n this.spy(key);\n }\n\n public spy(key: string){\n const { proxy } = this;\n const existing =\n getOwnPropertyDescriptor(this.source, key)!;\n\n const isUsing = () => {\n this.using[key] = true;\n delete proxy[key];\n return proxy[key];\n }\n\n setAlias(isUsing, `tap ${key}`);\n defineProperty(proxy, key, {\n set: existing.set,\n get: isUsing,\n configurable: true,\n enumerable: true\n })\n }\n\n public commit(){\n const onDone =\n this.parent.addListener((key, source) => {\n const handler = this.using[key];\n \n if(!handler)\n return;\n \n if(typeof handler == \"function\")\n handler();\n \n const notify = this.onUpdate(key, source);\n \n source.onUpdate(notify);\n source.onUpdate(this.notify);\n });\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 onDone();\n }\n }\n\n public release!: Callback;\n}","import { Controller } from './controller';\nimport { issues } from './issues';\nimport { Subscriber } from './subscriber';\nimport { defineProperty, getOwnPropertyDescriptor, setAlias } from './util';\n\nexport const Oops = issues({\n ComputeFailed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`,\n\n ComputedEarly: (property) => \n `Note: Computed values don't run until accessed, except when subscribed to. '${property}' getter may have run earlier than intended.`\n})\n\ntype GetterInfo = {\n key: string;\n parent: Controller;\n priority: number;\n}\n\nconst INIT = new WeakSet<Function>();\nconst INFO = new WeakMap<Function, GetterInfo>();\nconst USED = new WeakMap<Controller, Map<string, GetterInfo>>();\nconst KEYS = new WeakMap<Controller, RequestCallback[]>();\n\nexport function prepare(\n parent: Controller,\n key: string,\n source: () => Controller,\n setter: (on?: any) => any,\n getter?: (on: Controller, key: string) => any){\n\n let sub: Subscriber;\n\n const { state, subject } = parent;\n const info: GetterInfo = { key, parent, priority: 1 };\n\n let register = USED.get(parent)!;\n\n if(!register){\n register = new Map<string, GetterInfo>();\n USED.set(parent, register);\n }\n\n register.set(key, info);\n\n const current = getter\n ? () => getter(parent, key)\n : () => state[key];\n\n function compute(initial?: boolean){\n try {\n return setter.call(sub.proxy, sub.proxy);\n }\n catch(err){\n Oops.ComputeFailed(subject, key, !!initial).warn();\n throw err;\n }\n }\n\n function update(){\n let value;\n\n try {\n value = compute(false);\n }\n catch(e){\n console.error(e);\n }\n finally {\n if(state[key] !== value){\n parent.update(key, value);\n return value;\n }\n }\n }\n\n function defer(_key: string, from: Controller){\n let pending = KEYS.get(from);\n\n if(!pending)\n KEYS.set(from, pending = []);\n\n if(info.parent !== from)\n update();\n else {\n const after = pending.findIndex(peer => (\n info.priority > INFO.get(peer)!.priority\n ));\n\n pending.splice(after + 1, 0, update);\n }\n }\n\n function create(early?: boolean){\n sub = new Subscriber(source(), defer);\n\n defineProperty(state, key, {\n value: undefined,\n writable: true\n })\n\n defineProperty(subject, key, {\n enumerable: true,\n configurable: true,\n get: current\n });\n\n try {\n state[key] = compute(true);\n }\n catch(e){\n if(early)\n Oops.ComputedEarly(key).warn();\n\n throw e;\n }\n finally {\n sub.commit();\n\n for(const key in sub.using){\n const peer = register.get(key);\n \n if(peer && peer.priority >= info.priority)\n info.priority = peer.priority + 1;\n }\n }\n\n return current();\n }\n\n setAlias(update, `try ${key}`);\n setAlias(create, `new ${key}`);\n setAlias(setter, `run ${key}`);\n\n INIT.add(create);\n INFO.set(update, info);\n\n for(const on of [state, subject])\n defineProperty(on, key, {\n get: create,\n configurable: true,\n enumerable: true\n })\n}\n\nexport function ensure(on: Controller, keys: string[]){\n type Initial = (early?: boolean) => void;\n\n for(const key of keys){\n const desc = getOwnPropertyDescriptor(on.subject, key);\n const getter = desc && desc.get;\n \n if(INIT.has(getter!))\n (getter as Initial)(true);\n }\n}\n\nexport function flush(on: Controller){\n const handled = on.frame;\n const pending = KEYS.get(on);\n\n if(!pending)\n return;\n\n while(pending.length){\n const why = [ ...handled ];\n const compute = pending.shift()!;\n const { key } = INFO.get(compute)!;\n\n if(!handled.has(key))\n compute(why);\n }\n\n KEYS.delete(on);\n}","import { useLayoutEffect, useMemo } from 'react';\n\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\nimport { values } from './util';\n\nexport const Lifecycle = {\n WILL_RENDER: \"willRender\",\n WILL_UPDATE: \"willUpdate\",\n WILL_MOUNT: \"willMount\",\n WILL_UNMOUNT: \"willUnmount\",\n DID_MOUNT: \"didMount\"\n} as const;\n\nexport type Event = ValuesOf<typeof Lifecycle>;\n\nexport const lifecycleEvents = [\n \"didCreate\",\n \"willDestroy\",\n ...values(Lifecycle)\n];\n\nexport function lifecycle(prefix: string){\n const type = eventsFor(prefix);\n\n return function useLifecycle(\n sub: Subscriber, tag?: Key | KeyFactory<any>){\n\n const emit = useMemo(() => {\n const subject = sub.source as Model;\n const id = typeof tag == \"function\" ? tag(subject) : tag;\n \n return (name: Event) => {\n for(const key of [name, type(name)])\n subject.update(key, id);\n }\n }, [sub, tag]);\n\n emit(Lifecycle.WILL_RENDER);\n emit(sub.active\n ? Lifecycle.WILL_UPDATE\n : Lifecycle.WILL_MOUNT \n )\n \n useLayoutEffect(() => {\n sub.commit();\n emit(Lifecycle.DID_MOUNT);\n \n return () => {\n emit(Lifecycle.WILL_UNMOUNT);\n sub.release();\n }\n }, [sub]);\n }\n}\n\nfunction eventsFor(prefix: string){\n const map = new Map<Event, Event>();\n\n for(const name of values(Lifecycle)){\n const alias = prefix + name[0].toUpperCase() + name.slice(1);\n\n lifecycleEvents.push(alias);\n map.set(name, alias as Event);\n }\n\n return (e: Event) => map.get(e)!;\n}","import * as Computed from './compute';\nimport { lifecycleEvents } from './lifecycle';\nimport { Subscriber } from './subscriber';\nimport { defineLazy, defineProperty, getOwnPropertyDescriptor, getOwnPropertyNames, selectRecursive } from './util';\n\nexport const CONTROL = Symbol(\"control\");\nexport const UPDATE = Symbol(\"update\");\nexport const LOCAL = Symbol(\"local\");\nexport const STATE = Symbol(\"state\");\n\nexport interface Stateful {\n [CONTROL]: Controller;\n [UPDATE]?: readonly string[];\n [LOCAL]?: Subscriber;\n [STATE]?: any;\n\n didCreate?(): void;\n};\n\nexport function manage(src: Stateful){\n return src[CONTROL];\n}\n\nexport const Pending = new Map<symbol, Instruction<any>>();\n\nexport function apply<T = any>(\n fn: Instruction<any>, label?: string){\n\n const name = label || fn.name || \"pending\";\n const placeholder = Symbol(`${name} instruction`);\n\n function setup(this: Controller, key: string){\n let output = fn.call(this, key, this);\n\n if(typeof output == \"function\"){\n const getter = output;\n\n output = {\n ...getOwnPropertyDescriptor(this.subject, key),\n get(this: Stateful){\n return getter(this[LOCAL])\n }\n }\n }\n\n if(output)\n defineProperty(this.subject, key, output);\n }\n\n Pending.set(placeholder, setup);\n\n return placeholder as unknown as T;\n}\n\nexport type HandleValue = (this: Stateful, value: any) => boolean | void;\n\nexport type Getter<T> = (sub?: Subscriber) => T\n\nexport type Instruction<T> = (this: Controller, key: string, thisArg: Controller) =>\n void | Getter<T> | PropertyDescriptor;\n\nexport namespace Controller {\n export type Listen = (key: string, source: Controller) => RequestCallback | void;\n}\n\nexport class Controller {\n public state = {} as BunchOf<any>;\n public frame = new Set<string>();\n public waiting = new Set<RequestCallback>();\n\n protected followers = new Set<Controller.Listen>();\n\n constructor(public subject: Stateful){}\n\n static setup(onto: Stateful){\n const control = new this(onto);\n\n defineLazy(onto, CONTROL, () => {\n onto[STATE] = control.state;\n control.start();\n\n if(onto.didCreate)\n onto.didCreate();\n\n return control;\n })\n\n return control;\n }\n\n public get pending(){\n return this.frame.size > 0;\n }\n\n public onUpdate(cb: any){\n if(typeof cb == \"function\")\n this.waiting.add(cb);\n }\n\n public start(){\n const { subject } = this;\n \n for(const key in subject){\n const desc = getOwnPropertyDescriptor(subject, key);\n\n if(desc && \"value\" in desc){\n const { value } = desc;\n const instruction = Pending.get(value);\n\n if(instruction){\n Pending.delete(value);\n delete (subject as any)[key];\n instruction.call(this, key, this);\n }\n else if(typeof value !== \"function\" || /^[A-Z]/.test(key))\n this.manage(key, value);\n }\n }\n\n this.emit();\n\n return this;\n }\n\n public select(using?: Query){\n const keys = getOwnPropertyNames(this.state);\n\n return using\n ? selectRecursive(using, keys.concat(lifecycleEvents))\n : keys;\n }\n\n public manage(\n key: string,\n initial: any,\n effect?: HandleValue){\n\n const { state, subject } = this;\n\n state[key] = initial;\n defineProperty(subject, key, {\n enumerable: true,\n configurable: true,\n get: () => state[key],\n set: this.setter(key, effect)\n });\n }\n\n public setter(\n key: string,\n handler?: HandleValue){\n\n const { state, subject } = this;\n\n return (value: any) => {\n if(state[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 this.update(key, value);\n }\n }\n\n public addListener(listener: Controller.Listen){\n this.followers.add(listener);\n return () => {\n this.followers.delete(listener)\n }\n }\n\n public update(key: string, value?: any){\n if(1 in arguments)\n this.state[key] = value;\n\n if(this.frame.has(key))\n return;\n\n if(!this.frame.size)\n setTimeout(() => this.emit(), 0);\n\n this.frame.add(key);\n\n for(const callback of this.followers)\n this.onUpdate(\n callback(key, this)\n );\n }\n\n public emit(){\n Computed.flush(this);\n\n const keys = Object.freeze([ ...this.frame ]);\n const handle = new Set(this.waiting);\n\n this.waiting.clear();\n this.frame.clear();\n\n defineProperty(this.subject, UPDATE, {\n configurable: true,\n value: keys\n })\n\n handle.forEach(callback => {\n try { callback(keys) }\n catch(e){ }\n })\n }\n}\n\nexport function keys(\n from: Controller,\n using?: string | string[] | Set<string> | Query){\n\n if(typeof using == \"string\")\n return [ using ];\n\n if(typeof using == \"object\"){\n using = Array.from(using);\n \n if(using.length === 0)\n using = undefined;\n else\n return using;\n }\n\n return from.select(using);\n}","import { apply, Controller } from './controller';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\ntype ChildInstruction<T extends Model> =\n (this: Controller, key: string) => () => T | undefined;\n\nexport function child<T extends Model>(\n source: ChildInstruction<T>,\n name?: string){\n\n return apply(\n function child(this: Controller, key: string){\n const context = new WeakMap<Subscriber, any>();\n const current = source.call(this, key);\n \n function subscribe(sub: Subscriber){\n let child: Subscriber | undefined;\n \n function start(){\n const instance = current();\n \n if(instance){\n child = new Subscriber(instance, sub.onUpdate);\n \n if(sub.active)\n child.commit();\n \n sub.dependant.add(child);\n context.set(sub, child.proxy);\n }\n }\n\n function restart(){\n if(child){\n child.release();\n sub.dependant.delete(child);\n context.set(sub, undefined);\n child = undefined;\n }\n \n start();\n }\n\n start();\n sub.using[key] = restart;\n }\n \n return (local: Subscriber | undefined) => {\n if(!local)\n return current();\n \n if(!context.has(local))\n subscribe(local);\n \n return context.get(local);\n }\n },\n name || source.name\n )\n}","import { apply, HandleValue } from './controller';\nimport { issues } from './issues';\nimport { pendingFactory, pendingValue } from './suspense';\nimport { createValueEffect, defineProperty } from './util';\n\nexport const Oops = issues({\n NonOptional: (Parent, key) => \n `Property ${Parent}.${key} is marked as required.`,\n\n BadFactory: () =>\n `Set instruction can only accept a factory or undefined.`,\n\n FactoryFailed: (model, key) =>\n `Generating initial value for ${model}.${key} failed.`\n})\n\nexport function lazy<T>(value: T): T {\n return apply(\n function lazy(key){\n const source = this.subject as any;\n\n source[key] = value;\n defineProperty(this.state, key, {\n get: () => source[key]\n });\n }\n );\n}\n\nfunction set(\n factory?: (key: string, subject: unknown) => any,\n argument?: HandleValue | boolean): any { \n\n return apply(\n function set(key){\n let onSet;\n let onGet: () => void;\n\n const required =\n argument === true || argument === undefined;\n\n if(factory === undefined)\n onGet = () => pendingValue(this, key);\n\n else if(typeof factory !== \"function\")\n throw Oops.BadFactory();\n\n else {\n onGet = pendingFactory(this, key, factory);\n\n if(required)\n try {\n onGet();\n }\n catch(err){\n if(err instanceof Promise)\n void 0;\n else {\n Oops.FactoryFailed(this.subject, key).warn();\n throw err;\n }\n }\n }\n\n if(typeof argument == \"function\")\n onSet = createValueEffect(argument);\n else if(required)\n onSet = (value: any) => {\n if(value === undefined)\n throw Oops.NonOptional(this.subject, key);\n }\n \n return {\n set: this.setter(key, onSet),\n get: onGet\n }\n }\n )\n}\n\nfunction on(initial: any, onUpdate: HandleValue){\n return set(initial && (() => initial), onUpdate)\n}\n\nexport {\n on,\n set,\n set as memo\n}","import { child } from './attach';\nimport { useLookup } from './context';\nimport { Stateful } from './controller';\nimport { issues } from './issues';\nimport { Model } from './model';\nimport { Lookup } from './register';\nimport { Singleton } from './singleton';\n\nexport const Oops = issues({\n CantAttachGlobal: (parent, child) =>\n `Singleton '${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\ntype Peer = typeof Model | typeof Singleton;\ntype ApplyPeer = (context: Lookup) => void;\ntype PeerCallback<T extends Peer> = (instance: InstanceOf<T> | undefined) => void | boolean;\n\nconst PendingContext = new WeakMap<Stateful, ApplyPeer[]>();\nconst ContextWasUsed = new WeakMap<Model, boolean>();\n\nexport function tap<T extends Peer>(\n type: T, argument?: boolean | PeerCallback<T>){\n\n return child(\n function tap(key){\n return pendingAccess(this.subject, type, key, argument);\n }\n )\n};\n\nexport function pendingAccess<T extends Peer>(\n from: Stateful,\n type: T,\n key: string,\n argument?: boolean | PeerCallback<T>){\n\n if(\"current\" in type)\n return () => type.current as InstanceOf<T>;\n\n if(\"current\" in from.constructor)\n throw Oops.CantAttachGlobal(from, type.name);\n\n let instance: InstanceOf<T> | undefined;\n\n getPending(from).push(context => {\n 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, from, key);\n })\n\n return () => instance;\n}\n\nexport function 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\nexport function getPending(subject: Stateful){\n let pending = PendingContext.get(subject);\n\n if(!pending)\n PendingContext.set(subject, pending = []);\n\n return pending;\n}","import * as Computed from './compute';\nimport { apply, Controller, manage, Stateful } from './controller';\nimport { issues } from './issues';\nimport { Model } from './model';\nimport { pendingAccess } from './peer';\nimport { pendingValue } from './suspense';\nimport { createValueEffect, defineLazy, defineProperty, setAlias } from './util';\n\nexport const Oops = issues({\n DuplicateAction: (key) =>\n `Invoked action ${key} but one is already active.`,\n\n BadComputedSource: (model, property, got) =>\n `Bad from-instruction provided to ${model}.${property}. Expects an arrow-function or a Model as source. Got ${got}.`,\n\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\nfunction createRef(\n this: Controller,\n key: string,\n cb?: InterceptCallback<any>){\n\n const refObjectFunction =\n this.setter(key, cb && createValueEffect(cb));\n\n defineProperty(refObjectFunction, \"current\", {\n set: refObjectFunction,\n get: () => this.state[key]\n })\n\n return refObjectFunction;\n}\n\nexport function ref<T>(arg?: InterceptCallback<T> | Model): { current: T } {\n return apply(\n function ref(key){\n let value = {};\n\n if(typeof arg == \"object\"){\n const source = manage(arg);\n \n for(const key in source.state)\n defineLazy(value, key, createRef.bind(source, key));\n }\n else \n value = createRef.call(this, key, arg);\n\n return { value };\n }\n )\n}\n\nexport function act<T extends Async>(task: T): T {\n return apply(\n function act(key){\n let pending = false;\n\n const invoke = (...args: any[]) => {\n if(pending)\n return Promise.reject(\n Oops.DuplicateAction(key)\n )\n\n pending = true;\n this.update(key);\n\n return new Promise(res => {\n res(task.apply(this.subject, args));\n }).finally(() => {\n pending = false;\n this.update(key);\n })\n };\n\n this.state[key] = undefined;\n\n setAlias(invoke, `run ${key}`);\n defineProperty(invoke, \"active\", {\n get: () => pending\n })\n\n return {\n value: invoke,\n writable: false\n };\n }\n )\n}\n\ntype ComputeFunction<T, O = any> = (this: O, on: O) => T;\ntype ComputeFactory<T> = (key: string) => ComputeFunction<T>;\ntype ComputeGetter = (controller: Controller, key: string) => any;\n\nexport function from<T, R = T>(\n source: ComputeFactory<T> | Stateful,\n setter?: ComputeFunction<T>,\n argument?: boolean | ComputeGetter): R {\n\n return apply(\n function from(key){\n let getSource: () => Controller;\n const { subject } = this;\n const getter = argument === true\n ? pendingValue\n : argument || undefined;\n\n // Easy mistake, using a peer, will always be unresolved.\n if(typeof source == \"symbol\")\n throw Oops.PeerNotAllowed(subject, key);\n\n // replace source controller in-case different\n if(typeof source == \"object\")\n getSource = () => manage(source);\n\n // specifically an arrow function (getter factory)\n else if(!source.prototype){\n setter = source.call(subject, key);\n getSource = () => this;\n }\n\n // is a peer Model (constructor)\n else if(Model.isTypeof(source))\n getSource = pendingAccess(subject, source, key, true);\n\n // Regular function is too ambiguous so not allowed.\n else\n throw Oops.BadComputedSource(subject, key, source);\n\n Computed.prepare(this, key, getSource, setter!, getter);\n }\n )\n}","import { set } from './assign';\nimport { Controller } from './controller';\nimport { from } from './instructions';\nimport { issues } from './issues';\nimport { Model } from './model';\n\nexport const Oops = issues({\n ValueNotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n})\n\ntype ComputeFunction<T, O = any> = (this: O, on: O) => T;\n\n/* deprecated - ignore coverage */\n/* istanbul ignore next */\nexport function pending<T = void>(\n source: (() => Promise<T>) | Model | typeof Model,\n compute?: ComputeFunction<T>){\n\n if(source === undefined)\n return set();\n\n if(typeof source == \"function\" && !source.prototype)\n return set(source as any);\n\n return from(source as any, compute, true);\n}\n\n/**\n * Get value, suspend instead if undefined.\n * \n * Throws suspense promise also interpretable as an error.\n * React could handle it but other contexts probably not.\n */\nexport function pendingValue<T = any>(\n via: Controller, key: string): T {\n\n const value = via.state[key];\n\n if(value === undefined)\n throw suspend(via, key);\n\n return value;\n}\n\nexport function pendingFactory(\n via: Controller,\n key: string,\n fn: (key: string, subject: unknown) => any){\n\n const { subject, state } = via;\n let waiting: Promise<any> | undefined;\n let error: any;\n\n return () => {\n if(waiting)\n throw waiting;\n\n if(error)\n throw error;\n\n if(key in state)\n return state[key];\n\n let output;\n\n try {\n output = fn.call(subject, key, subject);\n }\n catch(err){\n throw error = err;\n }\n\n if(output instanceof Promise){\n const issue =\n Oops.ValueNotReady(subject, key);\n\n output\n .catch(err => error = err)\n .then(out => state[key] = out)\n .finally(() => waiting = undefined)\n\n throw waiting = Object.assign(output, {\n message: issue.message,\n stack: issue.stack\n });\n }\n else {\n return state[key] = output;\n }\n }\n}\n\ntype Suspense<T = any> = Promise<T> & Error;\n\nexport function suspend(\n source: Controller, key: string): Suspense {\n\n const error =\n Oops.ValueNotReady(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[key] !== undefined){\n release();\n resolve();\n }\n }\n });\n });\n\n return Object.assign(promise, {\n toString: () => String(error),\n name: \"Suspense\",\n message: error.message,\n stack: error.stack\n });\n}","import { useLayoutEffect, useMemo, useState } from 'react';\n\nimport { manage, Stateful } from './controller';\nimport { Lifecycle } from './lifecycle';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\nimport { suspend } from './suspense';\nimport { defineProperty } from './util';\n\nexport function use<T>(init: (trigger: Callback) => T){\n const [ state, update ] = useState((): T[] => [\n init(() => update(state.concat()))\n ]);\n\n return state[0];\n}\n\nexport function useLazy<T extends typeof Model>(\n Type: T, callback?: (instance: InstanceOf<T>) => void){\n\n const instance = useMemo(() => {\n const instance = Type.create();\n\n if(callback)\n callback(instance);\n\n return instance;\n }, []);\n\n useLayoutEffect(() => () => instance.destroy(), []);\n\n return instance;\n}\n\nexport function useWatcher(\n target: Stateful,\n focus?: string,\n expected?: boolean){\n\n const hook = use(refresh => {\n const sub = new Subscriber(target, () => refresh);\n\n if(focus){\n const source = sub.proxy;\n\n defineProperty(sub, \"proxy\", {\n get(){\n const value = source[focus];\n\n if(value === undefined && expected)\n throw suspend(sub.parent, focus)\n\n return value;\n }\n })\n }\n\n return sub;\n });\n\n useLayoutEffect(() => hook.commit(), []);\n\n return hook.proxy;\n}\n\nexport function useComputed(\n target: Stateful,\n compute: Function,\n expected?: boolean){\n\n const hook = use(refresh => {\n const sub = new Subscriber(target, () => update);\n const spy = sub.proxy;\n\n let value = compute.call(spy, spy);\n let update: RequestCallback | 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 const get = expected\n ? () => {\n if(value === undefined)\n throw new Promise<void>(res => retry = res);\n\n return value;\n }\n : () => value\n\n defineProperty(sub, \"proxy\", { get });\n\n return sub;\n });\n\n useLayoutEffect(() => hook.release, []);\n\n return hook.proxy;\n}\n\nexport function useModel(\n Type: Class,\n callback?: (instance: Model) => void){\n\n const hook = use(refresh => {\n const instance = new Type() as Model;\n const control = manage(instance);\n const sub = new Subscriber(control, () => refresh);\n\n const release = control.addListener(\n (key: string) => {\n if(key == Lifecycle.WILL_UNMOUNT)\n return () => {\n instance.destroy();\n release();\n }\n }\n );\n\n if(callback)\n callback(instance);\n\n return sub;\n });\n\n return hook.proxy;\n}","import { Model } from './model';\nimport { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertySymbols, getPrototypeOf, values } from './util';\n\nexport type Collection =\n | Array<Model | typeof Model>\n | BunchOf<Model | typeof Model>;\n\nexport class Lookup {\n private table = new Map<typeof Model, symbol>();\n\n public get local(){\n return getOwnPropertySymbols(this).map(\n (symbol): Model => (this as any)[symbol]\n ) \n }\n\n private key(T: typeof Model){\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: typeof Model){\n return (this as any)[this.key(T)];\n }\n \n public push(I: Model | typeof Model | Collection){\n const next = create(this) as this;\n\n if(I instanceof Model || typeof I == \"function\")\n next.register(I);\n else\n for(const i of values(I))\n next.register(i);\n\n return next;\n }\n\n public register(I: Model | typeof Model){\n let writable = true;\n let T: typeof Model;\n\n if(I instanceof Model){\n T = I.constructor as any;\n writable = false;\n }\n else {\n T = I;\n I = I.create();\n }\n\n do {\n defineProperty(this, this.key(T), {\n value: I, writable\n });\n T = getPrototypeOf(T);\n }\n while(T !== Model);\n\n return I;\n }\n\n public pop(){\n for(const key of getOwnPropertySymbols(this)){\n const entry = getOwnPropertyDescriptor(this, key)!;\n\n if(entry.writable)\n entry.value.destroy();\n }\n }\n}","import { createContext, createElement, ReactElement, ReactNode, useContext, useLayoutEffect, useMemo } from 'react';\n\nimport { use } from './hooks';\nimport { issues } from './issues';\nimport { Model } from './model';\nimport { getPending } from './peer';\nimport { Collection, Lookup } from './register';\nimport { Subscriber } from './subscriber';\nimport { entries } from './util';\n\nexport const Oops = issues({\n NoProviderType: () =>\n `Provider 'of' prop must be Model, typeof Model or a collection of them.`,\n\n NothingInContext: (name) =>\n `Couldn't find ${name} in context; did you forget to use a Provider?`,\n\n BadConsumerProps: () =>\n `Provider expects either a render function, 'get' or 'has' props.`\n})\n\nexport const LookupContext = createContext(new Lookup());\nexport const useLookup = () => useContext(LookupContext);\n\nexport function useFromContext<T extends Class>(\n Type: T, strict?: boolean){\n\n const instance = useLookup().get(Type as any);\n\n if(!instance && strict)\n throw Oops.NothingInContext(Type.name);\n\n return instance as InstanceOf<T>;\n}\n\ninterface ConsumerProps {\n of: typeof Model;\n get?: (value: Model) => void;\n has?: (value: Model) => void;\n children?: (value: Model) => ReactElement<any, any> | null;\n}\n\nexport function Consumer(props: ConsumerProps){\n const { get, has, children, of: Control } = props;\n\n if(typeof children == \"function\")\n return children(Control.tap());\n\n const callback = has || get;\n\n if(typeof callback == \"function\")\n callback(Control.get(!!has));\n else\n throw Oops.BadConsumerProps()\n\n return null;\n}\n\nfunction useNewContext(\n from: Lookup,\n inject?: Model | typeof Model | Collection){\n\n return useMemo(() => {\n if(!inject)\n throw Oops.NoProviderType();\n \n const context = from.push(inject);\n\n for(const instance of context.local)\n for(const apply of getPending(instance))\n apply(context)\n\n return context;\n }, []);\n}\n\nfunction useAppliedProps(within: Lookup, props: {}){\n const update = useMemo(() => {\n const targets = within.local;\n\n return function integrate(props: {}){\n for(const [key, value] of entries(props))\n if(key != \"of\" && key != \"children\")\n for(const into of targets)\n if(key in into)\n (into as any)[key] = value;\n };\n }, []);\n\n update(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 new Subscriber(targets[0], () => refresh);\n\n return {} as Subscriber;\n });\n\n if(hook.commit)\n useLayoutEffect(() => hook.commit(), []);\n\n return props.render(hook.proxy);\n}\n\ninterface ProvideProps {\n of?: typeof Model | Model | Collection;\n children: ReactNode | ((instance?: any) => ReactNode);\n}\n\nexport function Provider(props: ProvideProps){\n const render = props.children;\n const current = useLookup();\n const context = useNewContext(current, props.of);\n\n useAppliedProps(context, props);\n useLayoutEffect(() => () => context.pop(), []);\n\n return createElement(LookupContext.Provider, { value: context },\n typeof render == \"function\"\n ? createElement(RenderFunction, { context, render })\n : render\n );\n}","import * as Computed from './compute';\nimport { useFromContext } from './context';\nimport { CONTROL, Controller, keys, LOCAL, manage, STATE, Stateful, UPDATE } from './controller';\nimport { use, useComputed, useLazy, useModel, useWatcher } from './hooks';\nimport { issues } from './issues';\nimport { lifecycle } from './lifecycle';\nimport { usePeerContext } from './peer';\nimport { Subscriber } from './subscriber';\nimport { createEffect, define, defineLazy, select } from './util';\n\nexport const Oops = issues({\n StrictUpdate: (expected) => \n `Strict update() did ${expected ? \"not \" : \"\"}find pending updates.`,\n\n NoChaining: () =>\n `Then called with undefined; update promise will never catch nor supports chaining.`\n})\n\nconst useElementLifecycle = lifecycle(\"element\");\nconst useComponentLifecycle = lifecycle(\"component\");\n\nexport interface Model extends Stateful {\n get: this;\n set: this;\n\n didCreate?: Callback;\n willDestroy?: Callback;\n}\n\nexport class Model {\n static CONTROL = CONTROL;\n static STATE = STATE;\n static LOCAL = LOCAL;\n static WHY = UPDATE;\n\n static [CONTROL]: Controller;\n static [UPDATE]: readonly string[];\n\n constructor(){\n const control = Controller.setup(this);\n\n define(this, \"get\", this);\n define(this, \"set\", this);\n\n defer(control, \"on\");\n defer(control, \"effect\");\n\n control.onUpdate(() => {\n delete (this as any).on;\n delete (this as any).effect;\n })\n }\n\n tap(path?: string | Select, expect?: boolean){\n if(typeof path == \"function\")\n return useComputed(this, path, expect);\n\n const proxy = useWatcher(this, path, expect);\n this.update(\"willRender\", true);\n return proxy;\n }\n\n tag(id?: Key | KeyFactory<this>){\n const hook = use(refresh => (\n new Subscriber(this, () => refresh)\n ));\n \n useElementLifecycle(hook, id || 0);\n \n return hook.proxy;\n }\n\n use(callback?: (instance: Model) => void){\n const hook = use(refresh => {\n if(callback)\n callback(this);\n\n return new Subscriber(this, () => refresh);\n });\n \n useComponentLifecycle(hook);\n \n return hook.proxy;\n }\n\n on(\n subset: string | string[] | Set<string> | Query,\n handler: Function,\n squash?: boolean,\n once?: boolean){\n\n const control = manage(this);\n const request = keys(control, subset);\n\n const callback: RequestCallback = squash\n ? handler.bind(this)\n : frame => frame\n .filter(k => request.includes(k))\n .forEach(k => handler.call(this, control.state[k], k))\n\n const trigger: RequestCallback = once\n ? frame => { remove(); callback(frame) }\n : callback;\n\n Computed.ensure(control, request);\n\n const remove = control.addListener(key => {\n if(request.includes(key))\n return trigger;\n });\n\n return remove;\n }\n\n once(\n select: string | string[] | Set<string> | Query,\n callback?: UpdateCallback<any, any>,\n squash?: boolean){\n\n if(callback)\n return this.on(select, callback, squash, true);\n\n return new Promise<void>(resolve => {\n this.on(select, resolve, true, true);\n });\n }\n\n effect(\n callback: EffectCallback<any>,\n select?: string[] | Query){\n\n const control = manage(this);\n let target = this;\n\n const effect = createEffect(callback);\n const invoke = () => effect.call(target, target);\n\n if(select){\n invoke();\n return this.on(select, invoke, true);\n }\n \n const sub = new Subscriber(control, () => invoke);\n target = sub.proxy;\n invoke();\n return sub.commit();\n }\n\n import(\n from: BunchOf<any>,\n subset?: Set<string> | string[] | Query){\n\n for(const key of keys(manage(this), subset))\n if(key in from)\n (this as any)[key] = from[key];\n }\n\n export(subset?: Set<string> | string[] | Query){\n const control = manage(this);\n const output: BunchOf<any> = {};\n\n for(const key of keys(control, subset))\n output[key] = (control.state as any)[key];\n\n return output;\n }\n\n update(strict?: boolean): Promise<string[] | false>;\n update(select?: Select): PromiseLike<string[]>;\n update(key: string | Select, callMethod: boolean): PromiseLike<readonly string[]>;\n update(key: string | Select, tag?: any): PromiseLike<readonly string[]>;\n update(arg?: string | boolean | Select, tag?: any){\n const control = manage(this);\n\n if(typeof arg == \"function\")\n arg = select(this, arg);\n\n if(typeof arg == \"boolean\"){\n if(!control.pending === arg)\n return Promise.reject(Oops.StrictUpdate(arg))\n }\n else if(arg){\n control.update(arg);\n\n if(1 in arguments && arg in this){\n const method = (this as any)[arg];\n\n if(typeof method == \"function\")\n if(typeof tag != \"boolean\")\n method.call(this, tag);\n else if(tag)\n method.call(this);\n }\n }\n\n return <PromiseLike<readonly string[] | false>> {\n then(callback){\n if(callback)\n if(control.pending)\n control.waiting.add(callback);\n else\n callback(false);\n else\n throw Oops.NoChaining();\n }\n }\n }\n\n destroy(){\n this.update(\"willDestroy\", true);\n }\n\n toString(){\n return this.constructor.name;\n }\n\n static create<T extends Class>(\n this: T, ...args: any[]){\n\n const instance: InstanceOf<T> = \n new (this as any)(...args);\n\n manage(instance);\n\n return instance;\n }\n\n static new(callback?: (instance: Model) => void){\n const instance = useLazy(this, callback);\n instance.update(\"willRender\", true);\n return instance\n }\n\n static find<T extends Class>(this: T, strict: true): InstanceOf<T>;\n static find<T extends Class>(this: T, strict?: boolean): InstanceOf<T> | undefined;\n static find<T extends Class>(this: T, strict?: boolean){\n return useFromContext(this, strict);\n }\n\n static get(key?: boolean | string | Select){\n const instance: any = this.find(!!key);\n \n return (\n typeof key == \"function\" ?\n key(instance) :\n typeof key == \"string\" ?\n instance[key] :\n instance\n )\n }\n\n static tap(key?: string | Select, expect?: boolean): any {\n return this.find(true).tap(key, expect);\n }\n\n static tag(id?: Key | ((target: Model) => Key | undefined)){\n return this.find(true).tag(id);\n }\n\n static use(callback?: (instance: Model) => void){\n const instance = useModel(this, callback);\n useComponentLifecycle(instance[LOCAL]);\n usePeerContext(instance.get);\n return instance;\n }\n\n static uses(props: BunchOf<any>, only?: string[]){\n return this.use(instance => {\n instance.import(props, only);\n })\n }\n\n static using(props: BunchOf<any>, only?: string[]){\n const instance = this.use();\n instance.import(props, only);\n return instance;\n }\n\n static meta(path: string | Select): any {\n return typeof path == \"function\"\n ? useComputed(this, path)\n : useWatcher(this, path)\n }\n\n static isTypeof<T extends typeof Model>(\n this: T, maybe: any): maybe is T {\n\n return (\n typeof maybe == \"function\" &&\n maybe.prototype instanceof this\n )\n }\n}\n\ndefineLazy(Model, CONTROL, function(){\n return new Controller(this).start();\n})\n\nfunction defer(on: Controller, method: string){\n const { subject, waiting } = on as any;\n const real = subject[method];\n\n subject[method] = (...args: any[]) => {\n let done: any;\n waiting.add(() => {\n done = real.apply(subject, args);\n });\n return () => done();\n }\n}","import { child } from './attach';\nimport { apply, manage } from './controller';\nimport { issues } from './issues';\nimport { Model } from './model';\nimport { defineProperty, getOwnPropertyDescriptors } from './util';\n\nconst Parent = new WeakMap<{}, {}>();\n\nexport const Oops = issues({\n ParentRequired: (expects, child) => \n `New ${child} created standalone but requires parent of type ${expects}. Did you remember to create via use(${child})?`,\n\n UnexpectedParent: (expects, child, got) =>\n `New ${child} created as child of ${got}, but must be instanceof ${expects}.`,\n\n UndefinedNotAllowed: (key) =>\n `Child property ${key} may not be undefined.`,\n\n BadArgument: (type) =>\n `Instruction \\`use\\` cannot accept argument type of ${type}.`,\n\n IsReadOnly: (owner, key) =>\n `${owner}.${key} is set to read-only, but tried to reassign assign.`,\n\n MustBeDefined: (owner, key) =>\n `${owner}.${key} must have initial value, as a read-only property.`\n})\n\nfunction bootstrap<T extends {}>(object: T){\n const breakdown = getOwnPropertyDescriptors(object);\n const control = new Model();\n\n for(const key in breakdown)\n defineProperty(control, key, breakdown[key]);\n \n return control as T & Model;\n}\n\nexport function use<T extends typeof Model>(\n input?: T | (() => InstanceOf<T>),\n argument?: ((i: Model | undefined) => boolean) | boolean){\n\n return child(\n function use(key){\n const { subject } = this;\n\n // `true` => readonly\n // `false` => writable, may be undefined\n // `undefined` => writable (default)\n let mode = argument;\n let current: Model | undefined;\n \n const onUpdate = (\n next: Model | {} | undefined,\n initial?: boolean) => {\n\n if(mode === true && !initial)\n throw Oops.IsReadOnly(subject, key);\n\n if(next){\n current = next instanceof Model\n ? next : bootstrap(next);\n\n Parent.set(current, subject);\n manage(current);\n }\n else if(mode === undefined)\n throw Oops.UndefinedNotAllowed(key);\n else\n current = undefined;\n \n if(typeof argument == \"function\")\n return argument(current);\n }\n \n if(input){\n current =\n Model.isTypeof(input) ? new input() :\n input instanceof Model ? input :\n typeof input === \"function\" ? input() :\n typeof input === \"object\" ? bootstrap(input) :\n Oops.BadArgument(typeof input).throw();\n \n if(current)\n mode = onUpdate(current, true) || mode;\n else if(mode == true)\n throw Oops.MustBeDefined(subject, key);\n }\n else\n mode = false;\n \n this.manage(key, current, onUpdate);\n \n return () => current;\n }\n )\n}\n\nexport function parent<T extends typeof Model>(\n Expects: T, required?: boolean): InstanceOf<T> {\n\n return apply(\n function parent(){\n const child = this.subject;\n const expected = Expects.name;\n const value = Parent.get(this.subject);\n \n if(!value){\n if(required)\n throw Oops.ParentRequired(expected, child);\n }\n else if(!(value instanceof Expects))\n throw Oops.UnexpectedParent(expected, child, value);\n \n return { value };\n }\n );\n}","import { issues } from './issues';\nimport { Model } from './model';\n\nexport const Oops = issues({\n GlobalDoesNotExist: (name) =>\n `Tried to access singleton ${name}, but none exist! Did you forget to initialize?\\nCall ${name}.create() before attempting to access, or consider using ${name}.use() instead.`,\n \n GlobalExists: (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<typeof Singleton, Singleton>();\n\nexport class Singleton extends Model {\n static get current(){\n return Active.get(this);\n }\n\n static create<T extends Class>(\n this: T, ...args: any[]){\n\n const Type: typeof Singleton = this as any;\n\n if(Active.has(Type))\n throw Oops.GlobalExists(this.name);\n\n let instance = super.create(...args);\n\n Active.set(Type, instance);\n\n return instance as InstanceOf<T>;\n }\n\n static update<T extends typeof Singleton>(\n this: T, updates: Partial<InstanceOf<T>>){\n\n const instance = this.current || this.create();\n instance.import(updates);\n return instance.update();\n }\n\n static is(){\n return this.find(true);\n }\n\n static find<T extends Class>(this: T, strict?: boolean){\n const instance = (this as any).current as InstanceOf<T>;\n\n if(!instance && strict)\n throw Oops.GlobalDoesNotExist(this.name);\n\n return instance;\n }\n\n static reset(){\n if(this.current)\n this.current.destroy();\n }\n\n destroy(){\n super.destroy();\n Active.delete(this.constructor as any);\n }\n}"],"names":["Oops","keys","Computed.flush","Computed.prepare","use","Computed.ensure"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/issues.ts","../src/util.ts","../src/controller.ts","../src/subscriber.ts","../src/compute.ts","../src/model.ts","../src/instruction.ts","../src/attach.ts","../src/compose.ts","../src/lifecycle.ts","../src/hooks.ts","../src/register.ts","../src/context.ts","../src/peer.ts","../src/instructions.ts","../src/suspense.ts","../src/assign.ts","../src/mvc.ts","../src/singleton.ts"],"sourcesContent":["type MessageVar = {} | string | number | boolean | null;\ntype ExpectVars<T> = T extends (...args: infer T) => any ? T : never;\n\ntype Messages = {\n [named: string]: (...args: MessageVar[]) => string;\n}\n\ntype Issues<M extends Messages> = {\n readonly [P in keyof M]: (...args: ExpectVars<M[P]>) => Issue;\n}\n\nclass 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 Messages>(register: M){\n const Library = {} as any;\n \n for(const name in register)\n Library[name] = (...args: MessageVar[]) => \n new Issue(register[name].apply(null, args));\n\n return Library as Issues<M>;\n}","import { issues } from './issues';\n\nexport const Oops = issues({\n BadEffectCallback: () =>\n `Callback for effect-callback may only return a function.`\n})\n\nconst {\n assign,\n create,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyNames,\n getOwnPropertyDescriptor,\n getOwnPropertyDescriptors,\n getOwnPropertySymbols,\n keys,\n values\n} = Object;\n\nexport {\n assign,\n create,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n getOwnPropertyDescriptors,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n keys,\n values\n}\n\nexport function define(\n target: {}, key: string | symbol, value: any){\n\n defineProperty(target, key, { value })\n}\n\nexport function defineLazy<T>(\n object: T, \n property: string | symbol, \n init: (this: T) => any){\n\n defineProperty(object, property, { \n configurable: true,\n get(){\n const value = init!.call(this);\n defineProperty(this, property, { value });\n return value;\n }\n });\n}\n\nexport function setAlias<T extends Function>(\n func: T, displayName: string){\n\n assign(func, { displayName });\n}\n\nexport function createEffect(\n callback: EffectCallback<any>){\n\n let unSet: Callback | Promise<any> | void;\n\n return function(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.BadEffectCallback()\n }\n}\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.BadEffectCallback()\n }\n}","import * as Computed from './compute';\nimport { Pending } from './instruction';\nimport { issues } from './issues';\nimport { Stateful, UPDATE } from './model';\nimport { defineProperty, getOwnPropertyDescriptor } from './util';\n\nexport const Oops = issues({\n StrictUpdate: (expected) => \n `Strict update() did ${expected ? \"not \" : \"\"}find pending updates.`,\n\n NoChaining: () =>\n `Then called with undefined; update promise will never catch nor supports chaining.`\n});\n\ndeclare namespace Controller {\n type Listen = (key: string, source: Controller) => RequestCallback | void;\n type OnValue = <T>(this: T, value: any, state: T) => boolean | void;\n}\n\nclass Controller {\n public state!: BunchOf<any>;\n public frame = new Set<string>();\n public waiting = new Set<RequestCallback>();\n\n protected followers = new Set<Controller.Listen>();\n\n constructor(public subject: Stateful){}\n\n public start(){\n this.state = {};\n\n for(const key in this.subject)\n this.manage(key);\n\n const handle = new Set(this.waiting);\n this.waiting.clear();\n handle.forEach(cb => cb([]));\n\n return this;\n }\n\n public manage(\n key: string,\n handler?: Controller.OnValue){\n\n const { state, subject } = this;\n const desc = getOwnPropertyDescriptor(subject, key);\n\n if(desc && \"value\" in desc){\n const { value } = desc;\n const instruction = Pending.get(value);\n\n if(instruction){\n Pending.delete(value);\n delete (subject as any)[key];\n instruction.call(this, key, this);\n }\n else if(typeof value !== \"function\" || /^[A-Z]/.test(key)){\n state[key] = value;\n defineProperty(subject, key, {\n enumerable: true,\n get: () => state[key],\n set: this.setter(key, handler)\n });\n }\n }\n }\n\n public setter(\n key: string,\n handler?: Controller.OnValue){\n\n const { state, subject } = this;\n\n return (value: any) => {\n if(state[key] == value)\n return;\n\n if(handler)\n switch(handler.call(subject, value, state)){\n case true:\n this.update(key);\n case false:\n return;\n }\n\n this.update(key, value);\n }\n }\n\n public addListener(listener: Controller.Listen){\n this.followers.add(listener);\n return () => {\n this.followers.delete(listener)\n }\n }\n\n public update(key: string, value?: any){\n if(1 in arguments)\n this.state[key] = value;\n\n if(this.frame.has(key))\n return;\n\n if(!this.frame.size)\n setTimeout(() => {\n Computed.flush(this);\n\n const keys = Object.freeze([ ...this.frame ]);\n const handle = new Set(this.waiting);\n\n this.waiting.clear();\n this.frame.clear();\n\n UPDATE.set(this.subject, keys);\n\n setImmediate(() => {\n UPDATE.delete(this.subject);\n });\n\n handle.forEach(callback => {\n try { callback(keys) }\n catch(e){ }\n })\n }, 0);\n\n this.frame.add(key);\n\n for(const callback of this.followers){\n const event = callback(key, this);\n\n if(typeof event == \"function\")\n this.waiting.add(event);\n }\n }\n\n public requestUpdate(arg?: boolean | RequestCallback): any {\n if(typeof arg == \"function\"){\n this.waiting.add(arg);\n return;\n }\n\n if(typeof arg == \"boolean\" && arg !== this.frame.size > 0)\n return Promise.reject(Oops.StrictUpdate(arg));\n\n return <PromiseLike<readonly string[] | false>> {\n then: (callback) => {\n if(callback)\n if(this.frame.size)\n this.waiting.add(callback);\n else\n callback(false);\n else\n throw Oops.NoChaining();\n }\n }\n }\n}\n\nexport { Controller }","import { Controller } from './controller';\nimport { getController, LOCAL, Stateful, UPDATE } from './model';\nimport { create, define, defineProperty, getOwnPropertyDescriptor, setAlias } from './util';\n\ntype Listener = {\n commit(): void;\n release(): void;\n}\n\nexport class Subscriber {\n public proxy: any;\n public source: any;\n public active = false;\n public watch = {} as BunchOf<Callback | true>;\n public dependant = new Set<Listener>();\n public parent: Controller;\n public release!: Callback;\n public commit: () => () => void;\n\n constructor(\n parent: Controller | Stateful,\n public onUpdate: Controller.Listen){\n\n if(!(parent instanceof Controller))\n parent = getController(parent);\n\n this.parent = parent;\n this.source = parent.subject;\n\n const proxy = this.proxy = create(parent.subject);\n\n const DEBUG: RequestCallback = (keys) => {\n UPDATE.set(proxy, \n keys.filter(k => k in this.watch) \n );\n }\n\n define(proxy, LOCAL, this);\n defineProperty(this, \"proxy\", {\n get: () => {\n if(UPDATE.has(proxy))\n setImmediate(() => {\n UPDATE.delete(proxy);\n })\n\n return proxy;\n }\n })\n\n for(const key in parent.state){\n const existing =\n getOwnPropertyDescriptor(parent.subject, key)!;\n\n const isUsing = () => {\n this.watch[key] = true;\n delete proxy[key];\n return proxy[key];\n }\n \n setAlias(isUsing, `tap ${key}`);\n defineProperty(proxy, key, {\n set: existing.set,\n get: isUsing,\n configurable: true,\n enumerable: true\n })\n }\n\n this.commit = () => {\n const { parent } = this;\n\n const onDone = parent.addListener(key => {\n const handler = this.watch[key];\n \n if(!handler)\n return;\n \n if(typeof handler == \"function\")\n handler();\n \n const notify = this.onUpdate(key, parent);\n \n if(notify){\n parent.requestUpdate(DEBUG);\n parent.requestUpdate(notify);\n }\n });\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 onDone();\n }\n }\n }\n}","import { Controller } from './controller';\nimport { issues } from './issues';\nimport { Subscriber } from './subscriber';\nimport { defineProperty, getOwnPropertyDescriptor, setAlias } from './util';\n\nexport const Oops = issues({\n ComputeFailed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`,\n\n ComputedEarly: (property) => \n `Note: Computed values don't run until accessed, except when subscribed to. '${property}' getter may have run earlier than intended.`\n})\n\ntype GetterInfo = {\n key: string;\n parent: Controller;\n priority: number;\n}\n\nconst INIT = new WeakSet<Function>();\nconst INFO = new WeakMap<Function, GetterInfo>();\nconst USED = new WeakMap<Controller, Map<string, GetterInfo>>();\nconst KEYS = new WeakMap<Controller, RequestCallback[]>();\n\nexport function prepare(\n parent: Controller,\n key: string,\n source: () => Controller,\n setter: (on?: any) => any,\n getter?: (on: Controller, key: string) => any){\n\n let sub: Subscriber;\n\n const { state, subject } = parent;\n const info: GetterInfo = { key, parent, priority: 1 };\n\n let register = USED.get(parent)!;\n\n if(!register){\n register = new Map<string, GetterInfo>();\n USED.set(parent, register);\n }\n\n register.set(key, info);\n\n const current = getter\n ? () => getter(parent, key)\n : () => state[key];\n\n function compute(initial?: boolean){\n try {\n return setter.call(sub.proxy, sub.proxy);\n }\n catch(err){\n Oops.ComputeFailed(subject, key, !!initial).warn();\n throw err;\n }\n }\n\n function update(){\n let value;\n\n try {\n value = compute(false);\n }\n catch(e){\n console.error(e);\n }\n finally {\n if(state[key] !== value){\n parent.update(key, value);\n return value;\n }\n }\n }\n\n function defer(_key: string, from: Controller){\n let pending = KEYS.get(from);\n\n if(!pending)\n KEYS.set(from, pending = []);\n\n if(info.parent !== from)\n update();\n else {\n const after = pending.findIndex(peer => (\n info.priority > INFO.get(peer)!.priority\n ));\n\n pending.splice(after + 1, 0, update);\n }\n }\n\n function create(early?: boolean){\n sub = new Subscriber(source(), defer);\n\n defineProperty(state, key, {\n value: undefined,\n writable: true\n })\n\n defineProperty(subject, key, {\n enumerable: true,\n configurable: true,\n get: current\n });\n\n try {\n state[key] = compute(true);\n }\n catch(e){\n if(early)\n Oops.ComputedEarly(key).warn();\n\n throw e;\n }\n finally {\n sub.commit();\n\n for(const key in sub.watch){\n const peer = register.get(key);\n \n if(peer && peer.priority >= info.priority)\n info.priority = peer.priority + 1;\n }\n }\n\n return current();\n }\n\n setAlias(update, `try ${key}`);\n setAlias(create, `new ${key}`);\n setAlias(setter, `run ${key}`);\n\n INIT.add(create);\n INFO.set(update, info);\n\n for(const on of [state, subject])\n defineProperty(on, key, {\n get: create,\n configurable: true,\n enumerable: true\n })\n}\n\nexport function ensure(\n on: Controller, keys: string[]){\n\n type Initial = (early?: boolean) => void;\n\n for(const key of keys){\n const desc = getOwnPropertyDescriptor(on.subject, key);\n const getter = desc && desc.get;\n \n if(INIT.has(getter!))\n (getter as Initial)(true);\n }\n}\n\nexport function flush(on: Controller){\n const handled = on.frame;\n const pending = KEYS.get(on);\n\n if(!pending)\n return;\n\n while(pending.length){\n const why = [ ...handled ];\n const compute = pending.shift()!;\n const { key } = INFO.get(compute)!;\n\n if(!handled.has(key))\n compute(why);\n }\n\n KEYS.delete(on);\n}","import * as Computed from './compute';\nimport { Controller } from './controller';\nimport { Subscriber } from './subscriber';\nimport { createEffect, define, defineLazy, getOwnPropertyNames } from './util';\n\nexport const CONTROL = Symbol(\"CONTROL\");\nexport const WHY = Symbol(\"UPDATE\");\nexport const LOCAL = Symbol(\"LOCAL\");\nexport const STATE = Symbol(\"STATE\");\n\nexport interface Stateful {\n [CONTROL]: Controller;\n [WHY]?: readonly string[];\n [LOCAL]?: Subscriber;\n [STATE]?: any;\n\n didCreate?(): void;\n};\n\nexport const UPDATE = new WeakMap<{}, readonly string[]>();\n\nexport interface Model extends Stateful {\n get: this;\n set: this;\n\n didCreate?: Callback;\n willDestroy?: Callback;\n}\n\nexport function ensure(\n subject: Stateful,\n callback: (control: Controller) => Callback){\n\n const control = subject[CONTROL];\n\n if(!control.state){\n let done: any;\n control.requestUpdate(() => {\n done = callback(control);\n });\n return () => done();\n }\n\n return callback(control);\n}\n\nexport function getController(subject: Stateful){\n const control = subject[CONTROL];\n\n if(!control.state)\n control.start();\n\n if(subject.didCreate)\n subject.didCreate();\n\n return control;\n}\n\nexport class Model {\n static CONTROL = CONTROL;\n static STATE = STATE;\n static LOCAL = LOCAL;\n static WHY = WHY;\n\n static [CONTROL]: Controller;\n static [WHY]: readonly string[];\n\n constructor(){\n define(this, CONTROL, new Controller(this));\n define(this, \"get\", this);\n define(this, \"set\", this);\n }\n\n get [STATE](){\n return this[CONTROL].state;\n }\n\n get [WHY](){\n return UPDATE.get(this);\n }\n\n on(\n select: string | string[],\n handler: Function,\n squash?: boolean,\n once?: boolean){\n\n return ensure(this, control => {\n const keys = \n typeof select == \"string\" ? [select] :\n !select.length ? getOwnPropertyNames(control.state) :\n select;\n\n Computed.ensure(control, keys);\n\n const callback: RequestCallback = squash\n ? handler.bind(this)\n : frame => frame\n .filter(k => keys.includes(k))\n .forEach(k => handler.call(this, control.state[k], k))\n\n const trigger: RequestCallback = once\n ? frame => { remove(); callback(frame) }\n : callback;\n\n const remove = control.addListener(key => {\n if(keys.includes(key))\n return trigger;\n });\n\n return remove;\n });\n }\n\n once(\n select: string | string[],\n callback?: UpdateCallback<any, any>,\n squash?: boolean){\n\n if(callback)\n return this.on(select, callback, squash, true);\n\n return new Promise<void>(resolve => {\n this.on(select, resolve, true, true);\n });\n }\n\n effect(\n callback: EffectCallback<any>,\n select?: string[]){\n\n const effect = createEffect(callback);\n\n return ensure(this, control => {\n if(!select){\n const sub = new Subscriber(control, () => invoke);\n const invoke = () => {\n const x = sub.proxy;\n effect.call(x, x);\n }\n\n invoke();\n\n return sub.commit();\n }\n\n const invoke = () => {\n effect.call(this.get, this.get);\n }\n\n invoke();\n\n if(!select.length)\n select.push(\"willDestroy\");\n\n return control.addListener(key => {\n if(select.includes(key))\n return invoke;\n });\n })\n }\n\n import(\n from: BunchOf<any>,\n subset?: Set<string> | string[]){\n\n for(const key of subset || getOwnPropertyNames(this))\n if(key in from)\n (this as any)[key] = from[key];\n }\n\n export(subset?: Set<string> | string[]){\n const { state } = getController(this);\n const output: BunchOf<any> = {};\n\n for(const key of subset || getOwnPropertyNames(state))\n output[key] = (state as any)[key];\n\n return output;\n }\n\n update(strict?: boolean): Promise<string[] | false>;\n update(select: string, callMethod: boolean): PromiseLike<readonly string[]>;\n update(select: string, tag?: any): PromiseLike<readonly string[]>;\n update(arg?: string | boolean, tag?: any){\n const control = getController(this);\n\n if(typeof arg == \"string\"){\n control.update(arg);\n\n if(1 in arguments && arg in this){\n const method = (this as any)[arg];\n\n if(typeof method == \"function\")\n if(typeof tag != \"boolean\")\n method.call(this, tag);\n else if(tag)\n method.call(this);\n }\n\n arg = undefined;\n }\n\n return control.requestUpdate(arg);\n }\n\n destroy(){\n this.update(\"willDestroy\", true);\n }\n\n toString(){\n return this.constructor.name;\n }\n\n static create<T extends Class>(\n this: T, ...args: any[]){\n\n const instance: InstanceOf<T> = \n new (this as any)(...args);\n\n getController(instance);\n\n return instance;\n }\n\n static isTypeof<T extends typeof Model>(\n this: T, maybe: any): maybe is T {\n\n return (\n typeof maybe == \"function\" &&\n maybe.prototype instanceof this\n )\n }\n}\n\ndefineLazy(Model, CONTROL, function(){\n return new Controller(this);\n})","import { Controller } from './controller';\nimport { LOCAL, Stateful } from './model';\nimport { Subscriber } from './subscriber';\nimport { defineProperty } from './util';\n\nexport const Pending = new Map<symbol, Instruction<any>>();\n\ndeclare namespace Instruction {\n type Getter<T> = (state: T | undefined, within?: Subscriber) => T;\n\n interface Descriptor<T> {\n configurable?: boolean;\n enumerable?: boolean;\n value?: T;\n writable?: boolean;\n get?: Getter<T>;\n set?(value: T, state: any): boolean | void;\n }\n}\n\nexport type Instruction<T> = (this: Controller, key: string, thisArg: Controller) =>\n void | Instruction.Getter<T> | Instruction.Descriptor<T>;\n\nexport function apply<T = any>(\n fn: Instruction<any>, label?: string){\n\n const name = label || fn.name || \"pending\";\n const placeholder = Symbol(`${name} instruction`);\n\n function setup(this: Controller, key: string){\n const { subject, state } = this;\n\n let output = fn.call(this, key, this);\n let desc = {} as PropertyDescriptor;\n let get: ((state: any, within?: Subscriber | undefined) => any) | undefined;\n let set: ((value: any, state: any) => boolean | void) | undefined\n\n if(!output)\n return;\n\n if(typeof output == \"function\")\n get = output;\n\n else {\n ({ get, set, ...desc } = output);\n\n if(\"value\" in desc){\n state[key] = desc.value;\n \n if(get || set)\n delete desc.value;\n else {\n defineProperty(subject, key, desc);\n return;\n }\n }\n }\n\n defineProperty(subject, key, {\n ...desc,\n set: this.setter(key, set),\n get: get\n ? function(this: Stateful){\n return get!(state[key], this[LOCAL]);\n }\n : () => state[key]\n });\n }\n\n Pending.set(placeholder, setup);\n\n return placeholder as unknown as T;\n}","import { Controller } from './controller';\nimport { apply } from './instruction';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\ntype ChildInstruction<T extends Model> =\n (this: Controller, key: string) => {\n get: () => T | undefined,\n set?: (value: T | undefined) => void\n };\n\n//TODO: sync instruction\n\nexport function child<T extends Model>(\n source: ChildInstruction<T>,\n name?: string){\n\n return apply(\n function child(this: Controller, key: string){\n const context = new WeakMap<Subscriber, any>();\n const peer = source.call(this, key);\n \n function subscribe(sub: Subscriber){\n let child: Subscriber | undefined;\n \n function init(){\n if(child){\n child.release();\n sub.dependant.delete(child);\n context.set(sub, undefined);\n child = undefined;\n }\n \n const instance = peer.get();\n \n if(instance){\n child = new Subscriber(instance, sub.onUpdate);\n \n if(sub.active)\n child.commit();\n \n sub.dependant.add(child);\n context.set(sub, child.proxy);\n }\n }\n\n init();\n sub.watch[key] = init;\n }\n \n return {\n value: peer.get(),\n set: peer.set,\n get(_value, local){\n if(!local)\n return peer.get();\n \n if(!context.has(local))\n subscribe(local);\n \n return context.get(local);\n }\n }\n },\n name || source.name\n )\n}","import { child } from './attach';\nimport { apply } from './instruction';\nimport { issues } from './issues';\nimport { getController, Model } from './model';\nimport { defineProperty, getOwnPropertyDescriptors } from './util';\n\nconst Parent = new WeakMap<{}, {}>();\n\nexport const Oops = issues({\n ParentRequired: (expects, child) => \n `New ${child} created standalone but requires parent of type ${expects}. Did you remember to create via use(${child})?`,\n\n UnexpectedParent: (expects, child, got) =>\n `New ${child} created as child of ${got}, but must be instanceof ${expects}.`,\n\n BadArgument: (type) =>\n `Instruction \\`use\\` cannot accept argument type of ${type}.`,\n})\n\nfunction bootstrap<T extends {}>(object: T){\n const breakdown = getOwnPropertyDescriptors(object);\n const control = new Model();\n\n for(const key in breakdown)\n defineProperty(control, key, breakdown[key]);\n \n return control as T & Model;\n}\n\nexport function use<T extends typeof Model>(\n input?: T | (() => InstanceOf<T>),\n argument?: (i: Model | undefined) => boolean){\n\n return child(\n function use(key){\n const { subject } = this;\n\n let current: Model | undefined;\n \n const onUpdate = (\n next: Model | {} | undefined) => {\n\n if(next){\n current = next instanceof Model\n ? next : bootstrap(next);\n\n Parent.set(current, subject);\n getController(current);\n }\n else\n current = undefined;\n \n if(typeof argument == \"function\")\n return argument(current);\n }\n \n if(input){\n const initial =\n Model.isTypeof(input)\n ? new input() :\n input instanceof Model\n ? input :\n typeof input === \"function\"\n ? input() :\n typeof input === \"object\"\n ? bootstrap(input)\n : null;\n\n if(initial)\n onUpdate(initial);\n\n else if(initial === null)\n throw Oops.BadArgument(typeof input);\n }\n \n return {\n get: () => current,\n set: onUpdate\n }\n }\n )\n}\n\nexport function parent<T extends typeof Model>(\n Expects: T, required?: boolean): InstanceOf<T> {\n\n return apply(\n function parent(){\n const child = this.subject;\n const expected = Expects.name;\n const value = Parent.get(this.subject);\n \n if(!value){\n if(required)\n throw Oops.ParentRequired(expected, child);\n }\n else if(!(value instanceof Expects))\n throw Oops.UnexpectedParent(expected, child, value);\n \n return { value };\n }\n );\n}","import React from 'react';\n\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\nimport { values } from './util';\n\ntype ValuesOf<T> = T[keyof T];\n\nexport type Event = ValuesOf<typeof Lifecycle>;\nexport type Key = string | symbol | number;\nexport type KeyFactory<T> = (target: T) => Key | undefined;\n\nexport const Lifecycle = {\n WILL_RENDER: \"willRender\",\n WILL_UPDATE: \"willUpdate\",\n WILL_MOUNT: \"willMount\",\n WILL_UNMOUNT: \"willUnmount\",\n DID_MOUNT: \"didMount\"\n} as const;\n\n\nexport const lifecycleEvents = [\n \"didCreate\",\n \"willDestroy\",\n ...values(Lifecycle)\n];\n\nexport function lifecycle(prefix: string){\n const type = eventsFor(prefix);\n\n return function useLifecycle(\n sub: Subscriber, tag?: Key | KeyFactory<any>){\n\n const emit = React.useMemo(() => {\n const subject = sub.source as Model;\n const id = typeof tag == \"function\" ? tag(subject) : tag;\n \n return (name: Event) => {\n for(const key of [name, type(name)])\n subject.update(key, id);\n }\n }, [sub, tag]);\n\n emit(Lifecycle.WILL_RENDER);\n emit(sub.active\n ? Lifecycle.WILL_UPDATE\n : Lifecycle.WILL_MOUNT \n )\n \n React.useLayoutEffect(() => {\n sub.commit();\n emit(Lifecycle.DID_MOUNT);\n \n return () => {\n emit(Lifecycle.WILL_UNMOUNT);\n sub.release();\n }\n }, [sub]);\n }\n}\n\nfunction eventsFor(prefix: string){\n const map = new Map<Event, Event>();\n\n for(const name of values(Lifecycle)){\n const alias = prefix + name[0].toUpperCase() + name.slice(1);\n\n lifecycleEvents.push(alias);\n map.set(name, alias as Event);\n }\n\n return (e: Event) => map.get(e)!;\n}","import React from 'react';\n\nimport { Key, KeyFactory, Lifecycle, lifecycle } from './lifecycle';\nimport { Model, Stateful } from './model';\nimport { usePeerContext } from './peer';\nimport { Subscriber } from './subscriber';\nimport { suspend } from './suspense';\nimport { defineProperty } from './util';\n\nconst useElementLifecycle = lifecycle(\"element\");\nconst useComponentLifecycle = lifecycle(\"component\");\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}\n\nexport function useTap(\n model: Model,\n path?: string | Function,\n expect?: boolean){\n\n if(typeof path == \"function\")\n return useComputed(model, path, expect);\n\n const proxy = useActive(model, path, expect);\n model.update(\"willRender\", true);\n return proxy;\n}\n\nexport function useTag<T extends Model>(\n model: T,\n id?: Key | KeyFactory<T>){\n\n const hook = use(refresh => (\n new Subscriber(model, () => refresh)\n ));\n\n useElementLifecycle(hook, id || 0);\n \n return hook.proxy;\n}\n\nexport function useNew<T extends Model>(\n model: T,\n callback?: (instance: T) => void){\n \n const hook = use(refresh => {\n if(callback)\n callback(model);\n\n return new Subscriber(model, () => refresh);\n });\n\n useComponentLifecycle(hook);\n \n return hook.proxy;\n}\n\nexport function usePassive<T extends typeof Model>(\n Type: T, callback?: (instance: InstanceOf<T>) => void){\n\n const instance = React.useMemo(() => {\n const instance = Type.create();\n\n if(callback)\n callback(instance);\n\n return instance;\n }, []);\n\n React.useLayoutEffect(() => () => instance.destroy(), []);\n instance.update(\"willRender\", true);\n\n return instance;\n}\n\nexport function useActive(\n target: Stateful,\n focus?: string,\n expected?: boolean){\n\n const hook = use(refresh => {\n const sub = new Subscriber(target, () => refresh);\n\n if(focus){\n const source = sub.proxy;\n\n defineProperty(sub, \"proxy\", {\n get(){\n const value = source[focus];\n\n if(value === undefined && expected)\n throw suspend(sub.parent, focus)\n\n return value;\n }\n })\n }\n\n return sub;\n });\n\n React.useLayoutEffect(() => hook.commit(), []);\n\n return hook.proxy;\n}\n\nexport function useComputed(\n target: Stateful,\n compute: Function,\n expected?: boolean){\n\n const hook = use(refresh => {\n const sub = new Subscriber(target, () => update);\n const spy = sub.proxy;\n\n let value = compute.call(spy, spy);\n let update: RequestCallback | 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 const get = expected\n ? () => {\n if(value === undefined)\n throw new Promise<void>(res => retry = res);\n\n return value;\n }\n : () => value\n\n defineProperty(sub, \"proxy\", { get });\n\n return sub;\n });\n\n React.useLayoutEffect(() => hook.release, []);\n\n return hook.proxy;\n}\n\nexport function useModel(\n Type: Class,\n callback?: (instance: Model) => void){\n\n const hook = use(refresh => {\n const instance = new Type() as Model;\n const sub = new Subscriber(instance, () => refresh);\n const release = sub.parent.addListener(\n (key: string) => {\n if(key == Lifecycle.WILL_UNMOUNT)\n return () => {\n instance.destroy();\n release();\n }\n }\n );\n\n if(callback)\n callback(instance);\n\n return sub;\n });\n\n useComponentLifecycle(hook);\n usePeerContext(hook.source);\n\n return hook.proxy;\n}","import { Model } from './model';\nimport { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertySymbols, getPrototypeOf, values } from './util';\n\nexport type Collection =\n | Array<Model | typeof Model>\n | BunchOf<Model | typeof Model>;\n\nexport class Lookup {\n private table = new Map<typeof Model, 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: typeof Model){\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: typeof Model){\n return (this as any)[this.key(T)];\n }\n \n public push(I: Model | typeof Model | Collection){\n const next = create(this) as this;\n\n if(I instanceof Model || typeof I == \"function\")\n next.register(I);\n else\n for(const i of values(I))\n next.register(i);\n\n return next;\n }\n\n public register(I: Model | typeof Model){\n let writable = true;\n let T: typeof Model;\n\n if(I instanceof Model){\n T = I.constructor as any;\n writable = false;\n }\n else {\n T = I;\n I = I.create();\n }\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 return I;\n }\n\n public pop(){\n for(const key of getOwnPropertySymbols(this)){\n const entry = getOwnPropertyDescriptor(this, key)!;\n\n if(entry.writable)\n entry.value.destroy();\n }\n }\n}","import React from 'react';\n\nimport { use, useTap } from './hooks';\nimport { issues } from './issues';\nimport { Model } from './model';\nimport { getPending } from './peer';\nimport { Collection, Lookup } from './register';\nimport { Subscriber } from './subscriber';\nimport { entries } from './util';\n\nexport const Oops = issues({\n NoProviderType: () =>\n `Provider 'of' prop must be Model, typeof Model or a collection of them.`,\n\n NothingInContext: (name) =>\n `Couldn't find ${name} in context; did you forget to use a Provider?`,\n\n BadConsumerProps: () =>\n `Provider expects either a render function, 'get' or 'has' props.`\n})\n\nexport const LookupContext = React.createContext(new Lookup());\nexport const useLookup = () => React.useContext(LookupContext);\n\nexport function useContext<T extends Class>(\n Type: T, strict?: boolean){\n\n const instance = useLookup().get(Type as any);\n\n if(!instance && strict)\n throw Oops.NothingInContext(Type.name);\n\n return instance as InstanceOf<T>;\n}\n\ninterface ConsumerProps {\n of: typeof Model;\n get?: (value: Model) => void;\n has?: (value: Model) => void;\n children?: (value: Model) => React.ReactElement<any, any> | null;\n}\n\nexport function Consumer(props: ConsumerProps){\n const { get, has, children, of: Control } = props;\n\n if(typeof children == \"function\")\n return children(useTap(useContext(Control)));\n\n const callback = has || get;\n\n if(typeof callback == \"function\")\n callback(useContext(Control, !!has));\n else\n throw Oops.BadConsumerProps()\n\n return null;\n}\n\nfunction useNewContext(\n inject?: Model | typeof Model | Collection){\n\n const from = useLookup();\n\n return React.useMemo(() => {\n if(!inject)\n throw Oops.NoProviderType();\n \n const context = from.push(inject);\n\n for(const instance of context.local)\n if(instance)\n for(const apply of getPending(instance))\n apply(context)\n\n return context;\n }, []);\n}\n\nfunction useAppliedProps(within: Lookup, props: {}){\n const update = React.useMemo(() => {\n const targets = within.local;\n\n return function integrate(props: {}){\n for(const [key, value] of entries(props))\n if(key != \"of\" && key != \"children\")\n for(const into of targets)\n if(into && key in into)\n (into as any)[key] = value;\n };\n }, []);\n\n update(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 new Subscriber(targets[0], () => 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}\n\ninterface ProvideProps {\n of?: typeof Model | Model | Collection;\n children: React.ReactNode | ((instance?: any) => React.ReactNode);\n}\n\nexport function Provider(props: ProvideProps){\n const context = useNewContext(props.of);\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}","import { child } from './attach';\nimport { useLookup } from './context';\nimport { issues } from './issues';\nimport { Model, Stateful } from './model';\nimport { Lookup } from './register';\nimport { Singleton } from './singleton';\n\nexport const Oops = issues({\n CantAttachGlobal: (parent, child) =>\n `Singleton '${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\ntype Peer = typeof Model | typeof Singleton;\ntype ApplyPeer = (context: Lookup) => void;\ntype PeerCallback<T extends Peer> = (instance: InstanceOf<T> | undefined) => void | boolean;\n\nconst PendingContext = new WeakMap<Stateful, ApplyPeer[]>();\nconst ContextWasUsed = new WeakMap<Model, boolean>();\n\nexport function tap<T extends Peer>(\n type: T, argument?: boolean | PeerCallback<T>){\n\n return child(\n function tap(key){\n return {\n get: pendingAccess(this.subject, type, key, argument)\n }\n }\n )\n};\n\nexport function pendingAccess<T extends Peer>(\n from: Stateful,\n type: T,\n key: string,\n argument?: boolean | PeerCallback<T>){\n\n if(\"set\" in type)\n return () => type.get() as InstanceOf<T>;\n\n if(\"set\" in from.constructor)\n throw Oops.CantAttachGlobal(from, type.name);\n\n let instance: InstanceOf<T> | undefined;\n\n getPending(from).push(context => {\n 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, from, key);\n })\n\n return () => instance;\n}\n\nexport function 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\nexport function getPending(subject: Stateful){\n let pending = PendingContext.get(subject);\n\n if(!pending)\n PendingContext.set(subject, pending = []);\n\n return pending;\n}","import * as Computed from './compute';\nimport { Controller } from './controller';\nimport { apply } from './instruction';\nimport { issues } from './issues';\nimport { getController, Model, Stateful } from './model';\nimport { pendingAccess } from './peer';\nimport { pendingValue } from './suspense';\nimport { createValueEffect, defineLazy, defineProperty, setAlias } from './util';\n\nexport const Oops = issues({\n DuplicateAction: (key) =>\n `Invoked action ${key} but one is already active.`,\n\n BadComputedSource: (model, property, got) =>\n `Bad from-instruction provided to ${model}.${property}. Expects an arrow-function or a Model as source. Got ${got}.`,\n\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\nfunction createRef(\n this: Controller,\n key: string,\n cb?: AssignCallback<any>){\n\n const refObjectFunction =\n this.setter(key, cb && createValueEffect(cb));\n\n defineProperty(refObjectFunction, \"current\", {\n set: refObjectFunction,\n get: () => this.state[key]\n })\n\n return refObjectFunction;\n}\n\nexport function ref<T>(\n arg?: AssignCallback<T> | Model){\n\n return apply<{ current: T }>(\n function ref(key){\n let value = {};\n\n if(typeof arg == \"object\"){\n const source = getController(arg);\n \n for(const key in source.state)\n defineLazy(value, key, createRef.bind(source, key));\n }\n else \n value = createRef.call(this, key, arg);\n\n return { value };\n }\n )\n}\n\nexport function act<T extends Async>(task: T): T {\n return apply(\n function act(key){\n let pending = false;\n\n const invoke = (...args: any[]) => {\n if(pending)\n return Promise.reject(\n Oops.DuplicateAction(key)\n )\n\n pending = true;\n this.update(key);\n\n return new Promise(res => {\n res(task.apply(this.subject, args));\n }).finally(() => {\n pending = false;\n this.update(key);\n })\n };\n\n this.state[key] = undefined;\n\n setAlias(invoke, `run ${key}`);\n defineProperty(invoke, \"active\", {\n get: () => pending\n })\n\n return {\n value: invoke,\n writable: false\n };\n }\n )\n}\n\ntype ComputeFunction<T, O = any> = (this: O, on: O) => T;\ntype ComputeFactory<T> = (key: string) => ComputeFunction<T>;\ntype ComputeGetter = (controller: Controller, key: string) => any;\n\nexport function from<T, R = T>(\n source: ComputeFactory<T> | Stateful,\n setter?: ComputeFunction<T>,\n argument?: boolean | ComputeGetter): R {\n\n return apply(\n function from(key){\n let getSource: () => Controller;\n const { subject } = this;\n const getter = argument === true\n ? pendingValue\n : argument || undefined;\n\n // Easy mistake, using a peer, will always be unresolved.\n if(typeof source == \"symbol\")\n throw Oops.PeerNotAllowed(subject, key);\n\n // replace source controller in-case different\n if(typeof source == \"object\")\n getSource = () => getController(source);\n\n // specifically an arrow function (getter factory)\n else if(!source.prototype){\n setter = source.call(subject, key);\n getSource = () => this;\n }\n\n // is a peer Model (constructor)\n else if(Model.isTypeof(source))\n getSource = pendingAccess(subject, source, key, true);\n\n // Regular function is too ambiguous so not allowed.\n else\n throw Oops.BadComputedSource(subject, key, source);\n\n Computed.prepare(this, key, getSource, setter!, getter);\n }\n )\n}","import { set } from './assign';\nimport { Controller } from './controller';\nimport { from } from './instructions';\nimport { issues } from './issues';\nimport { Model } from './model';\n\nexport const Oops = issues({\n ValueNotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n})\n\ntype ComputeFunction<T, O = any> = (this: O, on: O) => T;\n\n/* deprecated - ignore coverage */\n/* istanbul ignore next */\nexport function pending<T = void>(\n source: (() => Promise<T>) | Model | typeof Model,\n compute?: ComputeFunction<T>){\n\n if(source === undefined)\n return set();\n\n if(typeof source == \"function\" && !source.prototype)\n return set(source as any);\n\n return from(source as any, compute, true);\n}\n\n/**\n * Get value, suspend instead if undefined.\n * \n * Throws suspense promise also interpretable as an error.\n * React could handle it but other contexts probably not.\n */\nexport function pendingValue<T = any>(\n via: Controller, key: string): T {\n\n const value = via.state[key];\n\n if(value === undefined)\n throw suspend(via, key);\n\n return value;\n}\n\nexport function pendingFactory(\n via: Controller,\n key: string,\n fn: (key: string, subject: unknown) => any){\n\n const { subject, state } = via;\n let waiting: Promise<any> | undefined;\n let error: any;\n\n return () => {\n if(waiting)\n throw waiting;\n\n if(error)\n throw error;\n\n if(key in state)\n return state[key];\n\n let output;\n\n try {\n output = fn.call(subject, key, subject);\n }\n catch(err){\n throw error = err;\n }\n\n if(output instanceof Promise){\n const issue =\n Oops.ValueNotReady(subject, key);\n\n output\n .catch(err => error = err)\n .then(out => state[key] = out)\n .finally(() => waiting = undefined)\n\n throw waiting = Object.assign(output, {\n message: issue.message,\n stack: issue.stack\n });\n }\n else {\n return state[key] = output;\n }\n }\n}\n\ntype Suspense<T = any> = Promise<T> & Error;\n\nexport function suspend(\n source: Controller, key: string): Suspense {\n\n const error =\n Oops.ValueNotReady(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[key] !== undefined){\n release();\n resolve();\n }\n }\n });\n });\n\n return Object.assign(promise, {\n toString: () => String(error),\n name: \"Suspense\",\n message: error.message,\n stack: error.stack\n });\n}","import { Controller } from './controller';\nimport { apply } from './instruction';\nimport { issues } from './issues';\nimport { pendingFactory, pendingValue } from './suspense';\nimport { createValueEffect, defineProperty } from './util';\n\nexport const Oops = issues({\n NonOptional: (Parent, key) => \n `Property ${Parent}.${key} is marked as required.`,\n\n BadFactory: () =>\n `Set instruction can only accept a factory or undefined.`,\n\n FactoryFailed: (model, key) =>\n `Generating initial value for ${model}.${key} failed.`\n})\n\nexport function lazy<T>(value: T): T {\n return apply(\n function lazy(key){\n const source = this.subject as any;\n\n source[key] = value;\n defineProperty(this.state, key, {\n get: () => source[key]\n });\n }\n );\n}\n\nfunction set(\n factory?: (key: string, subject: unknown) => any,\n argument?: Controller.OnValue | boolean): any { \n\n return apply(\n function set(key){\n let set;\n let get: () => void;\n\n const required =\n argument === true || argument === undefined;\n\n if(factory === undefined)\n get = () => pendingValue(this, key);\n\n else if(typeof factory !== \"function\")\n throw Oops.BadFactory();\n\n else {\n get = pendingFactory(this, key, factory);\n\n if(required)\n try {\n get();\n }\n catch(err){\n if(err instanceof Promise)\n void 0;\n else {\n Oops.FactoryFailed(this.subject, key).warn();\n throw err;\n }\n }\n }\n\n if(typeof argument == \"function\")\n set = createValueEffect(argument);\n else\n set = (value: any) => {\n if(value === undefined && required)\n throw Oops.NonOptional(this.subject, key);\n }\n \n return { set, get }\n }\n )\n}\n\nfunction on(initial: any, onUpdate: Controller.OnValue){\n return set(initial && (() => initial), onUpdate)\n}\n\nexport {\n on,\n set,\n set as memo\n}","import { useContext } from './context';\nimport { useActive, useComputed, useModel, useNew, usePassive, useTag, useTap } from './hooks';\nimport { Key, KeyFactory } from './lifecycle';\nimport { Model } from './model';\n\nexport class MVC extends Model {\n tap(path?: string | Function, expect?: boolean){\n return useTap(this, path, expect);\n }\n\n tag(id?: Key | KeyFactory<this>){\n return useTag(this, id);\n }\n\n use(callback?: (instance: Model) => void){\n return useNew(this, callback);\n }\n\n static new(callback?: (instance: Model) => void){\n return usePassive(this, callback);\n }\n\n static get(key?: boolean | string){\n const instance = useContext(this, key !== false);\n \n return (\n typeof key == \"string\" ?\n (instance as any)[key] :\n instance\n )\n }\n\n static tap(key?: string, expect?: boolean): any {\n return this.get().tap(key, expect);\n }\n\n static tag(id?: Key | ((target: Model) => Key | undefined)){\n return this.get().tag(id);\n }\n\n static use(callback?: (instance: Model) => void){\n return useModel(this, callback);\n }\n\n static uses(props: BunchOf<any>, only?: string[]){\n return this.use(instance => {\n instance.import(props, only);\n })\n }\n\n static using(props: BunchOf<any>, only?: string[]){\n const instance = this.use();\n instance.import(props, only);\n return instance;\n }\n\n static meta(path: string | Function, expect?: boolean): any {\n return typeof path == \"function\"\n ? useComputed(this, path, expect)\n : useActive(this, path, expect)\n }\n}","import { issues } from './issues';\nimport { MVC } from './mvc';\n\nexport const Oops = issues({\n GlobalDoesNotExist: (name) =>\n `Tried to access singleton ${name}, but none exist! Did you forget to initialize?\\nCall ${name}.create() before attempting to access, or consider using ${name}.use() instead.`,\n \n GlobalExists: (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<typeof Singleton, Singleton>();\n\nexport class Singleton extends MVC {\n static create<T extends Class>(\n this: T, ...args: any[]){\n\n const Type: typeof Singleton = this as any;\n\n if(Active.has(Type))\n throw Oops.GlobalExists(this.name);\n\n const instance = super.create(...args);\n\n Active.set(Type, instance);\n\n return instance as InstanceOf<T>;\n }\n\n static set<T extends typeof Singleton>(\n this: T, updates: Partial<InstanceOf<T>>){\n\n const instance = Active.get(this) || this.create();\n instance.import(updates);\n return instance.update();\n }\n\n static get(arg?: boolean | string){\n const instance = Active.get(this);\n\n if(!instance && arg !== false)\n throw Oops.GlobalDoesNotExist(this.name);\n\n return (\n typeof arg == \"string\" ?\n (instance as any)[arg] :\n instance\n )\n }\n\n static reset(){\n const current = Active.get(this);\n\n if(current)\n current.destroy();\n }\n\n destroy(){\n super.destroy();\n Active.delete(this.constructor as any);\n }\n}"],"names":["Oops","Computed.flush","ensure","Computed.ensure","use","Computed.prepare"],"mappings":"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"}
|