@expressive/mvc 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +4 -11
- package/lib/index.esm.js +29 -34
- package/lib/index.js +28 -33
- package/package.json +1 -1
- package/lib/index.esm.js.map +0 -1
- package/lib/index.js.map +0 -1
package/lib/index.d.ts
CHANGED
|
@@ -484,15 +484,6 @@ declare class MVC extends Model {
|
|
|
484
484
|
static meta<T, M extends Class>(this: M, from: (this: M, state: M) => T, expect?: boolean): T;
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
-
declare class Lookup {
|
|
488
|
-
private table;
|
|
489
|
-
get local(): Model[];
|
|
490
|
-
private key;
|
|
491
|
-
get(T: Model.Type): any;
|
|
492
|
-
add(input: Model.Type | Model): void;
|
|
493
|
-
push(): this;
|
|
494
|
-
pop(): void;
|
|
495
|
-
}
|
|
496
487
|
declare function useContext<T extends Model>(Type: Model.Type<T>, required: false): T | undefined;
|
|
497
488
|
declare function useContext<T extends Model>(Type: Model.Type<T>, required?: boolean): T;
|
|
498
489
|
|
|
@@ -557,17 +548,19 @@ declare namespace Provider {
|
|
|
557
548
|
type Instance<E> = E extends Class ? InstanceType<E> : E extends Model ? E : never;
|
|
558
549
|
type NormalProps<E, I = Instance<E>> = {
|
|
559
550
|
for: E;
|
|
551
|
+
fallback?: React.ReactNode;
|
|
560
552
|
children?: React.ReactNode | ((instance: I) => React.ReactNode);
|
|
561
553
|
and?: Model.Compat<I>;
|
|
562
554
|
};
|
|
563
555
|
type MultipleProps<T extends Item> = {
|
|
564
556
|
for: Multiple<T>;
|
|
565
|
-
|
|
557
|
+
fallback?: React.ReactNode;
|
|
558
|
+
children?: React.ReactNode;
|
|
566
559
|
and?: Model.Compat<Instance<T>>;
|
|
567
560
|
};
|
|
568
561
|
type Props<T extends Item> = MultipleProps<T> | NormalProps<T>;
|
|
569
562
|
}
|
|
570
|
-
declare function Provider<T extends Provider.Item>(props: Provider.Props<T>):
|
|
563
|
+
declare function Provider<T extends Provider.Item>(props: Provider.Props<T>): JSX.Element;
|
|
571
564
|
|
|
572
565
|
declare class Global extends MVC {
|
|
573
566
|
static global: boolean;
|
package/lib/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useMemo } from 'react';
|
|
1
|
+
import React, { useState, useMemo, Suspense } from 'react';
|
|
2
2
|
|
|
3
3
|
const { assign, create, defineProperties, defineProperty, entries, getPrototypeOf, getOwnPropertyNames, getOwnPropertyDescriptor, getOwnPropertySymbols, values } = Object;
|
|
4
4
|
function unique(array) {
|
|
@@ -770,13 +770,13 @@ function run(task) {
|
|
|
770
770
|
const Oops$8 = issues({
|
|
771
771
|
NotReady: (model, key) => `Value ${model}.${key} value is not yet available.`
|
|
772
772
|
});
|
|
773
|
-
function factoryMode(self,
|
|
773
|
+
function factoryMode(self, value, key, required) {
|
|
774
774
|
const { subject, state } = self;
|
|
775
775
|
let pending;
|
|
776
776
|
let error;
|
|
777
|
-
if (
|
|
777
|
+
if (value instanceof Promise) {
|
|
778
778
|
state.set(key, undefined);
|
|
779
|
-
pending =
|
|
779
|
+
pending = value
|
|
780
780
|
.catch(err => error = err)
|
|
781
781
|
.then(val => {
|
|
782
782
|
state.set(key, val);
|
|
@@ -787,7 +787,8 @@ function factoryMode(self, output, key, required) {
|
|
|
787
787
|
self.update(key);
|
|
788
788
|
});
|
|
789
789
|
}
|
|
790
|
-
|
|
790
|
+
else
|
|
791
|
+
state.set(key, value);
|
|
791
792
|
const suspend = () => {
|
|
792
793
|
if (required === false)
|
|
793
794
|
return undefined;
|
|
@@ -1182,9 +1183,11 @@ class Lookup {
|
|
|
1182
1183
|
let writable = true;
|
|
1183
1184
|
let T;
|
|
1184
1185
|
let I;
|
|
1186
|
+
if (MVC.isTypeof(input) && input.global)
|
|
1187
|
+
return input.new();
|
|
1185
1188
|
if (typeof input == "function") {
|
|
1186
1189
|
T = input;
|
|
1187
|
-
I = input
|
|
1190
|
+
I = new input();
|
|
1188
1191
|
}
|
|
1189
1192
|
else {
|
|
1190
1193
|
I = input;
|
|
@@ -1201,10 +1204,7 @@ class Lookup {
|
|
|
1201
1204
|
});
|
|
1202
1205
|
T = getPrototypeOf(T);
|
|
1203
1206
|
} while (T !== Model);
|
|
1204
|
-
|
|
1205
|
-
if (value instanceof Model)
|
|
1206
|
-
this.add(value);
|
|
1207
|
-
});
|
|
1207
|
+
return I;
|
|
1208
1208
|
}
|
|
1209
1209
|
push() {
|
|
1210
1210
|
return create(this);
|
|
@@ -1492,11 +1492,10 @@ const Oops = issues({
|
|
|
1492
1492
|
});
|
|
1493
1493
|
function Provider(props) {
|
|
1494
1494
|
const context = useNewContext(props.for, props.and);
|
|
1495
|
-
const render = props.children;
|
|
1496
1495
|
React.useLayoutEffect(() => () => context.pop(), []);
|
|
1497
|
-
return React.createElement(LookupContext.Provider, { value: context },
|
|
1498
|
-
?
|
|
1499
|
-
:
|
|
1496
|
+
return (React.createElement(LookupContext.Provider, { value: context }, props.fallback === false
|
|
1497
|
+
? props.children
|
|
1498
|
+
: (React.createElement(Suspense, { fallback: props.fallback || null }, props.children))));
|
|
1500
1499
|
}
|
|
1501
1500
|
function useNewContext(include, assign) {
|
|
1502
1501
|
const ambient = useLookup();
|
|
@@ -1504,35 +1503,32 @@ function useNewContext(include, assign) {
|
|
|
1504
1503
|
if (!include)
|
|
1505
1504
|
throw Oops.NoType();
|
|
1506
1505
|
const next = ambient.push();
|
|
1506
|
+
function register(T) {
|
|
1507
|
+
const i = next.add(T);
|
|
1508
|
+
if (assign)
|
|
1509
|
+
assignWeak(i, assign);
|
|
1510
|
+
Control.for(i).state.forEach(value => {
|
|
1511
|
+
if (Parent.get(value) === i)
|
|
1512
|
+
next.add(value);
|
|
1513
|
+
});
|
|
1514
|
+
}
|
|
1507
1515
|
if (include instanceof Model || typeof include == "function")
|
|
1508
|
-
|
|
1516
|
+
register(include);
|
|
1509
1517
|
else
|
|
1510
|
-
values(include).forEach(
|
|
1518
|
+
values(include).forEach(register);
|
|
1511
1519
|
for (const instance of next.local)
|
|
1512
|
-
if (instance)
|
|
1513
|
-
if (assign)
|
|
1514
|
-
assignWeak(instance, assign);
|
|
1520
|
+
if (instance)
|
|
1515
1521
|
for (const apply of getPending(instance))
|
|
1516
1522
|
apply(next);
|
|
1517
|
-
}
|
|
1518
1523
|
return next;
|
|
1519
1524
|
}, []);
|
|
1520
1525
|
if (assign)
|
|
1521
|
-
|
|
1522
|
-
|
|
1526
|
+
context.local.forEach(i => {
|
|
1527
|
+
if (i && !Parent.has(i))
|
|
1528
|
+
assignWeak(i, assign);
|
|
1529
|
+
});
|
|
1523
1530
|
return context;
|
|
1524
1531
|
}
|
|
1525
|
-
function RenderFunction(props) {
|
|
1526
|
-
const hook = use(refresh => {
|
|
1527
|
-
const targets = props.context.local;
|
|
1528
|
-
if (targets.length == 1)
|
|
1529
|
-
return Control.for(targets[0]).subscribe(() => refresh);
|
|
1530
|
-
return {};
|
|
1531
|
-
});
|
|
1532
|
-
if (hook.commit)
|
|
1533
|
-
React.useLayoutEffect(hook.commit, []);
|
|
1534
|
-
return props.render(hook.proxy);
|
|
1535
|
-
}
|
|
1536
1532
|
function assignWeak(into, from) {
|
|
1537
1533
|
for (const K in from)
|
|
1538
1534
|
if (K in into)
|
|
@@ -1582,4 +1578,3 @@ const Debug = {
|
|
|
1582
1578
|
};
|
|
1583
1579
|
|
|
1584
1580
|
export { Consumer, Debug, Global, MVC, MVC as Model, Provider, add, MVC as default, get, has, ref, run, set, tap, use$1 as use, useContext, useNew, useTap };
|
|
1585
|
-
//# sourceMappingURL=index.esm.js.map
|
package/lib/index.js
CHANGED
|
@@ -778,13 +778,13 @@ function run(task) {
|
|
|
778
778
|
const Oops$8 = issues({
|
|
779
779
|
NotReady: (model, key) => `Value ${model}.${key} value is not yet available.`
|
|
780
780
|
});
|
|
781
|
-
function factoryMode(self,
|
|
781
|
+
function factoryMode(self, value, key, required) {
|
|
782
782
|
const { subject, state } = self;
|
|
783
783
|
let pending;
|
|
784
784
|
let error;
|
|
785
|
-
if (
|
|
785
|
+
if (value instanceof Promise) {
|
|
786
786
|
state.set(key, undefined);
|
|
787
|
-
pending =
|
|
787
|
+
pending = value
|
|
788
788
|
.catch(err => error = err)
|
|
789
789
|
.then(val => {
|
|
790
790
|
state.set(key, val);
|
|
@@ -795,7 +795,8 @@ function factoryMode(self, output, key, required) {
|
|
|
795
795
|
self.update(key);
|
|
796
796
|
});
|
|
797
797
|
}
|
|
798
|
-
|
|
798
|
+
else
|
|
799
|
+
state.set(key, value);
|
|
799
800
|
const suspend = () => {
|
|
800
801
|
if (required === false)
|
|
801
802
|
return undefined;
|
|
@@ -1190,9 +1191,11 @@ class Lookup {
|
|
|
1190
1191
|
let writable = true;
|
|
1191
1192
|
let T;
|
|
1192
1193
|
let I;
|
|
1194
|
+
if (MVC.isTypeof(input) && input.global)
|
|
1195
|
+
return input.new();
|
|
1193
1196
|
if (typeof input == "function") {
|
|
1194
1197
|
T = input;
|
|
1195
|
-
I = input
|
|
1198
|
+
I = new input();
|
|
1196
1199
|
}
|
|
1197
1200
|
else {
|
|
1198
1201
|
I = input;
|
|
@@ -1209,10 +1212,7 @@ class Lookup {
|
|
|
1209
1212
|
});
|
|
1210
1213
|
T = getPrototypeOf(T);
|
|
1211
1214
|
} while (T !== Model);
|
|
1212
|
-
|
|
1213
|
-
if (value instanceof Model)
|
|
1214
|
-
this.add(value);
|
|
1215
|
-
});
|
|
1215
|
+
return I;
|
|
1216
1216
|
}
|
|
1217
1217
|
push() {
|
|
1218
1218
|
return create(this);
|
|
@@ -1500,11 +1500,10 @@ const Oops = issues({
|
|
|
1500
1500
|
});
|
|
1501
1501
|
function Provider(props) {
|
|
1502
1502
|
const context = useNewContext(props.for, props.and);
|
|
1503
|
-
const render = props.children;
|
|
1504
1503
|
React__default["default"].useLayoutEffect(() => () => context.pop(), []);
|
|
1505
|
-
return React__default["default"].createElement(LookupContext.Provider, { value: context },
|
|
1506
|
-
?
|
|
1507
|
-
:
|
|
1504
|
+
return (React__default["default"].createElement(LookupContext.Provider, { value: context }, props.fallback === false
|
|
1505
|
+
? props.children
|
|
1506
|
+
: (React__default["default"].createElement(React.Suspense, { fallback: props.fallback || null }, props.children))));
|
|
1508
1507
|
}
|
|
1509
1508
|
function useNewContext(include, assign) {
|
|
1510
1509
|
const ambient = useLookup();
|
|
@@ -1512,35 +1511,32 @@ function useNewContext(include, assign) {
|
|
|
1512
1511
|
if (!include)
|
|
1513
1512
|
throw Oops.NoType();
|
|
1514
1513
|
const next = ambient.push();
|
|
1514
|
+
function register(T) {
|
|
1515
|
+
const i = next.add(T);
|
|
1516
|
+
if (assign)
|
|
1517
|
+
assignWeak(i, assign);
|
|
1518
|
+
Control.for(i).state.forEach(value => {
|
|
1519
|
+
if (Parent.get(value) === i)
|
|
1520
|
+
next.add(value);
|
|
1521
|
+
});
|
|
1522
|
+
}
|
|
1515
1523
|
if (include instanceof Model || typeof include == "function")
|
|
1516
|
-
|
|
1524
|
+
register(include);
|
|
1517
1525
|
else
|
|
1518
|
-
values(include).forEach(
|
|
1526
|
+
values(include).forEach(register);
|
|
1519
1527
|
for (const instance of next.local)
|
|
1520
|
-
if (instance)
|
|
1521
|
-
if (assign)
|
|
1522
|
-
assignWeak(instance, assign);
|
|
1528
|
+
if (instance)
|
|
1523
1529
|
for (const apply of getPending(instance))
|
|
1524
1530
|
apply(next);
|
|
1525
|
-
}
|
|
1526
1531
|
return next;
|
|
1527
1532
|
}, []);
|
|
1528
1533
|
if (assign)
|
|
1529
|
-
|
|
1530
|
-
|
|
1534
|
+
context.local.forEach(i => {
|
|
1535
|
+
if (i && !Parent.has(i))
|
|
1536
|
+
assignWeak(i, assign);
|
|
1537
|
+
});
|
|
1531
1538
|
return context;
|
|
1532
1539
|
}
|
|
1533
|
-
function RenderFunction(props) {
|
|
1534
|
-
const hook = use(refresh => {
|
|
1535
|
-
const targets = props.context.local;
|
|
1536
|
-
if (targets.length == 1)
|
|
1537
|
-
return Control.for(targets[0]).subscribe(() => refresh);
|
|
1538
|
-
return {};
|
|
1539
|
-
});
|
|
1540
|
-
if (hook.commit)
|
|
1541
|
-
React__default["default"].useLayoutEffect(hook.commit, []);
|
|
1542
|
-
return props.render(hook.proxy);
|
|
1543
|
-
}
|
|
1544
1540
|
function assignWeak(into, from) {
|
|
1545
1541
|
for (const K in from)
|
|
1546
1542
|
if (K in into)
|
|
@@ -1607,4 +1603,3 @@ exports.use = use$1;
|
|
|
1607
1603
|
exports.useContext = useContext;
|
|
1608
1604
|
exports.useNew = useNew;
|
|
1609
1605
|
exports.useTap = useTap;
|
|
1610
|
-
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
package/lib/index.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/helper/object.ts","../src/helper/issues.ts","../src/suspense.ts","../src/instruction/get.compute.ts","../src/effect.ts","../src/event.ts","../src/subscriber.ts","../src/model.ts","../src/control.ts","../src/children.ts","../src/instruction/add.ts","../src/instruction/run.ts","../src/instruction/get.factory.ts","../src/instruction/get.ts","../src/instruction/ref.ts","../src/instruction/set.ts","../src/instruction/use.keyed.ts","../src/instruction/use.ts","../src/instruction/has.ts","../src/react/context.ts","../src/react/tap.ts","../src/react/use.ts","../src/react/useNew.ts","../src/react/useValue.ts","../src/react/useTap.ts","../src/react/mvc.ts","../src/react/consumer.ts","../src/react/provider.ts","../src/react/global.ts","../src/debug.ts"],"sourcesContent":["const {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyNames,\n getOwnPropertyDescriptor,\n getOwnPropertySymbols,\n values\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n values\n}\n\nexport function unique<T>(array: T[]){\n return Array.from(new Set(array));\n}","declare namespace Issue {\n export type Variable = {} | string | number | boolean | null;\n export type Variables<T> = T extends (...args: infer T) => any ? T : never;\n\n export type Messages = {\n [named: string]: (...args: Variable[]) => string;\n }\n\n export type Output<M extends Messages> = {\n readonly [P in keyof M]: (...args: Variables<M[P]>) => Issue;\n }\n}\n\nexport class Issue extends Error {\n // drop first line (error factory) in stack trace.\n stack = this.stack.replace(/\\n.+/, \"\") as string;\n\n warn(){\n console.warn(this.message);\n }\n}\n\nexport function issues<M extends Issue.Messages>(register: M){\n const Library = {} as any;\n\n for(const name in register)\n Library[name] = (...args: Issue.Variable[]) => \n new Issue(register[name].apply(null, args));\n\n return Library as Issue.Output<M>;\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { assign } from './helper/object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`,\n})\n\ntype Suspense<T = any> = Promise<T> & Error;\n\nexport function suspend(\n source: Control, key: string): Suspense {\n\n const error = Oops.NotReady(source.subject, key);\n\n const promise = new Promise<void>(resolve => {\n const release = source.addListener(forKey => {\n if(forKey == key)\n return () => {\n if(source.state.get(key) !== undefined){\n release();\n resolve();\n }\n }\n });\n });\n\n return assign(promise, {\n toString: () => String(error),\n name: \"Suspense\",\n message: error.message,\n stack: error.stack\n });\n}\n\nexport function mayRetry(fn: () => any): any {\n const retry = (err: unknown) => {\n if(err instanceof Promise)\n return err.then(compute);\n else\n throw err;\n }\n\n const compute = (): any => {\n try {\n const output = fn();\n\n return output instanceof Promise\n ? output.catch(retry)\n : output;\n }\n catch(err){\n return retry(err);\n }\n }\n\n return compute();\n}","import { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { Callback } from '../helper/types';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\n\nimport type { get } from './get';\n\nexport const Oops = issues({\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\nconst INFO = new WeakMap<Callback, string>();\nconst KEYS = new WeakMap<Control, Set<Callback>>();\nconst ORDER = new WeakMap<Control, Map<Callback, number>>();\n\nexport function computeMode(\n self: Control,\n source: Control,\n setter: get.Function<any, any>,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let sub: Subscriber;\n let order = ORDER.get(self)!;\n let pending = KEYS.get(self)!\n\n if(!order)\n ORDER.set(self, order = new Map());\n\n if(!pending)\n KEYS.set(self, pending = new Set());\n\n const compute = (initial: boolean) => {\n try {\n return setter.call(sub.proxy, sub.proxy);\n }\n catch(err){\n Oops.Failed(subject, key, initial).warn();\n throw err;\n }\n }\n\n const refresh = () => {\n let value;\n\n try {\n value = compute(false);\n }\n catch(e){\n console.error(e);\n }\n finally {\n if(state.get(key) !== value){\n state.set(key, value);\n self.update(key);\n return value;\n }\n }\n }\n\n const create = () => {\n sub = source.subscribe((_, source) => {\n if(source !== self)\n refresh();\n else\n pending.add(refresh);\n });\n\n sub.watch.set(key, false);\n\n try {\n const value = compute(true);\n state.set(key, value);\n return value;\n }\n catch(e){\n throw e;\n }\n finally {\n sub.commit();\n order.set(refresh, order.size);\n }\n }\n\n INFO.set(refresh, key);\n\n return () => {\n if(pending.has(refresh)){\n pending.delete(refresh)\n refresh();\n }\n\n const value = sub ? state.get(key) : create();\n\n if(value === undefined && required)\n throw suspend(self, key);\n\n return value;\n }\n}\n\nexport function flush(control: Control){\n const pending = KEYS.get(control);\n\n if(!pending || !pending.size)\n return;\n\n const priority = ORDER.get(control)!;\n\n while(pending.size){\n let compute!: Callback;\n\n for(const item of pending)\n if(!compute || priority.get(item)! < priority.get(compute)!)\n compute = item;\n\n pending.delete(compute);\n\n const key = INFO.get(compute)!;\n\n if(!control.frame.has(key))\n compute();\n }\n\n pending.clear();\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { Callback } from './helper/types';\nimport { Model } from './model';\nimport { mayRetry } from './suspense';\n\nexport const Oops = issues({\n BadCallback: () =>\n `Callback for effect-callback may only return a function.`\n})\n\nexport function createEffect<T extends Model>(\n model: T,\n callback: Model.Effect<T>,\n keys: Model.Event<T>[]){\n\n return Control.for(model, control => {\n let unSet: Callback | Promise<any> | void;\n let busy = false;\n\n function effect(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet();\n \n unSet = callback.call(this, value);\n \n if(unSet instanceof Promise)\n unSet = undefined;\n \n if(unSet && typeof unSet !== \"function\")\n throw Oops.BadCallback()\n }\n\n function invoke(){\n if(busy)\n return;\n\n const output = mayRetry(() => {\n effect.call(model, model);\n })\n\n if(output instanceof Promise){\n output.finally(() => busy = false);\n busy = true;\n }\n }\n\n if(Array.isArray(keys)){\n invoke();\n\n return control.addListener(key => {\n if(key === null){\n if(!keys.length)\n invoke();\n }\n else if(keys.includes(key))\n return invoke;\n });\n }\n\n const sub = control.subscribe(() => invoke);\n\n model = sub.proxy;\n invoke();\n\n return sub.commit();\n });\n}\n\nexport type AssignCallback<T> =\n (this: any, argument: T, thisArg: any) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n\nexport function createValueEffect<T = any>(\n callback: AssignCallback<T>){\n\n let unSet: ((next: T) => void) | undefined;\n\n return function(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet(value);\n\n const out = callback.call(this, value, this);\n\n if(typeof out == \"boolean\")\n return out;\n\n if(!out || out instanceof Promise)\n return;\n\n if(typeof out == \"function\")\n unSet = out;\n else\n throw Oops.BadCallback()\n }\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { Model } from './model';\n\nexport const Oops = issues({\n Timeout: (keys, timeout) => \n `No update seen for [${keys}] within ${timeout}.`,\n\n KeysExpected: (key) =>\n `Key \"${key}\" was expected in current update.`,\n\n StrictUpdate: () => \n `Expected update but none in progress.`,\n\n StrictNoUpdate: () =>\n `Update is not expected but one is in progress!`\n});\n\nexport function addEventListener<T extends Model, P extends Model.Event<T>> (\n source: T,\n arg1: P | P[],\n arg2: (this: T, keys: Model.Event<T>[]) => void,\n arg3?: boolean){\n\n if(typeof arg1 == \"string\")\n arg1 = [arg1];\n\n return Control.for(source, control => {\n for(const key of arg1)\n try { void (source as any)[key] }\n catch(e){}\n\n const removeListener =\n control.addListener(key => {\n if(!key && !arg1.length)\n arg2.call(source, []);\n \n if(arg1.includes(key as P)){\n if(arg3)\n removeListener();\n\n return arg2.bind(source);\n }\n });\n\n return removeListener;\n });\n}\n\nexport function awaitUpdate<T extends Model, P extends Model.Event<T>>(\n source: T,\n arg1?: boolean | null | P | P[],\n arg2?: number){\n\n const single = typeof arg1 == \"string\";\n const keys =\n typeof arg1 == \"string\" ? [ arg1 ] :\n typeof arg1 == \"object\" ? arg1 : \n undefined;\n\n return new Promise<any>((resolve, reject) => {\n const timeout = (message: string) => {\n const k = keys ? keys.join(\", \") : \"any\";\n\n removeListener();\n reject(Oops.Timeout(k, message));\n }\n\n const removeListener = Control.for(source, control => {\n const pending = control.frame;\n\n if(keys === null){\n if(pending.size)\n reject(Oops.StrictNoUpdate())\n else\n resolve(null);\n\n return;\n }\n\n if(keys){\n if(keys.length){\n if(arg2 === 0 && single && !pending.has(keys[0])){\n reject(Oops.KeysExpected(keys[0]));\n return;\n }\n else for(const key of keys)\n try { void (source as any)[key] }\n catch(e){}\n }\n }\n else if(!pending.size && arg1 === true || arg2 === 0){\n reject(Oops.StrictUpdate());\n return;\n }\n else\n control.waiting.add(resolve);\n\n return control.addListener(key => {\n if(!key){\n if(keys && !keys.length)\n resolve([]);\n else\n timeout(`lifetime of ${source}`);\n }\n else if(!keys || keys.includes(key as P)){\n removeListener();\n return keys =>\n resolve(single ? control.state.get(key) : keys)\n }\n });\n })\n\n if(arg2 && typeof arg2 == \"number\")\n setTimeout(() => timeout(`${arg2}ms`), arg2);\n });\n}","import { Control } from './control';\nimport { create, defineProperty, getOwnPropertyNames } from './helper/object';\nimport { Model } from './model';\n\nimport type { Callback } from './helper/types';\n\nconst REGISTER = new WeakMap<{}, Subscriber>();\n\ntype Listener = {\n commit(): void;\n release(): void;\n}\n\ndeclare namespace Subscriber {\n type OnEvent<T = any> = (key: Model.Event<T> | null, source: Control) => Callback | void;\n}\n\nclass Subscriber <T extends {} = any> {\n static get<T extends {}>(from: T){\n return REGISTER.get(from) as Subscriber<T> | undefined;\n }\n\n public proxy!: T;\n public release!: Callback;\n public latest?: Model.Event<T>[];\n\n public active = false;\n public dependant = new Set<Listener>();\n public watch = new Map<any, boolean | (() => true | void)>();\n\n constructor(\n public parent: Control<T>,\n public onUpdate: Subscriber.OnEvent){\n\n const proxy = create(parent.subject);\n const reset = () => this.latest = undefined;\n\n REGISTER.set(proxy, this);\n \n defineProperty(this, \"proxy\", {\n configurable: true,\n get(){\n setTimeout(reset, 0);\n return proxy;\n }\n })\n }\n\n get using(): Model.Key<T>[] {\n return Array.from(this.watch.keys());\n }\n\n assign(apply: Model.Compat<T>, keys?: any){\n const { waiting, subject } = this.parent;\n\n this.active = false;\n\n if(typeof keys !== \"object\")\n keys = getOwnPropertyNames(subject) as Model.Key<T>[];\n\n for(const key of keys)\n if(key in apply)\n (subject as any)[key] = (apply as any)[key];\n\n waiting.add(() => this.active = true);\n }\n\n add(key: any, value?: boolean | Callback){\n if(value !== undefined)\n this.watch.set(key, value);\n else if(!this.watch.has(key))\n this.watch.set(key, true);\n }\n\n commit = () => {\n const release = this.parent.addListener(this.event);\n\n this.active = true;\n this.dependant.forEach(x => x.commit());\n\n return this.release = () => {\n this.dependant.forEach(x => x.release());\n release();\n };\n }\n\n private event = (key: Model.Event<T> | null) => {\n if(!this.active)\n return;\n\n const { parent, watch } = this;\n\n const handler = watch.get(key);\n let notify: void | Control.OnAsync;\n\n if(typeof handler == \"function\"){\n const callback = handler();\n\n if(callback === true)\n notify = this.onUpdate(key, parent);\n }\n else if(handler === true)\n notify = this.onUpdate(key, parent);\n\n if(!notify)\n return;\n\n parent.waiting.add(update => {\n this.latest = update.filter(k => watch.has(k));\n });\n parent.waiting.add(notify);\n }\n}\n\nexport { Subscriber }","import { Control } from './control';\nimport { Debug } from './debug';\nimport { createEffect } from './effect';\nimport { addEventListener, awaitUpdate } from './event';\nimport { issues } from './helper/issues';\nimport { defineProperty } from './helper/object';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback, Class, InstanceOf } from './helper/types';\n\nexport const Oops = issues({\n NoChaining: () =>\n `Then called with undefined; update promise will never catch nor supports chaining.`\n});\n\ndeclare namespace Model {\n export { Control };\n export { Subscriber };\n\n /** Including but not limited to T. */\n type Extends<T> = T | (string & Record<never, never>);\n\n export type Type<T extends Model = Model> = typeof Model & (new () => T);\n\n export type Effect<T> = (this: T, argument: T) => Callback | Promise<any> | void;\n\n /** Exotic value, actual value is contained. */\n export type Ref<T = any> = {\n (next: T): void;\n current: T | null;\n }\n\n /** Properties of T which are methods. */\n export type Methods<T> = {\n [K in keyof T]:\n T[K] extends Ref ? never :\n T[K] extends Function ? K :\n never;\n }[keyof T];\n\n type BuiltIn = keyof Model | keyof Debug<{}>;\n\n /**\n * Subset of `keyof T` which are not methods or defined by base Model U.\n * \n * **Note**: This excludes all keys which are not of type `string` (only those are managed).\n * \n * TODO: Should exclude methods\n **/\n export type Key<T> = Exclude<keyof T, BuiltIn> & string;\n\n /**\n * Including but not limited to `keyof T` which are not methods or defined by base Model.\n **/\n export type Event<T> = Extends<Key<T>>;\n\n /** Object containing managed entries found in T. */\n export type Entries<T> = { [K in Key<T>]: T[K] };\n\n /** Object comperable to data found in T. */\n export type Compat<T> = { [K in Key<T>]?: T[K] };\n\n /** Actual value stored in state. */\n export type Value<R> = R extends Ref<infer T> ? T : R;\n\n /** Actual value belonging to a managed property. */\n export type ValueOf<T extends {}, K> = K extends keyof T ? Value<T[K]> : undefined;\n\n /**\n * Values from current state of given controller.\n * \n * Differs from `Entries` as values here will drill into \"real\" values held by exotics like ref.\n */\n export type Get<T, K extends Key<T> = Key<T>> = { [P in K]: Value<T[P]> };\n\n export type Export<T, E extends Model = Model> = { [P in Key<T>]: Value<T[P]> };\n}\n\nclass Model {\n /**\n * Circular reference to `this` controller.\n * \n * Useful to obtain full reference where one has already destructured.\n */\n is!: this;\n\n constructor(){\n new Control(this);\n defineProperty(this, \"is\", { value: this });\n }\n\n on <P extends Model.Event<this>> (keys?: P | Iterable<P>, timeout?: number): Promise<P[]>;\n on <P extends Model.Event<this>> (keys: P | Iterable<P>, listener: (this: this, keys: Model.Event<this>[]) => void, once?: boolean): Callback;\n\n on (effect: Model.Effect<this>): Callback;\n on (effect: Model.Effect<this>, watch?: []): Callback;\n on (effect: Model.Effect<this>, watch?: Model.Event<this>[]): Callback;\n\n on (key?: undefined, timeout?: number): Promise<Model.Event<this>[]>;\n\n on (current?: boolean): Promise<Model.Event<this>[] | null>;\n on (current: true): Promise<Model.Event<this>[]>;\n on (current: null): Promise<null>;\n\n on <P extends Model.Event<this>> (\n arg1?: boolean | null | P | P[] | Model.Effect<this>,\n arg2?: number | P[] | ((this: this, keys: Model.Event<this>[]) => void),\n arg3?: boolean){\n\n if(typeof arg1 == \"function\")\n return createEffect(this.is, arg1, arg2 as P[]);\n\n if(typeof arg2 != \"function\")\n return awaitUpdate(this.is, arg1, arg2 as number);\n\n if(arg1)\n return addEventListener(this.is, arg1 as P | P[], arg2, arg3);\n }\n\n get(): Model.Export<this>;\n\n get <P extends Model.Key<this>> (property: P): this[P];\n get <P extends Model.Key<this>> (property: P, timeout: number): Promise<this[P]>;\n get <P extends Model.Key<this>> (property: P, onChange: true): Promise<this[P]>;\n get <P extends Model.Key<this>> (property: P, onChange: boolean): this[P] | Promise<this[P]>;\n get <P extends Model.Key<this>> (property: P, listener: (this: this, value: this[P], key: P[]) => void): Callback;\n\n get <P extends Model.Key<this>> (select: Iterable<P>): Model.Get<this, P>;\n get <P extends Model.Key<this>> (select: Iterable<P>, timeout: number): Promise<Model.Get<this, P>>;\n get <P extends Model.Key<this>> (select: Iterable<P>, onChange: true): Promise<Model.Get<this, P>>;\n get <P extends Model.Key<this>> (select: Iterable<P>, onChange: boolean): Model.Get<this, P> | Promise<Model.Get<this, P>>;\n get <P extends Model.Key<this>> (select: Iterable<P>, listener: (this: this, value: Model.Get<this, P>, key: P[]) => void): Callback;\n \n get <P extends Model.Key<this>> (\n arg1?: Iterable<P> | P,\n arg2?: Function | boolean | number){\n\n const { state } = Control.for(this);\n const extract = typeof arg1 == \"string\"\n ? () => state.get(arg1)\n : () => {\n const output = {} as any;\n\n for(const key of arg1 || state.keys())\n output[key] = state.get(key);\n\n return output as Model.Get<this, P>;\n }\n\n if(!arg1 || arg2 === undefined)\n return extract();\n\n if(typeof arg2 == \"function\")\n return this.on(arg1, () => arg2(extract()));\n\n const timeout = typeof arg2 == \"number\" ? arg2 : undefined;\n\n return this.on(arg1, timeout).then(extract);\n }\n\n set(key: Model.Event<this>): PromiseLike<readonly Model.Event<this>[]>;\n set<K extends Model.Event<this>>(key: Model.Event<this>, value: Model.ValueOf<this, K>): PromiseLike<readonly Model.Event<this>[]>;\n\n set<T extends Model.Compat<this>> (source: T, select: (keyof T)[]): PromiseLike<(keyof T)[]>;\n set<T extends Model.Compat<this>> (source: T, force?: boolean): PromiseLike<(keyof T)[]>;\n\n set(\n arg1: Model.Event<this> | Model.Compat<this>,\n arg2?: boolean | any[]): any {\n\n const control = Control.for(this);\n\n if(typeof arg1 == \"object\")\n for(const key in arg1){\n if(arg2 === true || (arg2 ? arg2.includes(key) : control.state.has(key))){\n control.state.set(key, (arg1 as any)[key]);\n control.update(key as any);\n }\n }\n\n else if(typeof arg1 == \"string\"){\n control.update(arg1 as Model.Key<this>);\n\n if(1 in arguments){\n if(control.state.has(arg1))\n control.state.set(arg1, arg2);\n\n else if(arg1 in this){\n const method = (this as any)[arg1];\n\n if(typeof method == \"function\")\n method.call(this, arg2);\n }\n }\n }\n\n return <PromiseLike<readonly Model.Event<this>[] | null>> {\n then: (callback) => {\n if(!callback)\n throw Oops.NoChaining();\n\n control.waiting.add(callback);\n }\n }\n }\n\n /** \n * Clean up side effects and mark this instance for garbage-collection.\n */\n end(){\n Control.for(this).clear();\n }\n\n /**\n * Creates a new instance of this controller.\n * \n * Beyond `new this(...)`, method will activate managed-state.\n * \n * @param args - arguments sent to constructor\n */\n static new<T extends Class>(\n this: T, ...args: ConstructorParameters<T>): InstanceOf<T> {\n\n const instance = new this(...args);\n Control.for(instance);\n return instance;\n }\n\n /**\n * Static equivalent of `x instanceof this`.\n * \n * Will determine if provided class is a subtype of this one. \n */\n static isTypeof<T extends Model.Type>(\n this: T, maybe: any): maybe is T {\n\n return (\n typeof maybe == \"function\" &&\n maybe.prototype instanceof this\n )\n }\n}\n\ndefineProperty(Model.prototype, \"toString\", {\n value(){\n return this.constructor.name;\n }\n})\n\nexport { Model }","import { setRecursive } from './children';\nimport { defineProperty, getOwnPropertyDescriptor } from './helper/object';\nimport { Instruction } from './instruction/add';\nimport { flush } from './instruction/get.compute';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback } from './helper/types';\n\nconst REGISTER = new WeakMap<{}, Control>();\nconst PENDING = new Map<symbol, Instruction.Runner<any>>();\n\ndeclare namespace Control {\n /**\n * Callback for Controller.for() static method.\n * Returned callback is forwarded.\n */\n type OnReady<T extends {}> = (control: Control<T>) => Callback | void;\n\n /**\n * Called immediately when any key is changed or emitted.\n * Returned callback is notified when update is complete.\n */\n type OnSync<T = any> = (key: Model.Event<T> | null, source: Control) => OnAsync<T> | void;\n\n /** Called at the end of an event frame with all keys affected. */\n type OnAsync<T = any> = (keys: Model.Event<T>[]) => void;\n\n // TODO: implement value type\n type OnValue<T = any> = (this: T, value: any) => boolean | void;\n}\n\nclass Control<T extends {} = any> {\n public state!: Map<any, any>;\n public frame = new Set<string>();\n public waiting = new Set<Control.OnAsync<T>>();\n public followers = new Set<Control.OnSync>();\n public latest?: Model.Event<T>[];\n\n constructor(public subject: T){\n REGISTER.set(subject, this);\n }\n\n subscribe(callback: Subscriber.OnEvent<T>){\n return new Subscriber<T>(this, callback);\n }\n\n watch(key: keyof T & string){\n const { subject, state } = this;\n const { value } = getOwnPropertyDescriptor(subject, key)!;\n\n if(typeof value == \"function\")\n return;\n\n if(typeof value == \"symbol\"){\n const instruction = PENDING.get(value);\n\n if(instruction){\n delete subject[key];\n PENDING.delete(value);\n instruction.call(this, key, this);\n }\n\n return;\n }\n\n state.set(key, value);\n\n if(value instanceof Model){\n setRecursive(this, key, value);\n return;\n }\n\n defineProperty(subject, key, {\n enumerable: false,\n set: this.ref(key as any),\n get(){\n const sub = Subscriber.get(this);\n\n if(sub)\n sub.add(key);\n\n return state.get(key);\n }\n });\n }\n\n addListener(listener: Control.OnSync<T>){\n this.followers.add(listener);\n return () => {\n this.followers.delete(listener)\n }\n }\n\n ref<K extends Model.Key<T>>(\n key: K,\n handler?: (this: T, value: T[K]) => boolean | void){\n \n const { subject, state } = this;\n \n return (value: any) => {\n if(state.get(key) == value)\n return;\n \n if(handler)\n switch(handler.call(subject, value)){\n case true:\n this.update(key);\n case false:\n return;\n }\n \n state.set(key, value);\n this.update(key);\n }\n }\n\n update(key: Model.Key<T>){\n const { followers, frame, waiting } = this;\n \n if(frame.has(key))\n return;\n \n else if(!frame.size)\n setTimeout(() => {\n flush(this); \n const keys = this.latest = Array.from(frame);\n setTimeout(() => this.latest = undefined, 0);\n\n frame.clear();\n \n for(const notify of waiting)\n try {\n waiting.delete(notify);\n notify(keys);\n }\n catch(err){\n console.error(err);\n }\n }, 0);\n \n frame.add(key);\n \n for(const callback of followers){\n const event = callback(key, this);\n \n if(typeof event == \"function\")\n waiting.add(event);\n }\n }\n\n clear(){\n const listeners = [ ...this.followers ];\n\n this.followers.clear();\n listeners.forEach(x => x(null, this));\n }\n\n static get<T extends {}>(from: T){\n if(from && \"is\" in from)\n from = (from as any).is as T;\n \n return REGISTER.get(from) as Control<T> | undefined;\n }\n\n static for<T extends {}>(subject: T): Control<T>;\n static for<T extends {}>(subject: T, cb: Control.OnReady<T>): Callback;\n static for<T extends {}>(subject: T, cb?: Control.OnReady<T>){\n const control = this.get(subject) || new this(subject);\n\n if(!control.state){\n const { waiting } = control;\n \n if(cb){\n let callback: Callback | void;\n \n waiting.add(() => {\n callback = cb(control);\n });\n \n return () => {\n if(callback)\n callback();\n }\n }\n \n control.state = new Map();\n \n for(const key in subject)\n control.watch(key);\n \n control.waiting = new Set();\n \n for(const cb of waiting)\n cb([]);\n }\n \n return cb ? cb(control) : control;\n }\n}\n\nexport {\n Control,\n PENDING\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { defineProperty } from './helper/object';\nimport { Callback } from './helper/types';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\nexport const Parent = new WeakMap<{}, {}>();\n\nexport const Oops = issues({\n BadAssignment: (parent, expected, got) =>\n `Property ${parent} expected Model of type ${expected} but got ${got}.`\n})\n\nexport function getRecursive(key: string, from: Control){\n const context = new WeakMap<Subscriber, {} | undefined>();\n const { state } = from;\n\n return (local: Subscriber | undefined) => {\n if(!local)\n return state.get(key);\n\n if(!context.has(local)){\n let reset: Callback | undefined;\n\n const init = () => {\n if(reset)\n reset();\n\n const value = state.get(key);\n \n if(Control.get(value)){\n const child = Control.for(value).subscribe(local.onUpdate);\n \n if(local.active)\n child.commit();\n \n local.dependant.add(child);\n context.set(local, child.proxy);\n\n reset = () => {\n child.release();\n local.dependant.delete(child);\n context.set(local, undefined);\n reset = undefined;\n }\n }\n\n return true;\n }\n \n local.add(key, init);\n init();\n }\n\n return context.get(local);\n }\n}\n\nexport function setRecursive(\n control: Control, key: string, initial: Model){\n\n const { state, subject } = control;\n const Type = initial.constructor;\n\n let get: (local: Subscriber | undefined) => any\n\n const onUpdate = (next: {} | undefined) => {\n state.set(key, next);\n\n if(!(next instanceof Type))\n throw Oops.BadAssignment(`${subject}.${key}`, Type.name, String(next));\n\n get = getRecursive(key, control);\n Parent.set(next, subject);\n Control.for(next);\n\n return true;\n }\n\n onUpdate(initial);\n\n defineProperty(subject, key, {\n set: control.ref(key, onUpdate),\n get(this: Model){\n const local = Subscriber.get(this);\n\n if(local)\n local.add(key);\n\n return get(local);\n }\n });\n}","import { getRecursive } from '../children';\nimport { Control, PENDING } from '../control';\nimport { defineProperty } from '../helper/object';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\n\n/**\n * Property initializer, will run upon instance creation.\n * Optional returned callback will run when once upon first access.\n */\ntype Instruction<T> = (this: Control, key: string, thisArg: Control) =>\n | Instruction.Getter<T> \n | Instruction.ExplicitDescriptor\n | Instruction.Descriptor<T>\n | Instruction.RecursiveDescriptor<T>\n | boolean\n | void;\n\ndeclare namespace Instruction {\n type Getter<T> = (within?: Subscriber) => T;\n type Setter<T> = (value: T) => boolean | void;\n\n type Runner<T> = (this: Control, key: string, on: Control) =>\n Instruction.Descriptor<T> | boolean | undefined;\n\n interface Descriptor<T> {\n configurable?: boolean;\n enumerable?: boolean;\n value?: T;\n writable?: boolean;\n get?: Getter<T>;\n set?: Setter<T> | false;\n suspend?: boolean;\n destroy?: () => void;\n }\n\n interface ExplicitDescriptor extends PropertyDescriptor {\n explicit: true;\n }\n\n interface RecursiveDescriptor<T> {\n recursive: true;\n enumerable?: boolean;\n value?: T;\n set?: Setter<T> | false;\n suspend?: boolean;\n }\n}\n\n/**\n * Run instruction as controller sets itself up.\n * This will specialize the behavior of a given property.\n */\nfunction add<T = any>(\n instruction: Instruction<any>,\n label?: string){\n\n const name = label || instruction.name || \"pending\";\n const placeholder = Symbol(`${name} instruction`);\n\n function setup(this: Control, key: string){\n const { subject, state } = this;\n\n let output = instruction.call(this, key, this);\n\n if(typeof output == \"function\")\n output = { get: output };\n\n if(typeof output != \"object\")\n return;\n\n if(\"explicit\" in output && output.explicit){\n defineProperty(subject, key, output);\n return false;\n }\n\n let {\n get: onGet,\n set: onSet,\n suspend: shouldSuspend\n } = output as Instruction.Descriptor<any>;\n\n if(\"value\" in output)\n state.set(key, output.value);\n\n if(\"recursive\" in output && output.recursive)\n onGet = getRecursive(key, this);\n\n if(\"destroy\" in output){\n const { destroy } = output;\n\n if(destroy)\n this.addListener((key) => {\n if(key == null)\n destroy();\n })\n }\n\n const control = this;\n\n defineProperty(subject, key, {\n enumerable: output.enumerable,\n\n set: onSet === false\n ? undefined\n : this.ref(key, onSet),\n\n get(this: any){\n if(!state.has(key) && shouldSuspend)\n throw suspend(control, key);\n \n const local = Subscriber.get(this);\n \n if(local)\n local.add(key);\n \n return onGet\n ? onGet(local)\n : state.get(key);\n }\n });\n }\n\n PENDING.set(placeholder, setup);\n\n return placeholder as unknown as T;\n}\n\nexport { add, Instruction }","import { issues } from '../helper/issues';\nimport { defineProperty } from '../helper/object';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\n\ntype Async<T = any> = (...args: any[]) => Promise<T>;\n\nexport const Oops = issues({\n DuplicatePending: (key) =>\n `Invoked action ${key} but one is already active.`\n})\n\n/**\n * Sets an exotic method with managed ready-state. Property accepts an async function.\n *\n * When a run-method is invoked, its `active` property to true for duration of call.\n * This is emitted as an update to property, both when called and after returns (or throws).\n *\n * **Note:** Subsequent calls will immediately throw if one is still pending.\n *\n * @param action - Action to fire when resulting property is invoked.\n */\nfunction run (action: Async): typeof action & { active: boolean };\nfunction run <S> (action: Async<S>): typeof action & { active: boolean };\n\nfunction run<T extends Async>(task: T){\n return add<T>(\n function run(key){\n let pending = false;\n\n const invoke = async (...args: any[]) => {\n if(pending)\n return Promise.reject(\n Oops.DuplicatePending(key)\n )\n\n pending = true;\n this.update(key);\n\n try {\n return await mayRetry(() => (\n task.apply(this.subject, args)\n ))\n }\n finally {\n pending = false;\n this.update(key);\n }\n }\n\n this.state.set(key, undefined);\n\n defineProperty(invoke, \"active\", {\n get: () => pending\n })\n\n return {\n value: invoke as T,\n set: false\n };\n }\n )\n}\n\nexport { run }","import { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { assign } from '../helper/object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n});\n\nexport function factoryMode<T>(\n self: Control,\n output: Promise<T> | T,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let pending: Promise<any> | undefined;\n let error: any;\n\n if(output instanceof Promise){\n state.set(key, undefined);\n\n pending = output\n .catch(err => error = err)\n .then(val => {\n state.set(key, val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n self.update(key);\n })\n }\n\n state.set(key, output);\n\n const suspend = () => {\n if(required === false)\n return undefined;\n\n const issue = Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n \n return (): T | undefined => {\n if(error)\n throw error;\n\n if(pending)\n return suspend();\n\n if(state.has(key))\n return state.get(key);\n }\n}","import { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { Model } from '../model';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\nimport { computeMode } from './get.compute';\nimport { factoryMode } from './get.factory';\n\nexport const Oops = issues({\n PeerNotAllowed: (model, property) =>\n `Attempted to use an instruction result (probably use or tap) as computed source for ${model}.${property}. This is not possible.`,\n\n ComputeFailed: (model, key) =>\n `Generating initial value for ${model}.${key} failed.`,\n\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\ndeclare namespace get {\n type Function<T, S = any> = (this: S, on: S) => T;\n type Factory<T, S = unknown> = (this: S, key: string, thisArg: S) => T;\n}\n\n/**\n * Implement a computed value; output will be generated by provided function.\n *\n * @param source - Source model from which computed value will be a subscriber.\n * @param compute - Compute function. Bound to a subscriber-proxy of source, returns output value. Will update automatically as input values change.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend?: boolean): R;\n\n/**\n * Implement a computed value; output is returned by function from provided factory.\n *\n * @param compute - Factory function to generate a getter to subscribe dependancies.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend?: boolean): R;\n\n/**\n * Set property with an async function.\n *\n * Property cannot be accessed until factory resolves, yeilding a result.\n * If accessed while processing, React Suspense will be thrown.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T> (factory: get.Factory<Promise<T>>, required: false): T | undefined;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required: false): T | undefined;\n\nfunction get <T> (factory: get.Factory<Promise<T>>, required?: boolean): T;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required?: boolean): T;\n\n/**\n * Set property with a factory function.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T>(factory: get.Factory<T>, required: false): T | undefined;\nfunction get <T, S>(factory: get.Factory<T, S>, required: false): T | undefined;\n\nfunction get <T>(factory: get.Factory<T>, required?: boolean): T;\nfunction get <T, S>(factory: get.Factory<T, S>, required?: boolean): T;\n\n/**\n * Assign a property with result of a promise.\n */\nfunction get <T> (factory: Promise<T>, required: false): T | undefined;\nfunction get <T> (factory: Promise<T>, required?: boolean): T;\n \nfunction get<R, T>(\n arg0: ((this: T, key: string, thisArg: T) => get.Function<R, T> | T) | Promise<R> | Model,\n arg1?: get.Function<T> | boolean,\n arg2?: boolean): R {\n\n return add(\n function get(key){\n const { subject } = this;\n const computeRequired = arg1 === true || arg2 === true;\n const factoryRequired = arg1 !== false && arg2 !== false;\n\n let getter: () => any;\n\n // Easy mistake, using a peer, will always be unresolved.\n if(typeof arg0 == \"symbol\")\n throw Oops.PeerNotAllowed(subject, key);\n\n // if(typeof arg0 == \"function\" && /^[A-Z]/.test(arg0.name))\n // throw Oops.BadSource(subject, key, arg0);\n\n this.state.set(key, undefined);\n\n const init = (): any => {\n let source = this;\n let setter: get.Function<T, any>;\n \n if(typeof arg0 == \"function\"){\n const result = mayRetry(() => arg0.call(subject, key, subject));\n \n if(typeof result == \"function\")\n setter = result;\n else {\n getter = factoryMode(this, result, key, factoryRequired);\n return;\n }\n }\n else if(arg0 instanceof Promise){\n getter = factoryMode(this, arg0, key, factoryRequired);\n return;\n }\n else if(typeof arg1 == \"function\"){\n // replace source controller in-case it is different\n source = Control.for(arg0);\n setter = arg1;\n }\n else\n throw new Error(`Factory argument cannot be ${arg1}`);\n\n getter = computeMode(this, source, setter, key, computeRequired);\n }\n\n if(typeof arg0 == \"function\" && computeRequired)\n try {\n init();\n }\n catch(err){\n Oops.ComputeFailed(subject, key).warn();\n throw err;\n }\n\n return () => {\n if(!getter)\n init();\n\n return getter();\n }\n }\n )\n}\n\nexport { get }","import { Control } from '../control';\nimport { createValueEffect } from '../effect';\nimport { defineProperty } from '../helper/object';\nimport { Model } from '../model';\nimport { add } from './add';\n\ndeclare namespace ref {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<void> | void | boolean;\n\n interface Object<T = any> {\n (next: T): void;\n current: T | null;\n }\n\n /** Object with references to all managed values of `T`. */\n type Proxy<T extends Model> = {\n [P in Model.Key<T>]-?: Model.Ref<T[P]>\n };\n\n type CustomProxy<T extends Model, R> = {\n [P in Model.Key<T>]-?: R;\n }\n}\n\n/**\n * Creates an object with references to all managed values.\n * Each property is a function to set value in state when invoked.\n *\n * *Properties are simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param target - Source model from which to reference values.\n */\nfunction ref <T extends Model> (target: T): ref.Proxy<T>;\n\n/**\n * Creates an object with values based on managed values.\n * Each property will invoke mapper function on first access supply\n * the its return value going forward.\n *\n * @param target - Source model from which to reference values.\n * @param mapper - Function producing the placeholder value for any given property.\n */\nfunction ref <O extends Model, R>\n (target: O, mapper: (key: Model.Key<O>) => R): ref.CustomProxy<O, R>;\n\n/**\n * Creates a ref-compatible property.\n * Will persist value, and updates to this are made part of controller event-stream.\n *\n * *Output is simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param callback - Optional callback to synchronously fire when reference is first set or does update.\n */\nfunction ref <T = HTMLElement> (callback?: ref.Callback<T>): ref.Object<T>;\nfunction ref <T, S> (callback?: ref.Callback<T, S>): ref.Object<T>;\n\nfunction ref<T>(\n arg?: ref.Callback<T> | Model,\n mapper?: (key: string) => any){\n\n return add(\n function ref(key){\n let value: ref.Object | ref.Proxy<any> = {};\n\n this.state.set(key, undefined);\n\n if(typeof arg != \"object\")\n value = createRef(this, key, arg);\n else\n Control.for(arg).state.forEach((_val, key) => {\n defineProperty(value, key,\n mapper ? {\n configurable: true,\n get(){\n const out = mapper(key);\n defineProperty(value, key, { value: out });\n return out;\n }\n } : {\n value: createRef(this, key)\n })\n })\n\n return { value, explicit: true };\n }\n )\n}\n\nexport { ref }\n\nfunction createRef(\n src: Control,\n key: string,\n cb?: ref.Callback<any>){\n\n const refObjectFunction =\n src.ref(key, cb && createValueEffect(cb));\n\n defineProperty(refObjectFunction, \"current\", {\n set: refObjectFunction,\n get: () => src.state.get(key)\n })\n\n return refObjectFunction as ref.Object;\n}","import { createValueEffect } from '../effect';\nimport { add } from './add';\n\ndeclare namespace set {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n}\n\n/**\n * Set property with a placeholder.\n * \n * Property cannot be accessed until it is defined. If accessed while undefined, a hybrid\n * `Promise`/`Error` (ala: [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html)) will be thrown.\n */\nfunction set <T = any>(): T;\n\nfunction set <T> (onUpdate: set.Callback<T>): T;\nfunction set <T, S> (onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: undefined, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: undefined, onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: T, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: T, onUpdate: set.Callback<T, S>): T;\n\nfunction set(\n value?: any,\n argument?: set.Callback<any> | boolean): any {\n\n if(!(1 in arguments)){\n argument = value;\n value = undefined;\n }\n\n return add(\n function set(key){\n if(value !== undefined)\n this.state.set(key, value);\n\n return {\n suspend: true,\n set: typeof argument == \"function\"\n ? createValueEffect(argument)\n : undefined\n }\n }\n )\n}\n\nexport { set }","import { Control } from '../control';\nimport { assign, create, defineProperty } from '../helper/object';\nimport { Subscriber } from '../subscriber';\nimport { Instruction } from './add';\n\ntype MapFunction<T, R> =\n T extends Map<infer K, infer V> ?\n (value: V, key: K, map: T) => R | void :\n T extends Set<infer K> ?\n (value: K, key: K, set: T) => R | void :\n never;\n\ntype Managed<T> = Exclude<T, \"forEach\"> & {\n from?: T;\n\n forEach<R>(\n mapFunction: MapFunction<T, R>,\n thisArg?: any\n ): Exclude<R, undefined>[] | void;\n}\n\nconst ANY = Symbol(\"any\");\n\ntype Keyed<K = unknown> = Set<K> | Map<K, unknown>;\n\nfunction keyed<T extends Keyed>(\n control: Control,\n property: any,\n initial: T\n): Instruction.Descriptor<T> {\n type K = typeof ANY | (\n T extends Set<infer U> ? U :\n T extends Map<infer U, any> ? U :\n never\n );\n\n const init = createProxy(emit, watch);\n const frozen = new Set<Subscriber>();\n const context = new Map<Subscriber, T>();\n const users = new Map<Subscriber, Set<K>>();\n const watched = new WeakMap<T, Set<K>>();\n const update = new Set<(key: K) => void>();\n\n let managed: T = init(initial);\n\n function watch(on: any, key: K){\n const include = watched.get(on);\n\n if(include)\n include.add(key);\n }\n\n function emit(key: K){\n control.update(property);\n control.waiting.add(() => frozen.clear());\n update.forEach(notify => notify(key));\n }\n\n function subscribe(local: Subscriber){\n const proxy = create(managed);\n let watch = users.get(local);\n\n if(!watch){\n const using = watch = new Set<K>();\n users.set(local, using);\n \n function onEvent(key: K){\n if(frozen.has(local))\n return;\n \n if(key === ANY || using.has(key) || using.has(ANY)){\n const refresh = local.onUpdate(property, control);\n \n if(refresh){\n frozen.add(local);\n refresh()\n }\n }\n }\n \n local.add(property, false);\n local.dependant.add({\n commit(){\n if(using.size === 0)\n using.add(ANY);\n \n update.add(onEvent);\n },\n release(){\n update.delete(onEvent);\n }\n })\n }\n\n watched.set(proxy, watch);\n context.set(local, proxy);\n\n return proxy;\n }\n\n return {\n value: initial,\n get(local){\n return local ?\n context.get(local) || subscribe(local) :\n managed;\n },\n set(next){\n control.state.set(property, next);\n managed = init(next);\n context.clear();\n emit(ANY);\n },\n destroy(){\n update.clear();\n context.clear();\n }\n }\n}\n\nfunction createProxy(\n emit: (key: any) => void,\n watch: (self: any, key: any) => void){\n\n return <T extends Keyed<any>>(from: T) => {\n const proxy = create(from) as T;\n\n assign(proxy,\n {\n from,\n delete(key: any){\n // TODO: this commit's fix needs tests.\n // Was not cause by coverage.\n const out = from.delete(key);\n emit(key);\n return out;\n },\n clear(){\n from.clear();\n emit(ANY);\n },\n has(key: any){\n watch(this, key);\n return from.has(key);\n },\n keys(){\n watch(this, ANY);\n return from.keys();\n },\n values(){\n watch(this, ANY);\n return from.values();\n },\n entries(){\n watch(this, ANY);\n return from.entries();\n },\n forEach(\n callbackfn: (a: any, b: any, c: any) => any,\n thisArg: any){\n\n const acc = [] as any[];\n\n from.forEach((a, b, c) => {\n const result = callbackfn.call(thisArg, a, b, c);\n\n if(result !== undefined)\n acc.push(result);\n });\n\n watch(this, ANY);\n\n return acc;\n },\n [Symbol.iterator](){\n watch(this, ANY);\n return from[Symbol.iterator]();\n },\n },\n from instanceof Set\n ? {\n add(key: any){\n from.add(key);\n emit(key);\n return this;\n }\n }\n : {\n get(key: any){\n watch(this, ANY);\n return from.get(key);\n },\n set(key: any, value: any){\n from.set(key, value);\n emit(key);\n return this;\n }\n }\n )\n\n defineProperty(proxy, \"size\", {\n get(){\n watch(this, ANY);\n return from.size;\n }\n })\n \n return proxy;\n }\n}\n\nexport { keyed, Managed };","import { getRecursive, Parent } from '../children';\nimport { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { assign } from '../helper/object';\nimport { Model } from '../model';\nimport { Subscriber } from '../subscriber';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\nimport { keyed, Managed } from './use.keyed';\n\n\nexport const Oops = issues({\n BadArgument: (type) =>\n `Instruction \\`use\\` cannot accept argument type of ${type}.`,\n\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n})\n\nfunction use <K = any> (initial: SetConstructor): Managed<Set<K>>;\nfunction use <K = any, V = any> (initial: MapConstructor): Managed<Map<K, V>>;\n\nfunction use (initial: Set<unknown>): Managed<Set<any>>;\nfunction use (initial: Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use (from: () => Set<unknown>): Managed<Set<any>>;\nfunction use (from: () => Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use <T extends Set<any> | Map<any, any>> (initial: T): Managed<T>;\nfunction use <T extends Set<any> | Map<any, any>> (from: () => T): Managed<T>;\n\n/**\n * Create a placeholder for specified Model type.\n */\nfunction use <T extends Model> (): T | undefined;\nfunction use <T extends Model> (from: () => T, required: false): T | undefined;\nfunction use <T extends Model> (from: () => T, required: boolean): T;\n\n /**\n * Create a new child instance of model.\n */\nfunction use <T extends Model> (Type: Model.Type<T>, callback?: (i: T) => void): T;\n\n /**\n * Create a managed child from factory function.\n */\nfunction use <T extends {}> (from: () => Promise<T>, required: false): T | undefined;\nfunction use <T extends {}> (from: () => Promise<T>, required: boolean): T;\nfunction use <T extends {}> (from: () => Promise<T>, callback?: (i: T) => void): T;\nfunction use <T extends {}> (from: () => T, callback?: (i: T) => void): T;\n\n /**\n * Create child-instance relationship with provided model.\n *\n * Note: If `peer` is not already initialized before parent is\n * (created with `new` as opposed to create method), that model will\n * attach this via `parent()` instruction. It will not, however, if\n * already active.\n */\nfunction use <T extends {}> (peer: T, callback?: (i: T) => void): T;\n\nfunction use(\n input?: any,\n argument?: boolean | ((i: {} | undefined) => void)){\n\n return add(\n function use(key){\n const { state, subject } = this;\n const required = argument !== false;\n\n let pending: Promise<any> | undefined;\n let error: any;\n let get: (local: Subscriber | undefined) => any =\n (_local: Subscriber | undefined) => state.get(key);\n\n if(typeof input === \"function\"){\n if(\"prototype\" in input && input === input.prototype.constructor)\n input = new input();\n }\n\n else if(input && typeof input !== \"object\")\n throw Oops.BadArgument(typeof input);\n\n if(input instanceof Map || input instanceof Set)\n return keyed(this, key, input);\n\n const onUpdate = (next: {} | undefined) => {\n state.set(key, next);\n\n if(next){\n get = getRecursive(key, this);\n Parent.set(next, subject);\n Control.for(next);\n }\n\n if(typeof argument == \"function\")\n argument(next);\n\n return true;\n }\n\n const suspend = () => {\n if(required === false)\n return;\n\n const issue = Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n\n const initialize = () => {\n const output = typeof input == \"function\" ?\n mayRetry(() => input.call(subject, subject)) :\n input;\n\n if(output instanceof Promise){\n pending = output\n .catch(err => error = err)\n .then(val => {\n onUpdate(val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n this.update(key);\n })\n\n return;\n }\n\n onUpdate(output);\n }\n\n if(input !== undefined && required)\n initialize();\n\n return {\n set: onUpdate,\n get(local){\n if(pending)\n return suspend();\n \n if(error)\n throw error;\n\n if(!state.has(key))\n initialize();\n \n if(pending)\n return suspend();\n \n return get(local);\n }\n };\n }\n )\n}\n\nexport { use }","import { Parent } from '../children';\nimport { issues } from '../helper/issues';\nimport { Model } from '../model';\nimport { add } from './add';\n\nexport const Oops = issues({\n Required: (expects, child) => \n `New ${child} created standalone but requires parent of type ${expects}. Did you remember to create via use(${child})?`,\n\n Unexpected: (expects, child, got) =>\n `New ${child} created as child of ${got}, but must be instanceof ${expects}.`,\n})\n\n/**\n * Fetches and assigns the controller which spawned this host.\n * When parent assigns an instance via `use()` directive, it\n * will be made available to child upon this request.\n *\n * @param Type - Type of controller compatible with this class. \n * @param required - Throw if controller is created independantly.\n */\nfunction has <T extends Model> (Type: Model.Type<T>, required: false): T | undefined;\nfunction has <T extends Model> (Type: Model.Type<T>, required?: true): T;\n\nfunction has<T extends Model>(\n Type: Model.Type<T>, required?: boolean){\n\n return add(\n function parent(){\n const child = this.subject;\n const value = Parent.get(child) as T;\n const expected = Type.name;\n\n if(!value){\n if(required !== false)\n throw Oops.Required(expected, child);\n }\n else if(!(value instanceof Type))\n throw Oops.Unexpected(expected, child, value);\n\n return { value };\n }\n );\n }\n\n export { has }","import React from 'react';\nimport { Control } from '../control';\n\nimport { issues } from '../helper/issues';\nimport { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertySymbols, getPrototypeOf, unique } from '../helper/object';\nimport { Model } from '../model';\n\nconst Oops = issues({\n NotFound: (name) =>\n `Couldn't find ${name} in context; did you forget to use a Provider?`\n})\n\nclass Lookup {\n private table = new Map<Model.Type, symbol>();\n\n public get local(){\n return unique<Model>(\n getOwnPropertySymbols(this).map(\n symbol => (this as any)[symbol]\n )\n )\n }\n\n private key(T: Model.Type){\n let key = this.table.get(T);\n\n if(!key){\n key = Symbol(T.name);\n this.table.set(T, key);\n }\n\n return key;\n }\n\n public get(T: Model.Type){\n return (this as any)[this.key(T)];\n }\n\n public add(input: Model.Type | Model){\n let writable = true;\n let T: Model.Type;\n let I: Model;\n\n if(typeof input == \"function\"){\n T = input;\n I = input.new();\n }\n else {\n I = input;\n T = I.constructor as Model.Type;\n writable = false;\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 Control.for(I).state.forEach(value => {\n if(value instanceof Model)\n this.add(value);\n })\n }\n\n public push(){\n return create(this) as this;\n }\n\n public pop(){\n const items = new Set<Model>();\n\n for(const key of getOwnPropertySymbols(this)){\n const entry = getOwnPropertyDescriptor(this, key)!;\n\n if(entry.writable && entry.value)\n items.add(entry.value)\n }\n\n for(const model of items)\n model.end();\n }\n}\n\nconst LookupContext = React.createContext(new Lookup());\nconst useLookup = () => React.useContext(LookupContext);\n\nfunction useContext <T extends Model> (Type: Model.Type<T>, required: false): T | undefined;\nfunction useContext <T extends Model> (Type: Model.Type<T>, required?: boolean): T;\n\nfunction useContext<T extends Model>(Type: Model.Type<T>, required?: boolean): T | undefined {\n const instance = useLookup().get(Type);\n\n if(!instance && required !== false)\n throw Oops.NotFound(Type.name);\n \n return instance;\n}\n\nexport { Lookup, useLookup, useContext, Oops, LookupContext }","import { issues } from '../helper/issues';\nimport { InstanceOf } from '../helper/types';\nimport { add } from '../instruction/add';\nimport { Model } from '../model';\nimport { Lookup, useLookup } from './context';\nimport { MVC } from './mvc';\n\nexport const Oops = issues({\n NotAllowed: (parent, child) =>\n `Global '${parent}' attempted to attach '${child}' but it is not also a singleton.`,\n\n AmbientRequired: (requested, requester, key) =>\n `Attempted to find an instance of ${requested} in context. It is required for [${requester}.${key}], but one could not be found.`\n})\n\nconst Pending = new WeakMap<{}, ((context: Lookup) => void)[]>();\nconst Applied = new WeakMap<Model, boolean>();\n\n/**\n * Find and attach most applicable instance of Model via context.\n * \n * Host controller will search element-hierarchy relative to where it spawned.\n * \n * @param Type - Type of model to find from context\n * @param callback -\n * - Invoked after context is scanned, is passed result - either found or undefined.\n * - If argument is inadequate, but required, your implemention should simply throw.\n * - If inadequate and not required, conditionally return false.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | boolean): T | undefined;\n\n/**\n * Find and attach most applicable instance of Model via context.\n *\n * Expects a `<Provider>` of target controller to exist. \n * Host controller will search element-hierarchy relative to where it spawned.\n *\n * @param Type - Type of controller to attach to property. \n * @param required - Throw if instance of Type cannot be found.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, required: true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, required?: boolean): T | undefined;\n\nfunction tap<T extends typeof MVC>(\n type: T,\n argument?: boolean | ((instance: InstanceOf<T> | undefined) => void | boolean)){\n\n return add(\n function tap(key){\n if(type.global)\n return {\n recursive: true,\n value: type.get()\n }\n\n const { subject } = this;\n\n if(subject.constructor.global)\n throw Oops.NotAllowed(subject, type.name);\n\n getPending(subject).push(context => {\n let instance = context.get(type);\n\n if(typeof argument == \"function\"){\n if(argument(instance) === false)\n instance = undefined;\n }\n\n else if(!instance && argument)\n throw Oops.AmbientRequired(type.name, subject, key);\n\n this.state.set(key, instance);\n this.update(key);\n })\n\n return {\n recursive: true,\n suspend: true\n }\n }\n )\n};\n\nfunction usePeerContext(subject: Model){\n if(Applied.has(subject)){\n if(Applied.get(subject))\n useLookup();\n\n return;\n }\n\n const pending = Pending.get(subject);\n\n if(pending){\n const local = useLookup();\n\n for(const init of pending)\n init(local);\n\n Pending.delete(subject);\n }\n\n Applied.set(subject, !!pending);\n}\n\nfunction getPending(subject: {}){\n let pending = Pending.get(subject);\n\n if(!pending)\n Pending.set(subject, pending = []);\n\n return pending;\n}\n\nexport { tap, usePeerContext, getPending }","import React from 'react';\n\nimport { Callback } from '../helper/types';\n\nexport function use<T>(init: (trigger: Callback) => T){\n const [ state, update ] = React.useState((): T[] => [\n init(() => update(state.concat()))\n ]);\n\n return state[0];\n}","import React, { useState } from 'react';\n\nimport { Control } from '../control';\nimport { Model } from '../model';\nimport { usePeerContext } from './tap';\nimport { use } from './use';\n\nfunction useNew <T extends Model> (\n source: Model.Type<T> | (() => T),\n callback?: (instance: T) => void\n): T;\n\nfunction useNew <T extends Model> (\n source: Model.Type<T> | (() => T),\n watch: Model.Key<T>[],\n callback?: (instance: T) => void\n): T;\n\nfunction useNew <T extends Model> (\n source: Model.Type<T> | (() => T),\n apply: Model.Compat<T>,\n keys?: Model.Event<T>[]\n): T;\n\nfunction useNew <T extends Model> (\n source: (() => T) | Model.Type<T>,\n arg1?: ((i: T) => void) | Model.Event<T>[] | Model.Compat<T>,\n arg2?: ((i: T) => void) | Model.Key<T>[]){\n\n const instance = React.useMemo(() => {\n const callback = arg2 || arg1;\n const instance = Model.isTypeof(source)\n ? new source() as T\n : source();\n\n Control.for(instance);\n\n if(typeof callback == \"function\")\n callback(instance);\n\n return instance;\n }, []);\n\n usePeerContext(instance);\n\n if(Array.isArray(arg1)){\n const update = useState(0)[1];\n\n React.useLayoutEffect(() => { \n if(arg1.length && instance instanceof Model)\n instance.on(arg1, () => update(x => x+1));\n\n return () => {\n if(Model.isTypeof(source))\n (instance as Model).end();\n }\n }, []);\n\n return instance;\n }\n \n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n if(typeof arg1 == \"object\")\n local.assign(arg1, arg2);\n\n React.useLayoutEffect(() => {\n local.commit();\n\n return () => {\n local.release();\n\n if(Model.isTypeof(source))\n (instance as Model).end();\n };\n }, []);\n\n return local.proxy;\n}\n\nexport { useNew }","import React from 'react';\n\nimport { Control } from '../control';\nimport { defineProperty } from '../helper/object';\nimport { use } from './use';\n\nimport type { Callback, NoVoid } from '../helper/types';\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect: true\n): Exclude<R, undefined>;\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect?: boolean\n): NoVoid<R>;\n\nfunction useValue(\n source: {},\n compute: Function,\n suspend?: boolean) {\n\n const local = use(refresh => {\n const sub = Control.for(source).subscribe(() => update);\n const spy = sub.proxy;\n\n let value = compute.call(spy, spy);\n let update: Callback | undefined;\n let retry: Callback | undefined;\n\n const set = (next: any) => {\n value = next;\n\n if(retry) {\n retry();\n retry = undefined;\n }\n else\n refresh();\n };\n\n if(value === null){\n sub.watch.clear();\n return {\n proxy: null,\n release: () => {}\n }\n }\n\n if(typeof value == \"function\"){\n const get = value;\n\n sub.watch.clear();\n compute = () => get();\n value = get();\n }\n\n if(value instanceof Promise) {\n value.then(set);\n value = undefined;\n }\n else {\n sub.commit();\n update = () => {\n const next = compute.call(spy, spy);\n\n if(value != next)\n set(next);\n };\n }\n\n defineProperty(sub, \"proxy\", {\n get() {\n if(value !== undefined)\n return value;\n\n if(suspend)\n throw new Promise<void>(res => retry = res);\n\n return null;\n }\n });\n\n return sub;\n });\n\n React.useLayoutEffect(() => local.release, []);\n\n return local.proxy;\n}\n\nexport { useValue }\n","import React, { useMemo } from 'react';\n\nimport { Control } from '../control';\nimport { NoVoid } from '../helper/types';\nimport { Model } from '../model';\nimport { suspend } from '../suspense';\nimport { useContext } from './context';\nimport { MVC } from './mvc';\nimport { use } from './use';\nimport { useValue } from './useValue';\n\ndeclare namespace useTap {\n type Source<T extends Model> =\n | T\n | Model.Type<T>\n | (() => T | Model.Type<T>);\n}\n\nfunction useTap <T extends Model> (source: useTap.Source<T>): T;\n\nfunction useTap <T extends Model, K extends Model.Key<T>> (source: useTap.Source<T>, path: K, expect: true): Exclude<T[K], undefined>;\nfunction useTap <T extends Model, K extends Model.Key<T>> (source: useTap.Source<T>, path: K, expect?: boolean): NoVoid<T[K]>;\n\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, connect: (this: T, model: T) => () => R): NoVoid<R>;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, connect: (this: T, model: T) => (() => R) | null): NoVoid<R> | null;\n\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => Promise<R> | R, expect: true): Exclude<R, undefined>;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => Promise<R>, expect?: boolean): NoVoid<R> | null;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => R, expect?: boolean): NoVoid<R>;\n\nfunction useTap <T extends Model> (\n source: typeof Model | typeof MVC | (() => any),\n arg1?: Model.Key<T> | ((this: T, from: T) => any),\n arg2?: boolean) {\n\n const instance: T = useMemo(() => {\n if(typeof source == \"object\")\n return () => source;\n\n if(Model.isTypeof(source))\n return \"get\" in source\n ? () => source.get()\n : () => useContext(source);\n\n return source;\n }, [])();\n\n if(typeof arg1 == \"function\")\n return useValue(instance, arg1, arg2);\n\n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n React.useLayoutEffect(local.commit, []);\n\n if(arg1 === undefined)\n return local.proxy;\n\n const value = local.proxy[arg1];\n\n if(value === undefined && arg2)\n throw suspend(local.parent, arg1);\n\n return value;\n}\n\nexport { useTap }","import React from 'react';\n\nimport { issues } from '../helper/issues';\nimport { Callback, Class, InstanceOf, NoVoid } from '../helper/types';\nimport { Model } from '../model';\nimport { useContext } from './context';\nimport { useNew } from './useNew';\nimport { useTap } from './useTap';\n\nexport const Global = new WeakMap<Class, MVC>();\n\nexport const Oops = issues({\n DoesNotExist: (name) =>\n `Tried to access singleton ${name}, but none exist! Did you forget to initialize?\\nCall ${name}.new() before attempting to access, or consider using ${name}.use() instead.`,\n\n AlreadyExists: (name) =>\n `Shared instance of ${name} already exists! Consider unmounting existing, or use ${name}.reset() to force-delete it.`\n})\n\ndeclare namespace MVC {\n type EffectCallback<T = MVC> = (found: T) => Callback | void;\n}\n\nclass MVC extends Model {\n end(force?: boolean): boolean | void {\n const type = this.constructor as typeof MVC;\n \n if(type.keepAlive && !force)\n return false;\n\n super.end();\n Global.delete(type);\n\n return true;\n }\n\n static global?: boolean;\n static keepAlive?: boolean;\n\n /**\n * Create a new instance of this model and activate its managed state.\n * \n * @param args - arguments sent to constructor\n */\n static new <T extends Class> (this: T, ...args: ConstructorParameters<T>): InstanceOf<T>;\n\n static new(...args: []){\n if(Global.has(this))\n if(this.keepAlive)\n return Global.get(this);\n else\n throw Oops.AlreadyExists(this.name);\n\n const instance = super.new(...args) as MVC;\n\n if(this.global)\n Global.set(this, instance);\n\n return instance;\n }\n\n /**\n * **React Hook** - Fetch most instance of this controller from context, if it exists.\n * \n * @param required - Unless false, will throw where instance cannot be found.\n */\n static get <T extends MVC> (this: Model.Type<T>, required?: boolean, effectCallback?: MVC.EffectCallback<T>): T;\n\n /**\n * **React Hook** - Fetch most instance of this controller from context.\n * \n * @param required - If false, may return undefined.\n */\n static get <T extends MVC> (this: Model.Type<T>, required: false, effectCallback?: MVC.EffectCallback<T | undefined>): T | undefined;\n\n /**\n * **React Hook** - Fetch instance.\n * \n * Effect callback will run once if found, throw if not found.\n * Returned function is called on unmount.\n */\n static get <I extends MVC> (this: Model.Type<I>, effectCallback: MVC.EffectCallback<I>): I | undefined;\n\n /**\n * **React Hook** - Fetch specific value from instance of this controller in context.\n */\n static get <I extends MVC, K extends Model.Key<I>> (this: Model.Type<I>, key: K): I[K];\n\n static get(\n arg1?: string | boolean | MVC.EffectCallback,\n arg2?: MVC.EffectCallback<MVC | undefined>){\n\n let instance: MVC | undefined;\n const required = arg1 === undefined || arg1 === true;\n\n if(this.global){\n instance = Global.get(this);\n\n if(!instance && required)\n throw Oops.DoesNotExist(this.name);\n }\n else\n instance = useContext(this, required);\n\n function callback(effect: MVC.EffectCallback<any>){\n try {\n React.useLayoutEffect(() => effect(instance!), []);\n }\n catch(err){\n if(instance)\n instance.on(effect, []);\n else\n effect(undefined);\n }\n }\n\n if(typeof arg1 === \"string\")\n return (instance as any)[arg1];\n\n if(typeof arg1 === \"function\" && instance)\n callback(arg1);\n else if(arg2)\n callback(arg2);\n\n return instance;\n }\n\n /** \n * **React Hook** - Fetch and subscribe to instance of this controller within ambient component.\n */\n static tap <T extends MVC> (this: Model.Type<T>): T;\n\n static tap <T extends MVC, K extends Model.Key<T>> (this: Model.Type<T>, key: K, expect: true): Exclude<T[K], undefined>;\n static tap <T extends MVC, K extends Model.Key<T>> (this: Model.Type<T>, key: K, expect?: boolean): NoVoid<T[K]>;\n\n static tap <T extends MVC, R> (this: Model.Type<T>, connect: (this: T, model: T) => () => R): NoVoid<R>;\n static tap <T extends MVC, R> (this: Model.Type<T>, connect: (this: T, model: T) => (() => R) | null): NoVoid<R> | null;\n\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => Promise<R> | R, expect: true): Exclude<R, undefined>;\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => Promise<R>, expect?: boolean): NoVoid<R> | null;\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => R, expect?: boolean): NoVoid<R>;\n\n static tap (key?: string | Function, expect?: boolean): any {\n return useTap(this, key as any, expect);\n }\n\n static use <I extends MVC> (this: Model.Type<I>, watch: Model.Key<I>[], callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, apply: Model.Compat<I>, keys?: Model.Event<I>[]): I;\n\n static use <T extends typeof MVC> (this: T, a: any, b?: any){\n return useNew(this, a, b);\n }\n\n static meta <T extends Class>(this: T): T;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect: true): Exclude<T[K], undefined>;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect?: boolean): T[K];\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect?: boolean): T;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect?: boolean): T;\n\n static meta (path?: string | Function, expect?: boolean): any {\n return useTap(() => this, path as any, expect);\n }\n}\n\nexport { MVC };","import React from 'react';\n\nimport { issues } from '../helper/issues';\nimport { Class } from '../helper/types';\nimport { useContext } from './context';\nimport { useTap } from './useTap';\n\nexport const Oops = issues({\n BadProps: () =>\n `Provider expects either a render function, 'get' or 'has' props.`\n})\n\ndeclare namespace Consumer {\n type HasProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Getter function. Is called on every natural render of this component.\n * Will throw if usable instance cannot be found in context.\n */\n has: (value: InstanceType<E>) => void;\n }\n\n type GetProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /** Getter function. Is called on every natural render of this component. */\n get: (value: InstanceType<E> | undefined) => void;\n }\n\n type RenderProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Render function, will receive instance of desired controller.\n *\n * Similar to `tap()`, updates to properties accessed in\n * this function will cause a refresh when they change.\n */\n children: (value: InstanceType<E>) => React.ReactElement<any, any> | null;\n }\n\n type Props<T extends Class> = HasProps<T> | GetProps<T> | RenderProps<T>\n}\n\nfunction Consumer<T extends Class>(props: Consumer.Props<T>){\n const { get, has, children, for: type } = props as any;\n\n if(typeof children == \"function\")\n return children(useTap(type));\n\n const callback = has || get;\n\n if(typeof callback == \"function\")\n callback(useContext(type, !!has));\n else\n throw Oops.BadProps()\n\n return null;\n}\n\nexport { Consumer };","import React from 'react';\n\nimport { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { values } from '../helper/object';\nimport { Class } from '../helper/types';\nimport { Model } from '../model';\nimport { Subscriber } from '../subscriber';\nimport { Lookup, LookupContext, useLookup } from './context';\nimport { getPending } from './tap';\nimport { use } from './use';\n\nexport const Oops = issues({\n NoType: () =>\n \"Provider 'for' prop must be Model, typeof Model or a collection of them.\"\n})\n\ndeclare namespace Provider {\n type Item = Model | Model.Type;\n\n type Multiple<T extends Item = Item> = T[] | { [key: string]: T };\n\n type Instance<E> = E extends Class ? InstanceType<E> : E extends Model ? E : never;\n\n type NormalProps<E, I = Instance<E>> = {\n for: E;\n children?: React.ReactNode | ((instance: I) => React.ReactNode);\n and?: Model.Compat<I>;\n }\n\n // FIX: This fails to exclude properties with same key but different type.\n type MultipleProps<T extends Item> = {\n for: Multiple<T>;\n children?: React.ReactNode | (() => React.ReactNode);\n and?: Model.Compat<Instance<T>>;\n }\n\n type Props<T extends Item> = MultipleProps<T> | NormalProps<T>;\n}\n\nfunction Provider<T extends Provider.Item>(props: Provider.Props<T>){\n const context = useNewContext(props.for, props.and);\n const render = props.children;\n\n React.useLayoutEffect(() => () => context.pop(), []);\n\n return React.createElement(LookupContext.Provider, { value: context },\n typeof render == \"function\"\n ? React.createElement(RenderFunction, { context, render })\n : render\n );\n}\n\nexport { Provider };\n\nfunction useNewContext<T extends Model>(\n include: Provider.Item | Provider.Multiple,\n assign: Model.Compat<T> | undefined){\n\n const ambient = useLookup();\n\n const context = React.useMemo(() => {\n if(!include)\n throw Oops.NoType();\n\n const next = ambient.push();\n\n if(include instanceof Model || typeof include == \"function\")\n next.add(include);\n else\n values(include).forEach(x => next.add(x));\n\n for(const instance of next.local)\n if(instance){\n if(assign)\n assignWeak(instance, assign);\n\n for(const apply of getPending(instance))\n apply(next)\n }\n\n return next;\n }, []);\n\n if(assign)\n for(const into of context.local as T[])\n assignWeak(into, assign);\n\n return context;\n}\n\ninterface RenderFunctionProps {\n context: Lookup;\n render: Function;\n}\n\nfunction RenderFunction(props: RenderFunctionProps): any {\n const hook = use(refresh => {\n const targets = props.context.local;\n\n if(targets.length == 1)\n return Control.for(targets[0]).subscribe(() => refresh);\n\n return {} as Subscriber;\n });\n\n if(hook.commit)\n React.useLayoutEffect(hook.commit, []);\n\n return props.render(hook.proxy);\n}\n\nfunction assignWeak(into: any, from: any){\n for(const K in from)\n if(K in into)\n into[K] = from[K];\n}","import { MVC } from './mvc';\n\nexport class Global extends MVC {\n static global = true;\n static keepAlive = true;\n}","import { Control } from './control';\nimport { defineProperties } from './helper/object';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\nconst LOCAL = \"$debug local\";\nconst STATE = \"$debug state\";\nconst UPDATE = \"$debug update\";\nconst CONTROL = \"$debug controller\";\n\ndefineProperties(Model.prototype, {\n [CONTROL]: {\n get(this: Model){\n return Control.get(this);\n }\n },\n [LOCAL]: {\n get(this: Model){\n return Subscriber.get(this);\n }\n },\n [STATE]: {\n get(this: Model){\n const { state } = Control.get(this)!;\n const output: any = {};\n\n state.forEach((value, key) => output[key] = value);\n\n return output;\n }\n },\n [UPDATE]: {\n get(this: Model){\n const source = Subscriber.get(this) || Control.get(this);\n\n return source && source.latest;\n }\n }\n})\n\nconst Debug = {\n CONTROL,\n LOCAL,\n STATE,\n UPDATE\n} as const;\n\ntype Debug<T extends {}> = T & {\n /** Controller for this instance. */\n [CONTROL]?: Control<T>;\n\n /** Current subscriber (if present) while used in a live context (e.g. hook or effect). */\n [LOCAL]?: Subscriber<T>;\n\n /** Current state of this instance. */\n [STATE]?: Model.Export<T>;\n\n /**\n * Last update causing a refresh to subscribers.\n * \n * If accessed directly, will contain all keys from last push.\n * If within a subscribed function, will contain only keys which explicitly caused a refresh.\n */\n [UPDATE]?: readonly Model.Event<T>[];\n}\n\nexport { Debug };"],"names":["Oops","REGISTER","use","Global"],"mappings":"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"}
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/helper/object.ts","../src/helper/issues.ts","../src/suspense.ts","../src/instruction/get.compute.ts","../src/effect.ts","../src/event.ts","../src/subscriber.ts","../src/model.ts","../src/control.ts","../src/children.ts","../src/instruction/add.ts","../src/instruction/run.ts","../src/instruction/get.factory.ts","../src/instruction/get.ts","../src/instruction/ref.ts","../src/instruction/set.ts","../src/instruction/use.keyed.ts","../src/instruction/use.ts","../src/instruction/has.ts","../src/react/context.ts","../src/react/tap.ts","../src/react/use.ts","../src/react/useNew.ts","../src/react/useValue.ts","../src/react/useTap.ts","../src/react/mvc.ts","../src/react/consumer.ts","../src/react/provider.ts","../src/react/global.ts","../src/debug.ts"],"sourcesContent":["const {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyNames,\n getOwnPropertyDescriptor,\n getOwnPropertySymbols,\n values\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n values\n}\n\nexport function unique<T>(array: T[]){\n return Array.from(new Set(array));\n}","declare namespace Issue {\n export type Variable = {} | string | number | boolean | null;\n export type Variables<T> = T extends (...args: infer T) => any ? T : never;\n\n export type Messages = {\n [named: string]: (...args: Variable[]) => string;\n }\n\n export type Output<M extends Messages> = {\n readonly [P in keyof M]: (...args: Variables<M[P]>) => Issue;\n }\n}\n\nexport class Issue extends Error {\n // drop first line (error factory) in stack trace.\n stack = this.stack.replace(/\\n.+/, \"\") as string;\n\n warn(){\n console.warn(this.message);\n }\n}\n\nexport function issues<M extends Issue.Messages>(register: M){\n const Library = {} as any;\n\n for(const name in register)\n Library[name] = (...args: Issue.Variable[]) => \n new Issue(register[name].apply(null, args));\n\n return Library as Issue.Output<M>;\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { assign } from './helper/object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`,\n})\n\ntype Suspense<T = any> = Promise<T> & Error;\n\nexport function suspend(\n source: Control, key: string): Suspense {\n\n const error = Oops.NotReady(source.subject, key);\n\n const promise = new Promise<void>(resolve => {\n const release = source.addListener(forKey => {\n if(forKey == key)\n return () => {\n if(source.state.get(key) !== undefined){\n release();\n resolve();\n }\n }\n });\n });\n\n return assign(promise, {\n toString: () => String(error),\n name: \"Suspense\",\n message: error.message,\n stack: error.stack\n });\n}\n\nexport function mayRetry(fn: () => any): any {\n const retry = (err: unknown) => {\n if(err instanceof Promise)\n return err.then(compute);\n else\n throw err;\n }\n\n const compute = (): any => {\n try {\n const output = fn();\n\n return output instanceof Promise\n ? output.catch(retry)\n : output;\n }\n catch(err){\n return retry(err);\n }\n }\n\n return compute();\n}","import { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { Callback } from '../helper/types';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\n\nimport type { get } from './get';\n\nexport const Oops = issues({\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\nconst INFO = new WeakMap<Callback, string>();\nconst KEYS = new WeakMap<Control, Set<Callback>>();\nconst ORDER = new WeakMap<Control, Map<Callback, number>>();\n\nexport function computeMode(\n self: Control,\n source: Control,\n setter: get.Function<any, any>,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let sub: Subscriber;\n let order = ORDER.get(self)!;\n let pending = KEYS.get(self)!\n\n if(!order)\n ORDER.set(self, order = new Map());\n\n if(!pending)\n KEYS.set(self, pending = new Set());\n\n const compute = (initial: boolean) => {\n try {\n return setter.call(sub.proxy, sub.proxy);\n }\n catch(err){\n Oops.Failed(subject, key, initial).warn();\n throw err;\n }\n }\n\n const refresh = () => {\n let value;\n\n try {\n value = compute(false);\n }\n catch(e){\n console.error(e);\n }\n finally {\n if(state.get(key) !== value){\n state.set(key, value);\n self.update(key);\n return value;\n }\n }\n }\n\n const create = () => {\n sub = source.subscribe((_, source) => {\n if(source !== self)\n refresh();\n else\n pending.add(refresh);\n });\n\n sub.watch.set(key, false);\n\n try {\n const value = compute(true);\n state.set(key, value);\n return value;\n }\n catch(e){\n throw e;\n }\n finally {\n sub.commit();\n order.set(refresh, order.size);\n }\n }\n\n INFO.set(refresh, key);\n\n return () => {\n if(pending.has(refresh)){\n pending.delete(refresh)\n refresh();\n }\n\n const value = sub ? state.get(key) : create();\n\n if(value === undefined && required)\n throw suspend(self, key);\n\n return value;\n }\n}\n\nexport function flush(control: Control){\n const pending = KEYS.get(control);\n\n if(!pending || !pending.size)\n return;\n\n const priority = ORDER.get(control)!;\n\n while(pending.size){\n let compute!: Callback;\n\n for(const item of pending)\n if(!compute || priority.get(item)! < priority.get(compute)!)\n compute = item;\n\n pending.delete(compute);\n\n const key = INFO.get(compute)!;\n\n if(!control.frame.has(key))\n compute();\n }\n\n pending.clear();\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { Callback } from './helper/types';\nimport { Model } from './model';\nimport { mayRetry } from './suspense';\n\nexport const Oops = issues({\n BadCallback: () =>\n `Callback for effect-callback may only return a function.`\n})\n\nexport function createEffect<T extends Model>(\n model: T,\n callback: Model.Effect<T>,\n keys: Model.Event<T>[]){\n\n return Control.for(model, control => {\n let unSet: Callback | Promise<any> | void;\n let busy = false;\n\n function effect(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet();\n \n unSet = callback.call(this, value);\n \n if(unSet instanceof Promise)\n unSet = undefined;\n \n if(unSet && typeof unSet !== \"function\")\n throw Oops.BadCallback()\n }\n\n function invoke(){\n if(busy)\n return;\n\n const output = mayRetry(() => {\n effect.call(model, model);\n })\n\n if(output instanceof Promise){\n output.finally(() => busy = false);\n busy = true;\n }\n }\n\n if(Array.isArray(keys)){\n invoke();\n\n return control.addListener(key => {\n if(key === null){\n if(!keys.length)\n invoke();\n }\n else if(keys.includes(key))\n return invoke;\n });\n }\n\n const sub = control.subscribe(() => invoke);\n\n model = sub.proxy;\n invoke();\n\n return sub.commit();\n });\n}\n\nexport type AssignCallback<T> =\n (this: any, argument: T, thisArg: any) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n\nexport function createValueEffect<T = any>(\n callback: AssignCallback<T>){\n\n let unSet: ((next: T) => void) | undefined;\n\n return function(this: any, value: any){\n if(typeof unSet == \"function\")\n unSet(value);\n\n const out = callback.call(this, value, this);\n\n if(typeof out == \"boolean\")\n return out;\n\n if(!out || out instanceof Promise)\n return;\n\n if(typeof out == \"function\")\n unSet = out;\n else\n throw Oops.BadCallback()\n }\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { Model } from './model';\n\nexport const Oops = issues({\n Timeout: (keys, timeout) => \n `No update seen for [${keys}] within ${timeout}.`,\n\n KeysExpected: (key) =>\n `Key \"${key}\" was expected in current update.`,\n\n StrictUpdate: () => \n `Expected update but none in progress.`,\n\n StrictNoUpdate: () =>\n `Update is not expected but one is in progress!`\n});\n\nexport function addEventListener<T extends Model, P extends Model.Event<T>> (\n source: T,\n arg1: P | P[],\n arg2: (this: T, keys: Model.Event<T>[]) => void,\n arg3?: boolean){\n\n if(typeof arg1 == \"string\")\n arg1 = [arg1];\n\n return Control.for(source, control => {\n for(const key of arg1)\n try { void (source as any)[key] }\n catch(e){}\n\n const removeListener =\n control.addListener(key => {\n if(!key && !arg1.length)\n arg2.call(source, []);\n \n if(arg1.includes(key as P)){\n if(arg3)\n removeListener();\n\n return arg2.bind(source);\n }\n });\n\n return removeListener;\n });\n}\n\nexport function awaitUpdate<T extends Model, P extends Model.Event<T>>(\n source: T,\n arg1?: boolean | null | P | P[],\n arg2?: number){\n\n const single = typeof arg1 == \"string\";\n const keys =\n typeof arg1 == \"string\" ? [ arg1 ] :\n typeof arg1 == \"object\" ? arg1 : \n undefined;\n\n return new Promise<any>((resolve, reject) => {\n const timeout = (message: string) => {\n const k = keys ? keys.join(\", \") : \"any\";\n\n removeListener();\n reject(Oops.Timeout(k, message));\n }\n\n const removeListener = Control.for(source, control => {\n const pending = control.frame;\n\n if(keys === null){\n if(pending.size)\n reject(Oops.StrictNoUpdate())\n else\n resolve(null);\n\n return;\n }\n\n if(keys){\n if(keys.length){\n if(arg2 === 0 && single && !pending.has(keys[0])){\n reject(Oops.KeysExpected(keys[0]));\n return;\n }\n else for(const key of keys)\n try { void (source as any)[key] }\n catch(e){}\n }\n }\n else if(!pending.size && arg1 === true || arg2 === 0){\n reject(Oops.StrictUpdate());\n return;\n }\n else\n control.waiting.add(resolve);\n\n return control.addListener(key => {\n if(!key){\n if(keys && !keys.length)\n resolve([]);\n else\n timeout(`lifetime of ${source}`);\n }\n else if(!keys || keys.includes(key as P)){\n removeListener();\n return keys =>\n resolve(single ? control.state.get(key) : keys)\n }\n });\n })\n\n if(arg2 && typeof arg2 == \"number\")\n setTimeout(() => timeout(`${arg2}ms`), arg2);\n });\n}","import { Control } from './control';\nimport { create, defineProperty, getOwnPropertyNames } from './helper/object';\nimport { Model } from './model';\n\nimport type { Callback } from './helper/types';\n\nconst REGISTER = new WeakMap<{}, Subscriber>();\n\ntype Listener = {\n commit(): void;\n release(): void;\n}\n\ndeclare namespace Subscriber {\n type OnEvent<T = any> = (key: Model.Event<T> | null, source: Control) => Callback | void;\n}\n\nclass Subscriber <T extends {} = any> {\n static get<T extends {}>(from: T){\n return REGISTER.get(from) as Subscriber<T> | undefined;\n }\n\n public proxy!: T;\n public release!: Callback;\n public latest?: Model.Event<T>[];\n\n public active = false;\n public dependant = new Set<Listener>();\n public watch = new Map<any, boolean | (() => true | void)>();\n\n constructor(\n public parent: Control<T>,\n public onUpdate: Subscriber.OnEvent){\n\n const proxy = create(parent.subject);\n const reset = () => this.latest = undefined;\n\n REGISTER.set(proxy, this);\n \n defineProperty(this, \"proxy\", {\n configurable: true,\n get(){\n setTimeout(reset, 0);\n return proxy;\n }\n })\n }\n\n get using(): Model.Key<T>[] {\n return Array.from(this.watch.keys());\n }\n\n assign(apply: Model.Compat<T>, keys?: any){\n const { waiting, subject } = this.parent;\n\n this.active = false;\n\n if(typeof keys !== \"object\")\n keys = getOwnPropertyNames(subject) as Model.Key<T>[];\n\n for(const key of keys)\n if(key in apply)\n (subject as any)[key] = (apply as any)[key];\n\n waiting.add(() => this.active = true);\n }\n\n add(key: any, value?: boolean | Callback){\n if(value !== undefined)\n this.watch.set(key, value);\n else if(!this.watch.has(key))\n this.watch.set(key, true);\n }\n\n commit = () => {\n const release = this.parent.addListener(this.event);\n\n this.active = true;\n this.dependant.forEach(x => x.commit());\n\n return this.release = () => {\n this.dependant.forEach(x => x.release());\n release();\n };\n }\n\n private event = (key: Model.Event<T> | null) => {\n if(!this.active)\n return;\n\n const { parent, watch } = this;\n\n const handler = watch.get(key);\n let notify: void | Control.OnAsync;\n\n if(typeof handler == \"function\"){\n const callback = handler();\n\n if(callback === true)\n notify = this.onUpdate(key, parent);\n }\n else if(handler === true)\n notify = this.onUpdate(key, parent);\n\n if(!notify)\n return;\n\n parent.waiting.add(update => {\n this.latest = update.filter(k => watch.has(k));\n });\n parent.waiting.add(notify);\n }\n}\n\nexport { Subscriber }","import { Control } from './control';\nimport { Debug } from './debug';\nimport { createEffect } from './effect';\nimport { addEventListener, awaitUpdate } from './event';\nimport { issues } from './helper/issues';\nimport { defineProperty } from './helper/object';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback, Class, InstanceOf } from './helper/types';\n\nexport const Oops = issues({\n NoChaining: () =>\n `Then called with undefined; update promise will never catch nor supports chaining.`\n});\n\ndeclare namespace Model {\n export { Control };\n export { Subscriber };\n\n /** Including but not limited to T. */\n type Extends<T> = T | (string & Record<never, never>);\n\n export type Type<T extends Model = Model> = typeof Model & (new () => T);\n\n export type Effect<T> = (this: T, argument: T) => Callback | Promise<any> | void;\n\n /** Exotic value, actual value is contained. */\n export type Ref<T = any> = {\n (next: T): void;\n current: T | null;\n }\n\n /** Properties of T which are methods. */\n export type Methods<T> = {\n [K in keyof T]:\n T[K] extends Ref ? never :\n T[K] extends Function ? K :\n never;\n }[keyof T];\n\n type BuiltIn = keyof Model | keyof Debug<{}>;\n\n /**\n * Subset of `keyof T` which are not methods or defined by base Model U.\n * \n * **Note**: This excludes all keys which are not of type `string` (only those are managed).\n * \n * TODO: Should exclude methods\n **/\n export type Key<T> = Exclude<keyof T, BuiltIn> & string;\n\n /**\n * Including but not limited to `keyof T` which are not methods or defined by base Model.\n **/\n export type Event<T> = Extends<Key<T>>;\n\n /** Object containing managed entries found in T. */\n export type Entries<T> = { [K in Key<T>]: T[K] };\n\n /** Object comperable to data found in T. */\n export type Compat<T> = { [K in Key<T>]?: T[K] };\n\n /** Actual value stored in state. */\n export type Value<R> = R extends Ref<infer T> ? T : R;\n\n /** Actual value belonging to a managed property. */\n export type ValueOf<T extends {}, K> = K extends keyof T ? Value<T[K]> : undefined;\n\n /**\n * Values from current state of given controller.\n * \n * Differs from `Entries` as values here will drill into \"real\" values held by exotics like ref.\n */\n export type Get<T, K extends Key<T> = Key<T>> = { [P in K]: Value<T[P]> };\n\n export type Export<T, E extends Model = Model> = { [P in Key<T>]: Value<T[P]> };\n}\n\nclass Model {\n /**\n * Circular reference to `this` controller.\n * \n * Useful to obtain full reference where one has already destructured.\n */\n is!: this;\n\n constructor(){\n new Control(this);\n defineProperty(this, \"is\", { value: this });\n }\n\n on <P extends Model.Event<this>> (keys?: P | Iterable<P>, timeout?: number): Promise<P[]>;\n on <P extends Model.Event<this>> (keys: P | Iterable<P>, listener: (this: this, keys: Model.Event<this>[]) => void, once?: boolean): Callback;\n\n on (effect: Model.Effect<this>): Callback;\n on (effect: Model.Effect<this>, watch?: []): Callback;\n on (effect: Model.Effect<this>, watch?: Model.Event<this>[]): Callback;\n\n on (key?: undefined, timeout?: number): Promise<Model.Event<this>[]>;\n\n on (current?: boolean): Promise<Model.Event<this>[] | null>;\n on (current: true): Promise<Model.Event<this>[]>;\n on (current: null): Promise<null>;\n\n on <P extends Model.Event<this>> (\n arg1?: boolean | null | P | P[] | Model.Effect<this>,\n arg2?: number | P[] | ((this: this, keys: Model.Event<this>[]) => void),\n arg3?: boolean){\n\n if(typeof arg1 == \"function\")\n return createEffect(this.is, arg1, arg2 as P[]);\n\n if(typeof arg2 != \"function\")\n return awaitUpdate(this.is, arg1, arg2 as number);\n\n if(arg1)\n return addEventListener(this.is, arg1 as P | P[], arg2, arg3);\n }\n\n get(): Model.Export<this>;\n\n get <P extends Model.Key<this>> (property: P): this[P];\n get <P extends Model.Key<this>> (property: P, timeout: number): Promise<this[P]>;\n get <P extends Model.Key<this>> (property: P, onChange: true): Promise<this[P]>;\n get <P extends Model.Key<this>> (property: P, onChange: boolean): this[P] | Promise<this[P]>;\n get <P extends Model.Key<this>> (property: P, listener: (this: this, value: this[P], key: P[]) => void): Callback;\n\n get <P extends Model.Key<this>> (select: Iterable<P>): Model.Get<this, P>;\n get <P extends Model.Key<this>> (select: Iterable<P>, timeout: number): Promise<Model.Get<this, P>>;\n get <P extends Model.Key<this>> (select: Iterable<P>, onChange: true): Promise<Model.Get<this, P>>;\n get <P extends Model.Key<this>> (select: Iterable<P>, onChange: boolean): Model.Get<this, P> | Promise<Model.Get<this, P>>;\n get <P extends Model.Key<this>> (select: Iterable<P>, listener: (this: this, value: Model.Get<this, P>, key: P[]) => void): Callback;\n \n get <P extends Model.Key<this>> (\n arg1?: Iterable<P> | P,\n arg2?: Function | boolean | number){\n\n const { state } = Control.for(this);\n const extract = typeof arg1 == \"string\"\n ? () => state.get(arg1)\n : () => {\n const output = {} as any;\n\n for(const key of arg1 || state.keys())\n output[key] = state.get(key);\n\n return output as Model.Get<this, P>;\n }\n\n if(!arg1 || arg2 === undefined)\n return extract();\n\n if(typeof arg2 == \"function\")\n return this.on(arg1, () => arg2(extract()));\n\n const timeout = typeof arg2 == \"number\" ? arg2 : undefined;\n\n return this.on(arg1, timeout).then(extract);\n }\n\n set(key: Model.Event<this>): PromiseLike<readonly Model.Event<this>[]>;\n set<K extends Model.Event<this>>(key: Model.Event<this>, value: Model.ValueOf<this, K>): PromiseLike<readonly Model.Event<this>[]>;\n\n set<T extends Model.Compat<this>> (source: T, select: (keyof T)[]): PromiseLike<(keyof T)[]>;\n set<T extends Model.Compat<this>> (source: T, force?: boolean): PromiseLike<(keyof T)[]>;\n\n set(\n arg1: Model.Event<this> | Model.Compat<this>,\n arg2?: boolean | any[]): any {\n\n const control = Control.for(this);\n\n if(typeof arg1 == \"object\")\n for(const key in arg1){\n if(arg2 === true || (arg2 ? arg2.includes(key) : control.state.has(key))){\n control.state.set(key, (arg1 as any)[key]);\n control.update(key as any);\n }\n }\n\n else if(typeof arg1 == \"string\"){\n control.update(arg1 as Model.Key<this>);\n\n if(1 in arguments){\n if(control.state.has(arg1))\n control.state.set(arg1, arg2);\n\n else if(arg1 in this){\n const method = (this as any)[arg1];\n\n if(typeof method == \"function\")\n method.call(this, arg2);\n }\n }\n }\n\n return <PromiseLike<readonly Model.Event<this>[] | null>> {\n then: (callback) => {\n if(!callback)\n throw Oops.NoChaining();\n\n control.waiting.add(callback);\n }\n }\n }\n\n /** \n * Clean up side effects and mark this instance for garbage-collection.\n */\n end(){\n Control.for(this).clear();\n }\n\n /**\n * Creates a new instance of this controller.\n * \n * Beyond `new this(...)`, method will activate managed-state.\n * \n * @param args - arguments sent to constructor\n */\n static new<T extends Class>(\n this: T, ...args: ConstructorParameters<T>): InstanceOf<T> {\n\n const instance = new this(...args);\n Control.for(instance);\n return instance;\n }\n\n /**\n * Static equivalent of `x instanceof this`.\n * \n * Will determine if provided class is a subtype of this one. \n */\n static isTypeof<T extends Model.Type>(\n this: T, maybe: any): maybe is T {\n\n return (\n typeof maybe == \"function\" &&\n maybe.prototype instanceof this\n )\n }\n}\n\ndefineProperty(Model.prototype, \"toString\", {\n value(){\n return this.constructor.name;\n }\n})\n\nexport { Model }","import { setRecursive } from './children';\nimport { defineProperty, getOwnPropertyDescriptor } from './helper/object';\nimport { Instruction } from './instruction/add';\nimport { flush } from './instruction/get.compute';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\nimport type { Callback } from './helper/types';\n\nconst REGISTER = new WeakMap<{}, Control>();\nconst PENDING = new Map<symbol, Instruction.Runner<any>>();\n\ndeclare namespace Control {\n /**\n * Callback for Controller.for() static method.\n * Returned callback is forwarded.\n */\n type OnReady<T extends {}> = (control: Control<T>) => Callback | void;\n\n /**\n * Called immediately when any key is changed or emitted.\n * Returned callback is notified when update is complete.\n */\n type OnSync<T = any> = (key: Model.Event<T> | null, source: Control) => OnAsync<T> | void;\n\n /** Called at the end of an event frame with all keys affected. */\n type OnAsync<T = any> = (keys: Model.Event<T>[]) => void;\n\n // TODO: implement value type\n type OnValue<T = any> = (this: T, value: any) => boolean | void;\n}\n\nclass Control<T extends {} = any> {\n public state!: Map<any, any>;\n public frame = new Set<string>();\n public waiting = new Set<Control.OnAsync<T>>();\n public followers = new Set<Control.OnSync>();\n public latest?: Model.Event<T>[];\n\n constructor(public subject: T){\n REGISTER.set(subject, this);\n }\n\n subscribe(callback: Subscriber.OnEvent<T>){\n return new Subscriber<T>(this, callback);\n }\n\n watch(key: keyof T & string){\n const { subject, state } = this;\n const { value } = getOwnPropertyDescriptor(subject, key)!;\n\n if(typeof value == \"function\")\n return;\n\n if(typeof value == \"symbol\"){\n const instruction = PENDING.get(value);\n\n if(instruction){\n delete subject[key];\n PENDING.delete(value);\n instruction.call(this, key, this);\n }\n\n return;\n }\n\n state.set(key, value);\n\n if(value instanceof Model){\n setRecursive(this, key, value);\n return;\n }\n\n defineProperty(subject, key, {\n enumerable: false,\n set: this.ref(key as any),\n get(){\n const sub = Subscriber.get(this);\n\n if(sub)\n sub.add(key);\n\n return state.get(key);\n }\n });\n }\n\n addListener(listener: Control.OnSync<T>){\n this.followers.add(listener);\n return () => {\n this.followers.delete(listener)\n }\n }\n\n ref<K extends Model.Key<T>>(\n key: K,\n handler?: (this: T, value: T[K]) => boolean | void){\n \n const { subject, state } = this;\n \n return (value: any) => {\n if(state.get(key) == value)\n return;\n \n if(handler)\n switch(handler.call(subject, value)){\n case true:\n this.update(key);\n case false:\n return;\n }\n \n state.set(key, value);\n this.update(key);\n }\n }\n\n update(key: Model.Key<T>){\n const { followers, frame, waiting } = this;\n \n if(frame.has(key))\n return;\n \n else if(!frame.size)\n setTimeout(() => {\n flush(this); \n const keys = this.latest = Array.from(frame);\n setTimeout(() => this.latest = undefined, 0);\n\n frame.clear();\n \n for(const notify of waiting)\n try {\n waiting.delete(notify);\n notify(keys);\n }\n catch(err){\n console.error(err);\n }\n }, 0);\n \n frame.add(key);\n \n for(const callback of followers){\n const event = callback(key, this);\n \n if(typeof event == \"function\")\n waiting.add(event);\n }\n }\n\n clear(){\n const listeners = [ ...this.followers ];\n\n this.followers.clear();\n listeners.forEach(x => x(null, this));\n }\n\n static get<T extends {}>(from: T){\n if(from && \"is\" in from)\n from = (from as any).is as T;\n \n return REGISTER.get(from) as Control<T> | undefined;\n }\n\n static for<T extends {}>(subject: T): Control<T>;\n static for<T extends {}>(subject: T, cb: Control.OnReady<T>): Callback;\n static for<T extends {}>(subject: T, cb?: Control.OnReady<T>){\n const control = this.get(subject) || new this(subject);\n\n if(!control.state){\n const { waiting } = control;\n \n if(cb){\n let callback: Callback | void;\n \n waiting.add(() => {\n callback = cb(control);\n });\n \n return () => {\n if(callback)\n callback();\n }\n }\n \n control.state = new Map();\n \n for(const key in subject)\n control.watch(key);\n \n control.waiting = new Set();\n \n for(const cb of waiting)\n cb([]);\n }\n \n return cb ? cb(control) : control;\n }\n}\n\nexport {\n Control,\n PENDING\n}","import { Control } from './control';\nimport { issues } from './helper/issues';\nimport { defineProperty } from './helper/object';\nimport { Callback } from './helper/types';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\nexport const Parent = new WeakMap<{}, {}>();\n\nexport const Oops = issues({\n BadAssignment: (parent, expected, got) =>\n `Property ${parent} expected Model of type ${expected} but got ${got}.`\n})\n\nexport function getRecursive(key: string, from: Control){\n const context = new WeakMap<Subscriber, {} | undefined>();\n const { state } = from;\n\n return (local: Subscriber | undefined) => {\n if(!local)\n return state.get(key);\n\n if(!context.has(local)){\n let reset: Callback | undefined;\n\n const init = () => {\n if(reset)\n reset();\n\n const value = state.get(key);\n \n if(Control.get(value)){\n const child = Control.for(value).subscribe(local.onUpdate);\n \n if(local.active)\n child.commit();\n \n local.dependant.add(child);\n context.set(local, child.proxy);\n\n reset = () => {\n child.release();\n local.dependant.delete(child);\n context.set(local, undefined);\n reset = undefined;\n }\n }\n\n return true;\n }\n \n local.add(key, init);\n init();\n }\n\n return context.get(local);\n }\n}\n\nexport function setRecursive(\n control: Control, key: string, initial: Model){\n\n const { state, subject } = control;\n const Type = initial.constructor;\n\n let get: (local: Subscriber | undefined) => any\n\n const onUpdate = (next: {} | undefined) => {\n state.set(key, next);\n\n if(!(next instanceof Type))\n throw Oops.BadAssignment(`${subject}.${key}`, Type.name, String(next));\n\n get = getRecursive(key, control);\n Parent.set(next, subject);\n Control.for(next);\n\n return true;\n }\n\n onUpdate(initial);\n\n defineProperty(subject, key, {\n set: control.ref(key, onUpdate),\n get(this: Model){\n const local = Subscriber.get(this);\n\n if(local)\n local.add(key);\n\n return get(local);\n }\n });\n}","import { getRecursive } from '../children';\nimport { Control, PENDING } from '../control';\nimport { defineProperty } from '../helper/object';\nimport { Subscriber } from '../subscriber';\nimport { suspend } from '../suspense';\n\n/**\n * Property initializer, will run upon instance creation.\n * Optional returned callback will run when once upon first access.\n */\ntype Instruction<T> = (this: Control, key: string, thisArg: Control) =>\n | Instruction.Getter<T> \n | Instruction.ExplicitDescriptor\n | Instruction.Descriptor<T>\n | Instruction.RecursiveDescriptor<T>\n | boolean\n | void;\n\ndeclare namespace Instruction {\n type Getter<T> = (within?: Subscriber) => T;\n type Setter<T> = (value: T) => boolean | void;\n\n type Runner<T> = (this: Control, key: string, on: Control) =>\n Instruction.Descriptor<T> | boolean | undefined;\n\n interface Descriptor<T> {\n configurable?: boolean;\n enumerable?: boolean;\n value?: T;\n writable?: boolean;\n get?: Getter<T>;\n set?: Setter<T> | false;\n suspend?: boolean;\n destroy?: () => void;\n }\n\n interface ExplicitDescriptor extends PropertyDescriptor {\n explicit: true;\n }\n\n interface RecursiveDescriptor<T> {\n recursive: true;\n enumerable?: boolean;\n value?: T;\n set?: Setter<T> | false;\n suspend?: boolean;\n }\n}\n\n/**\n * Run instruction as controller sets itself up.\n * This will specialize the behavior of a given property.\n */\nfunction add<T = any>(\n instruction: Instruction<any>,\n label?: string){\n\n const name = label || instruction.name || \"pending\";\n const placeholder = Symbol(`${name} instruction`);\n\n function setup(this: Control, key: string){\n const { subject, state } = this;\n\n let output = instruction.call(this, key, this);\n\n if(typeof output == \"function\")\n output = { get: output };\n\n if(typeof output != \"object\")\n return;\n\n if(\"explicit\" in output && output.explicit){\n defineProperty(subject, key, output);\n return false;\n }\n\n let {\n get: onGet,\n set: onSet,\n suspend: shouldSuspend\n } = output as Instruction.Descriptor<any>;\n\n if(\"value\" in output)\n state.set(key, output.value);\n\n if(\"recursive\" in output && output.recursive)\n onGet = getRecursive(key, this);\n\n if(\"destroy\" in output){\n const { destroy } = output;\n\n if(destroy)\n this.addListener((key) => {\n if(key == null)\n destroy();\n })\n }\n\n const control = this;\n\n defineProperty(subject, key, {\n enumerable: output.enumerable,\n\n set: onSet === false\n ? undefined\n : this.ref(key, onSet),\n\n get(this: any){\n if(!state.has(key) && shouldSuspend)\n throw suspend(control, key);\n \n const local = Subscriber.get(this);\n \n if(local)\n local.add(key);\n \n return onGet\n ? onGet(local)\n : state.get(key);\n }\n });\n }\n\n PENDING.set(placeholder, setup);\n\n return placeholder as unknown as T;\n}\n\nexport { add, Instruction }","import { issues } from '../helper/issues';\nimport { defineProperty } from '../helper/object';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\n\ntype Async<T = any> = (...args: any[]) => Promise<T>;\n\nexport const Oops = issues({\n DuplicatePending: (key) =>\n `Invoked action ${key} but one is already active.`\n})\n\n/**\n * Sets an exotic method with managed ready-state. Property accepts an async function.\n *\n * When a run-method is invoked, its `active` property to true for duration of call.\n * This is emitted as an update to property, both when called and after returns (or throws).\n *\n * **Note:** Subsequent calls will immediately throw if one is still pending.\n *\n * @param action - Action to fire when resulting property is invoked.\n */\nfunction run (action: Async): typeof action & { active: boolean };\nfunction run <S> (action: Async<S>): typeof action & { active: boolean };\n\nfunction run<T extends Async>(task: T){\n return add<T>(\n function run(key){\n let pending = false;\n\n const invoke = async (...args: any[]) => {\n if(pending)\n return Promise.reject(\n Oops.DuplicatePending(key)\n )\n\n pending = true;\n this.update(key);\n\n try {\n return await mayRetry(() => (\n task.apply(this.subject, args)\n ))\n }\n finally {\n pending = false;\n this.update(key);\n }\n }\n\n this.state.set(key, undefined);\n\n defineProperty(invoke, \"active\", {\n get: () => pending\n })\n\n return {\n value: invoke as T,\n set: false\n };\n }\n )\n}\n\nexport { run }","import { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { assign } from '../helper/object';\n\nexport const Oops = issues({\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n});\n\nexport function factoryMode<T>(\n self: Control,\n output: Promise<T> | T,\n key: string,\n required: boolean\n){\n const { subject, state } = self;\n\n let pending: Promise<any> | undefined;\n let error: any;\n\n if(output instanceof Promise){\n state.set(key, undefined);\n\n pending = output\n .catch(err => error = err)\n .then(val => {\n state.set(key, val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n self.update(key);\n })\n }\n\n state.set(key, output);\n\n const suspend = () => {\n if(required === false)\n return undefined;\n\n const issue = Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n \n return (): T | undefined => {\n if(error)\n throw error;\n\n if(pending)\n return suspend();\n\n if(state.has(key))\n return state.get(key);\n }\n}","import { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { Model } from '../model';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\nimport { computeMode } from './get.compute';\nimport { factoryMode } from './get.factory';\n\nexport const Oops = issues({\n PeerNotAllowed: (model, property) =>\n `Attempted to use an instruction result (probably use or tap) as computed source for ${model}.${property}. This is not possible.`,\n\n ComputeFailed: (model, key) =>\n `Generating initial value for ${model}.${key} failed.`,\n\n Failed: (parent, property, initial) =>\n `An exception was thrown while ${initial ? \"initializing\" : \"refreshing\"} [${parent}.${property}].`\n});\n\ndeclare namespace get {\n type Function<T, S = any> = (this: S, on: S) => T;\n type Factory<T, S = unknown> = (this: S, key: string, thisArg: S) => T;\n}\n\n/**\n * Implement a computed value; output will be generated by provided function.\n *\n * @param source - Source model from which computed value will be a subscriber.\n * @param compute - Compute function. Bound to a subscriber-proxy of source, returns output value. Will update automatically as input values change.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (source: T, compute: (this: T, on: T) => R, suspend?: boolean): R;\n\n/**\n * Implement a computed value; output is returned by function from provided factory.\n *\n * @param compute - Factory function to generate a getter to subscribe dependancies.\n * @param suspend - Value will throw suspense when evaulating to undefined.\n */\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend: true): Exclude<R, undefined>;\nfunction get <R, T> (compute: (property: string, on: T) => (this: T, state: T) => R, suspend?: boolean): R;\n\n/**\n * Set property with an async function.\n *\n * Property cannot be accessed until factory resolves, yeilding a result.\n * If accessed while processing, React Suspense will be thrown.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T> (factory: get.Factory<Promise<T>>, required: false): T | undefined;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required: false): T | undefined;\n\nfunction get <T> (factory: get.Factory<Promise<T>>, required?: boolean): T;\nfunction get <T, S> (factory: get.Factory<Promise<T>, S>, required?: boolean): T;\n\n/**\n * Set property with a factory function.\n *\n * - `required: true` (default) -\n * Run factory immediately upon creation of model instance.\n * - `required: false` -\n * Run factory only if/when accessed.\n * Value will always throw suspense at least once - use with caution.\n *\n * @param factory - Callback run to derrive property value.\n * @param required - (default: true) Run factory immediately on creation, otherwise on access.\n */\nfunction get <T>(factory: get.Factory<T>, required: false): T | undefined;\nfunction get <T, S>(factory: get.Factory<T, S>, required: false): T | undefined;\n\nfunction get <T>(factory: get.Factory<T>, required?: boolean): T;\nfunction get <T, S>(factory: get.Factory<T, S>, required?: boolean): T;\n\n/**\n * Assign a property with result of a promise.\n */\nfunction get <T> (factory: Promise<T>, required: false): T | undefined;\nfunction get <T> (factory: Promise<T>, required?: boolean): T;\n \nfunction get<R, T>(\n arg0: ((this: T, key: string, thisArg: T) => get.Function<R, T> | T) | Promise<R> | Model,\n arg1?: get.Function<T> | boolean,\n arg2?: boolean): R {\n\n return add(\n function get(key){\n const { subject } = this;\n const computeRequired = arg1 === true || arg2 === true;\n const factoryRequired = arg1 !== false && arg2 !== false;\n\n let getter: () => any;\n\n // Easy mistake, using a peer, will always be unresolved.\n if(typeof arg0 == \"symbol\")\n throw Oops.PeerNotAllowed(subject, key);\n\n // if(typeof arg0 == \"function\" && /^[A-Z]/.test(arg0.name))\n // throw Oops.BadSource(subject, key, arg0);\n\n this.state.set(key, undefined);\n\n const init = (): any => {\n let source = this;\n let setter: get.Function<T, any>;\n \n if(typeof arg0 == \"function\"){\n const result = mayRetry(() => arg0.call(subject, key, subject));\n \n if(typeof result == \"function\")\n setter = result;\n else {\n getter = factoryMode(this, result, key, factoryRequired);\n return;\n }\n }\n else if(arg0 instanceof Promise){\n getter = factoryMode(this, arg0, key, factoryRequired);\n return;\n }\n else if(typeof arg1 == \"function\"){\n // replace source controller in-case it is different\n source = Control.for(arg0);\n setter = arg1;\n }\n else\n throw new Error(`Factory argument cannot be ${arg1}`);\n\n getter = computeMode(this, source, setter, key, computeRequired);\n }\n\n if(typeof arg0 == \"function\" && computeRequired)\n try {\n init();\n }\n catch(err){\n Oops.ComputeFailed(subject, key).warn();\n throw err;\n }\n\n return () => {\n if(!getter)\n init();\n\n return getter();\n }\n }\n )\n}\n\nexport { get }","import { Control } from '../control';\nimport { createValueEffect } from '../effect';\nimport { defineProperty } from '../helper/object';\nimport { Model } from '../model';\nimport { add } from './add';\n\ndeclare namespace ref {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<void> | void | boolean;\n\n interface Object<T = any> {\n (next: T): void;\n current: T | null;\n }\n\n /** Object with references to all managed values of `T`. */\n type Proxy<T extends Model> = {\n [P in Model.Key<T>]-?: Model.Ref<T[P]>\n };\n\n type CustomProxy<T extends Model, R> = {\n [P in Model.Key<T>]-?: R;\n }\n}\n\n/**\n * Creates an object with references to all managed values.\n * Each property is a function to set value in state when invoked.\n *\n * *Properties are simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param target - Source model from which to reference values.\n */\nfunction ref <T extends Model> (target: T): ref.Proxy<T>;\n\n/**\n * Creates an object with values based on managed values.\n * Each property will invoke mapper function on first access supply\n * the its return value going forward.\n *\n * @param target - Source model from which to reference values.\n * @param mapper - Function producing the placeholder value for any given property.\n */\nfunction ref <O extends Model, R>\n (target: O, mapper: (key: Model.Key<O>) => R): ref.CustomProxy<O, R>;\n\n/**\n * Creates a ref-compatible property.\n * Will persist value, and updates to this are made part of controller event-stream.\n *\n * *Output is simultaneously a ref-function and ref-object, use as needed.*\n *\n * @param callback - Optional callback to synchronously fire when reference is first set or does update.\n */\nfunction ref <T = HTMLElement> (callback?: ref.Callback<T>): ref.Object<T>;\nfunction ref <T, S> (callback?: ref.Callback<T, S>): ref.Object<T>;\n\nfunction ref<T>(\n arg?: ref.Callback<T> | Model,\n mapper?: (key: string) => any){\n\n return add(\n function ref(key){\n let value: ref.Object | ref.Proxy<any> = {};\n\n this.state.set(key, undefined);\n\n if(typeof arg != \"object\")\n value = createRef(this, key, arg);\n else\n Control.for(arg).state.forEach((_val, key) => {\n defineProperty(value, key,\n mapper ? {\n configurable: true,\n get(){\n const out = mapper(key);\n defineProperty(value, key, { value: out });\n return out;\n }\n } : {\n value: createRef(this, key)\n })\n })\n\n return { value, explicit: true };\n }\n )\n}\n\nexport { ref }\n\nfunction createRef(\n src: Control,\n key: string,\n cb?: ref.Callback<any>){\n\n const refObjectFunction =\n src.ref(key, cb && createValueEffect(cb));\n\n defineProperty(refObjectFunction, \"current\", {\n set: refObjectFunction,\n get: () => src.state.get(key)\n })\n\n return refObjectFunction as ref.Object;\n}","import { createValueEffect } from '../effect';\nimport { add } from './add';\n\ndeclare namespace set {\n type Callback<T, S = any> = (this: S, argument: T) =>\n ((next: T) => void) | Promise<any> | void | boolean;\n}\n\n/**\n * Set property with a placeholder.\n * \n * Property cannot be accessed until it is defined. If accessed while undefined, a hybrid\n * `Promise`/`Error` (ala: [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html)) will be thrown.\n */\nfunction set <T = any>(): T;\n\nfunction set <T> (onUpdate: set.Callback<T>): T;\nfunction set <T, S> (onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: undefined, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: undefined, onUpdate: set.Callback<T, S>): T;\n\nfunction set <T> (value: T, onUpdate: set.Callback<T>): T;\nfunction set <T, S> (value: T, onUpdate: set.Callback<T, S>): T;\n\nfunction set(\n value?: any,\n argument?: set.Callback<any> | boolean): any {\n\n if(!(1 in arguments)){\n argument = value;\n value = undefined;\n }\n\n return add(\n function set(key){\n if(value !== undefined)\n this.state.set(key, value);\n\n return {\n suspend: true,\n set: typeof argument == \"function\"\n ? createValueEffect(argument)\n : undefined\n }\n }\n )\n}\n\nexport { set }","import { Control } from '../control';\nimport { assign, create, defineProperty } from '../helper/object';\nimport { Subscriber } from '../subscriber';\nimport { Instruction } from './add';\n\ntype MapFunction<T, R> =\n T extends Map<infer K, infer V> ?\n (value: V, key: K, map: T) => R | void :\n T extends Set<infer K> ?\n (value: K, key: K, set: T) => R | void :\n never;\n\ntype Managed<T> = Exclude<T, \"forEach\"> & {\n from?: T;\n\n forEach<R>(\n mapFunction: MapFunction<T, R>,\n thisArg?: any\n ): Exclude<R, undefined>[] | void;\n}\n\nconst ANY = Symbol(\"any\");\n\ntype Keyed<K = unknown> = Set<K> | Map<K, unknown>;\n\nfunction keyed<T extends Keyed>(\n control: Control,\n property: any,\n initial: T\n): Instruction.Descriptor<T> {\n type K = typeof ANY | (\n T extends Set<infer U> ? U :\n T extends Map<infer U, any> ? U :\n never\n );\n\n const init = createProxy(emit, watch);\n const frozen = new Set<Subscriber>();\n const context = new Map<Subscriber, T>();\n const users = new Map<Subscriber, Set<K>>();\n const watched = new WeakMap<T, Set<K>>();\n const update = new Set<(key: K) => void>();\n\n let managed: T = init(initial);\n\n function watch(on: any, key: K){\n const include = watched.get(on);\n\n if(include)\n include.add(key);\n }\n\n function emit(key: K){\n control.update(property);\n control.waiting.add(() => frozen.clear());\n update.forEach(notify => notify(key));\n }\n\n function subscribe(local: Subscriber){\n const proxy = create(managed);\n let watch = users.get(local);\n\n if(!watch){\n const using = watch = new Set<K>();\n users.set(local, using);\n \n function onEvent(key: K){\n if(frozen.has(local))\n return;\n \n if(key === ANY || using.has(key) || using.has(ANY)){\n const refresh = local.onUpdate(property, control);\n \n if(refresh){\n frozen.add(local);\n refresh()\n }\n }\n }\n \n local.add(property, false);\n local.dependant.add({\n commit(){\n if(using.size === 0)\n using.add(ANY);\n \n update.add(onEvent);\n },\n release(){\n update.delete(onEvent);\n }\n })\n }\n\n watched.set(proxy, watch);\n context.set(local, proxy);\n\n return proxy;\n }\n\n return {\n value: initial,\n get(local){\n return local ?\n context.get(local) || subscribe(local) :\n managed;\n },\n set(next){\n control.state.set(property, next);\n managed = init(next);\n context.clear();\n emit(ANY);\n },\n destroy(){\n update.clear();\n context.clear();\n }\n }\n}\n\nfunction createProxy(\n emit: (key: any) => void,\n watch: (self: any, key: any) => void){\n\n return <T extends Keyed<any>>(from: T) => {\n const proxy = create(from) as T;\n\n assign(proxy,\n {\n from,\n delete(key: any){\n // TODO: this commit's fix needs tests.\n // Was not cause by coverage.\n const out = from.delete(key);\n emit(key);\n return out;\n },\n clear(){\n from.clear();\n emit(ANY);\n },\n has(key: any){\n watch(this, key);\n return from.has(key);\n },\n keys(){\n watch(this, ANY);\n return from.keys();\n },\n values(){\n watch(this, ANY);\n return from.values();\n },\n entries(){\n watch(this, ANY);\n return from.entries();\n },\n forEach(\n callbackfn: (a: any, b: any, c: any) => any,\n thisArg: any){\n\n const acc = [] as any[];\n\n from.forEach((a, b, c) => {\n const result = callbackfn.call(thisArg, a, b, c);\n\n if(result !== undefined)\n acc.push(result);\n });\n\n watch(this, ANY);\n\n return acc;\n },\n [Symbol.iterator](){\n watch(this, ANY);\n return from[Symbol.iterator]();\n },\n },\n from instanceof Set\n ? {\n add(key: any){\n from.add(key);\n emit(key);\n return this;\n }\n }\n : {\n get(key: any){\n watch(this, ANY);\n return from.get(key);\n },\n set(key: any, value: any){\n from.set(key, value);\n emit(key);\n return this;\n }\n }\n )\n\n defineProperty(proxy, \"size\", {\n get(){\n watch(this, ANY);\n return from.size;\n }\n })\n \n return proxy;\n }\n}\n\nexport { keyed, Managed };","import { getRecursive, Parent } from '../children';\nimport { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { assign } from '../helper/object';\nimport { Model } from '../model';\nimport { Subscriber } from '../subscriber';\nimport { mayRetry } from '../suspense';\nimport { add } from './add';\nimport { keyed, Managed } from './use.keyed';\n\n\nexport const Oops = issues({\n BadArgument: (type) =>\n `Instruction \\`use\\` cannot accept argument type of ${type}.`,\n\n NotReady: (model, key) =>\n `Value ${model}.${key} value is not yet available.`\n})\n\nfunction use <K = any> (initial: SetConstructor): Managed<Set<K>>;\nfunction use <K = any, V = any> (initial: MapConstructor): Managed<Map<K, V>>;\n\nfunction use (initial: Set<unknown>): Managed<Set<any>>;\nfunction use (initial: Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use (from: () => Set<unknown>): Managed<Set<any>>;\nfunction use (from: () => Map<unknown, unknown>): Managed<Map<any, any>>;\n\nfunction use <T extends Set<any> | Map<any, any>> (initial: T): Managed<T>;\nfunction use <T extends Set<any> | Map<any, any>> (from: () => T): Managed<T>;\n\n/**\n * Create a placeholder for specified Model type.\n */\nfunction use <T extends Model> (): T | undefined;\nfunction use <T extends Model> (from: () => T, required: false): T | undefined;\nfunction use <T extends Model> (from: () => T, required: boolean): T;\n\n /**\n * Create a new child instance of model.\n */\nfunction use <T extends Model> (Type: Model.Type<T>, callback?: (i: T) => void): T;\n\n /**\n * Create a managed child from factory function.\n */\nfunction use <T extends {}> (from: () => Promise<T>, required: false): T | undefined;\nfunction use <T extends {}> (from: () => Promise<T>, required: boolean): T;\nfunction use <T extends {}> (from: () => Promise<T>, callback?: (i: T) => void): T;\nfunction use <T extends {}> (from: () => T, callback?: (i: T) => void): T;\n\n /**\n * Create child-instance relationship with provided model.\n *\n * Note: If `peer` is not already initialized before parent is\n * (created with `new` as opposed to create method), that model will\n * attach this via `parent()` instruction. It will not, however, if\n * already active.\n */\nfunction use <T extends {}> (peer: T, callback?: (i: T) => void): T;\n\nfunction use(\n input?: any,\n argument?: boolean | ((i: {} | undefined) => void)){\n\n return add(\n function use(key){\n const { state, subject } = this;\n const required = argument !== false;\n\n let pending: Promise<any> | undefined;\n let error: any;\n let get: (local: Subscriber | undefined) => any =\n (_local: Subscriber | undefined) => state.get(key);\n\n if(typeof input === \"function\"){\n if(\"prototype\" in input && input === input.prototype.constructor)\n input = new input();\n }\n\n else if(input && typeof input !== \"object\")\n throw Oops.BadArgument(typeof input);\n\n if(input instanceof Map || input instanceof Set)\n return keyed(this, key, input);\n\n const onUpdate = (next: {} | undefined) => {\n state.set(key, next);\n\n if(next){\n get = getRecursive(key, this);\n Parent.set(next, subject);\n Control.for(next);\n }\n\n if(typeof argument == \"function\")\n argument(next);\n\n return true;\n }\n\n const suspend = () => {\n if(required === false)\n return;\n\n const issue = Oops.NotReady(subject, key);\n\n assign(pending!, {\n message: issue.message,\n stack: issue.stack\n });\n\n throw pending;\n }\n\n const initialize = () => {\n const output = typeof input == \"function\" ?\n mayRetry(() => input.call(subject, subject)) :\n input;\n\n if(output instanceof Promise){\n pending = output\n .catch(err => error = err)\n .then(val => {\n onUpdate(val);\n return val;\n })\n .finally(() => {\n pending = undefined;\n this.update(key);\n })\n\n return;\n }\n\n onUpdate(output);\n }\n\n if(input !== undefined && required)\n initialize();\n\n return {\n set: onUpdate,\n get(local){\n if(pending)\n return suspend();\n \n if(error)\n throw error;\n\n if(!state.has(key))\n initialize();\n \n if(pending)\n return suspend();\n \n return get(local);\n }\n };\n }\n )\n}\n\nexport { use }","import { Parent } from '../children';\nimport { issues } from '../helper/issues';\nimport { Model } from '../model';\nimport { add } from './add';\n\nexport const Oops = issues({\n Required: (expects, child) => \n `New ${child} created standalone but requires parent of type ${expects}. Did you remember to create via use(${child})?`,\n\n Unexpected: (expects, child, got) =>\n `New ${child} created as child of ${got}, but must be instanceof ${expects}.`,\n})\n\n/**\n * Fetches and assigns the controller which spawned this host.\n * When parent assigns an instance via `use()` directive, it\n * will be made available to child upon this request.\n *\n * @param Type - Type of controller compatible with this class. \n * @param required - Throw if controller is created independantly.\n */\nfunction has <T extends Model> (Type: Model.Type<T>, required: false): T | undefined;\nfunction has <T extends Model> (Type: Model.Type<T>, required?: true): T;\n\nfunction has<T extends Model>(\n Type: Model.Type<T>, required?: boolean){\n\n return add(\n function parent(){\n const child = this.subject;\n const value = Parent.get(child) as T;\n const expected = Type.name;\n\n if(!value){\n if(required !== false)\n throw Oops.Required(expected, child);\n }\n else if(!(value instanceof Type))\n throw Oops.Unexpected(expected, child, value);\n\n return { value };\n }\n );\n }\n\n export { has }","import React from 'react';\nimport { Control } from '../control';\n\nimport { issues } from '../helper/issues';\nimport { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertySymbols, getPrototypeOf, unique } from '../helper/object';\nimport { Model } from '../model';\n\nconst Oops = issues({\n NotFound: (name) =>\n `Couldn't find ${name} in context; did you forget to use a Provider?`\n})\n\nclass Lookup {\n private table = new Map<Model.Type, symbol>();\n\n public get local(){\n return unique<Model>(\n getOwnPropertySymbols(this).map(\n symbol => (this as any)[symbol]\n )\n )\n }\n\n private key(T: Model.Type){\n let key = this.table.get(T);\n\n if(!key){\n key = Symbol(T.name);\n this.table.set(T, key);\n }\n\n return key;\n }\n\n public get(T: Model.Type){\n return (this as any)[this.key(T)];\n }\n\n public add(input: Model.Type | Model){\n let writable = true;\n let T: Model.Type;\n let I: Model;\n\n if(typeof input == \"function\"){\n T = input;\n I = input.new();\n }\n else {\n I = input;\n T = I.constructor as Model.Type;\n writable = false;\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 Control.for(I).state.forEach(value => {\n if(value instanceof Model)\n this.add(value);\n })\n }\n\n public push(){\n return create(this) as this;\n }\n\n public pop(){\n const items = new Set<Model>();\n\n for(const key of getOwnPropertySymbols(this)){\n const entry = getOwnPropertyDescriptor(this, key)!;\n\n if(entry.writable && entry.value)\n items.add(entry.value)\n }\n\n for(const model of items)\n model.end();\n }\n}\n\nconst LookupContext = React.createContext(new Lookup());\nconst useLookup = () => React.useContext(LookupContext);\n\nfunction useContext <T extends Model> (Type: Model.Type<T>, required: false): T | undefined;\nfunction useContext <T extends Model> (Type: Model.Type<T>, required?: boolean): T;\n\nfunction useContext<T extends Model>(Type: Model.Type<T>, required?: boolean): T | undefined {\n const instance = useLookup().get(Type);\n\n if(!instance && required !== false)\n throw Oops.NotFound(Type.name);\n \n return instance;\n}\n\nexport { Lookup, useLookup, useContext, Oops, LookupContext }","import { issues } from '../helper/issues';\nimport { InstanceOf } from '../helper/types';\nimport { add } from '../instruction/add';\nimport { Model } from '../model';\nimport { Lookup, useLookup } from './context';\nimport { MVC } from './mvc';\n\nexport const Oops = issues({\n NotAllowed: (parent, child) =>\n `Global '${parent}' attempted to attach '${child}' but it is not also a singleton.`,\n\n AmbientRequired: (requested, requester, key) =>\n `Attempted to find an instance of ${requested} in context. It is required for [${requester}.${key}], but one could not be found.`\n})\n\nconst Pending = new WeakMap<{}, ((context: Lookup) => void)[]>();\nconst Applied = new WeakMap<Model, boolean>();\n\n/**\n * Find and attach most applicable instance of Model via context.\n * \n * Host controller will search element-hierarchy relative to where it spawned.\n * \n * @param Type - Type of model to find from context\n * @param callback -\n * - Invoked after context is scanned, is passed result - either found or undefined.\n * - If argument is inadequate, but required, your implemention should simply throw.\n * - If inadequate and not required, conditionally return false.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, callback?: (instance?: T) => void | boolean): T | undefined;\n\n/**\n * Find and attach most applicable instance of Model via context.\n *\n * Expects a `<Provider>` of target controller to exist. \n * Host controller will search element-hierarchy relative to where it spawned.\n *\n * @param Type - Type of controller to attach to property. \n * @param required - Throw if instance of Type cannot be found.\n */\nfunction tap <T extends Model> (Type: Model.Type<T>, required: true): T;\nfunction tap <T extends Model> (Type: Model.Type<T>, required?: boolean): T | undefined;\n\nfunction tap<T extends typeof MVC>(\n type: T,\n argument?: boolean | ((instance: InstanceOf<T> | undefined) => void | boolean)){\n\n return add(\n function tap(key){\n if(type.global)\n return {\n recursive: true,\n value: type.get()\n }\n\n const { subject } = this;\n\n if(subject.constructor.global)\n throw Oops.NotAllowed(subject, type.name);\n\n getPending(subject).push(context => {\n let instance = context.get(type);\n\n if(typeof argument == \"function\"){\n if(argument(instance) === false)\n instance = undefined;\n }\n\n else if(!instance && argument)\n throw Oops.AmbientRequired(type.name, subject, key);\n\n this.state.set(key, instance);\n this.update(key);\n })\n\n return {\n recursive: true,\n suspend: true\n }\n }\n )\n};\n\nfunction usePeerContext(subject: Model){\n if(Applied.has(subject)){\n if(Applied.get(subject))\n useLookup();\n\n return;\n }\n\n const pending = Pending.get(subject);\n\n if(pending){\n const local = useLookup();\n\n for(const init of pending)\n init(local);\n\n Pending.delete(subject);\n }\n\n Applied.set(subject, !!pending);\n}\n\nfunction getPending(subject: {}){\n let pending = Pending.get(subject);\n\n if(!pending)\n Pending.set(subject, pending = []);\n\n return pending;\n}\n\nexport { tap, usePeerContext, getPending }","import React from 'react';\n\nimport { Callback } from '../helper/types';\n\nexport function use<T>(init: (trigger: Callback) => T){\n const [ state, update ] = React.useState((): T[] => [\n init(() => update(state.concat()))\n ]);\n\n return state[0];\n}","import React, { useState } from 'react';\n\nimport { Control } from '../control';\nimport { Model } from '../model';\nimport { usePeerContext } from './tap';\nimport { use } from './use';\n\nfunction useNew <T extends Model> (\n source: Model.Type<T> | (() => T),\n callback?: (instance: T) => void\n): T;\n\nfunction useNew <T extends Model> (\n source: Model.Type<T> | (() => T),\n watch: Model.Key<T>[],\n callback?: (instance: T) => void\n): T;\n\nfunction useNew <T extends Model> (\n source: Model.Type<T> | (() => T),\n apply: Model.Compat<T>,\n keys?: Model.Event<T>[]\n): T;\n\nfunction useNew <T extends Model> (\n source: (() => T) | Model.Type<T>,\n arg1?: ((i: T) => void) | Model.Event<T>[] | Model.Compat<T>,\n arg2?: ((i: T) => void) | Model.Key<T>[]){\n\n const instance = React.useMemo(() => {\n const callback = arg2 || arg1;\n const instance = Model.isTypeof(source)\n ? new source() as T\n : source();\n\n Control.for(instance);\n\n if(typeof callback == \"function\")\n callback(instance);\n\n return instance;\n }, []);\n\n usePeerContext(instance);\n\n if(Array.isArray(arg1)){\n const update = useState(0)[1];\n\n React.useLayoutEffect(() => { \n if(arg1.length && instance instanceof Model)\n instance.on(arg1, () => update(x => x+1));\n\n return () => {\n if(Model.isTypeof(source))\n (instance as Model).end();\n }\n }, []);\n\n return instance;\n }\n \n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n if(typeof arg1 == \"object\")\n local.assign(arg1, arg2);\n\n React.useLayoutEffect(() => {\n local.commit();\n\n return () => {\n local.release();\n\n if(Model.isTypeof(source))\n (instance as Model).end();\n };\n }, []);\n\n return local.proxy;\n}\n\nexport { useNew }","import React from 'react';\n\nimport { Control } from '../control';\nimport { defineProperty } from '../helper/object';\nimport { use } from './use';\n\nimport type { Callback, NoVoid } from '../helper/types';\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect: true\n): Exclude<R, undefined>;\n\nfunction useValue <T extends {}, R> (\n source: (() => T) | T,\n compute: (this: T, from: T) => R,\n expect?: boolean\n): NoVoid<R>;\n\nfunction useValue(\n source: {},\n compute: Function,\n suspend?: boolean) {\n\n const local = use(refresh => {\n const sub = Control.for(source).subscribe(() => update);\n const spy = sub.proxy;\n\n let value = compute.call(spy, spy);\n let update: Callback | undefined;\n let retry: Callback | undefined;\n\n const set = (next: any) => {\n value = next;\n\n if(retry) {\n retry();\n retry = undefined;\n }\n else\n refresh();\n };\n\n if(value === null){\n sub.watch.clear();\n return {\n proxy: null,\n release: () => {}\n }\n }\n\n if(typeof value == \"function\"){\n const get = value;\n\n sub.watch.clear();\n compute = () => get();\n value = get();\n }\n\n if(value instanceof Promise) {\n value.then(set);\n value = undefined;\n }\n else {\n sub.commit();\n update = () => {\n const next = compute.call(spy, spy);\n\n if(value != next)\n set(next);\n };\n }\n\n defineProperty(sub, \"proxy\", {\n get() {\n if(value !== undefined)\n return value;\n\n if(suspend)\n throw new Promise<void>(res => retry = res);\n\n return null;\n }\n });\n\n return sub;\n });\n\n React.useLayoutEffect(() => local.release, []);\n\n return local.proxy;\n}\n\nexport { useValue }\n","import React, { useMemo } from 'react';\n\nimport { Control } from '../control';\nimport { NoVoid } from '../helper/types';\nimport { Model } from '../model';\nimport { suspend } from '../suspense';\nimport { useContext } from './context';\nimport { MVC } from './mvc';\nimport { use } from './use';\nimport { useValue } from './useValue';\n\ndeclare namespace useTap {\n type Source<T extends Model> =\n | T\n | Model.Type<T>\n | (() => T | Model.Type<T>);\n}\n\nfunction useTap <T extends Model> (source: useTap.Source<T>): T;\n\nfunction useTap <T extends Model, K extends Model.Key<T>> (source: useTap.Source<T>, path: K, expect: true): Exclude<T[K], undefined>;\nfunction useTap <T extends Model, K extends Model.Key<T>> (source: useTap.Source<T>, path: K, expect?: boolean): NoVoid<T[K]>;\n\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, connect: (this: T, model: T) => () => R): NoVoid<R>;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, connect: (this: T, model: T) => (() => R) | null): NoVoid<R> | null;\n\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => Promise<R> | R, expect: true): Exclude<R, undefined>;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => Promise<R>, expect?: boolean): NoVoid<R> | null;\nfunction useTap <T extends Model, R> (source: useTap.Source<T>, compute: (this: T, model: T) => R, expect?: boolean): NoVoid<R>;\n\nfunction useTap <T extends Model> (\n source: typeof Model | typeof MVC | (() => any),\n arg1?: Model.Key<T> | ((this: T, from: T) => any),\n arg2?: boolean) {\n\n const instance: T = useMemo(() => {\n if(typeof source == \"object\")\n return () => source;\n\n if(Model.isTypeof(source))\n return \"get\" in source\n ? () => source.get()\n : () => useContext(source);\n\n return source;\n }, [])();\n\n if(typeof arg1 == \"function\")\n return useValue(instance, arg1, arg2);\n\n const local = use(refresh => (\n Control.for(instance).subscribe(() => refresh)\n ));\n\n React.useLayoutEffect(local.commit, []);\n\n if(arg1 === undefined)\n return local.proxy;\n\n const value = local.proxy[arg1];\n\n if(value === undefined && arg2)\n throw suspend(local.parent, arg1);\n\n return value;\n}\n\nexport { useTap }","import React from 'react';\n\nimport { issues } from '../helper/issues';\nimport { Callback, Class, InstanceOf, NoVoid } from '../helper/types';\nimport { Model } from '../model';\nimport { useContext } from './context';\nimport { useNew } from './useNew';\nimport { useTap } from './useTap';\n\nexport const Global = new WeakMap<Class, MVC>();\n\nexport const Oops = issues({\n DoesNotExist: (name) =>\n `Tried to access singleton ${name}, but none exist! Did you forget to initialize?\\nCall ${name}.new() before attempting to access, or consider using ${name}.use() instead.`,\n\n AlreadyExists: (name) =>\n `Shared instance of ${name} already exists! Consider unmounting existing, or use ${name}.reset() to force-delete it.`\n})\n\ndeclare namespace MVC {\n type EffectCallback<T = MVC> = (found: T) => Callback | void;\n}\n\nclass MVC extends Model {\n end(force?: boolean): boolean | void {\n const type = this.constructor as typeof MVC;\n \n if(type.keepAlive && !force)\n return false;\n\n super.end();\n Global.delete(type);\n\n return true;\n }\n\n static global?: boolean;\n static keepAlive?: boolean;\n\n /**\n * Create a new instance of this model and activate its managed state.\n * \n * @param args - arguments sent to constructor\n */\n static new <T extends Class> (this: T, ...args: ConstructorParameters<T>): InstanceOf<T>;\n\n static new(...args: []){\n if(Global.has(this))\n if(this.keepAlive)\n return Global.get(this);\n else\n throw Oops.AlreadyExists(this.name);\n\n const instance = super.new(...args) as MVC;\n\n if(this.global)\n Global.set(this, instance);\n\n return instance;\n }\n\n /**\n * **React Hook** - Fetch most instance of this controller from context, if it exists.\n * \n * @param required - Unless false, will throw where instance cannot be found.\n */\n static get <T extends MVC> (this: Model.Type<T>, required?: boolean, effectCallback?: MVC.EffectCallback<T>): T;\n\n /**\n * **React Hook** - Fetch most instance of this controller from context.\n * \n * @param required - If false, may return undefined.\n */\n static get <T extends MVC> (this: Model.Type<T>, required: false, effectCallback?: MVC.EffectCallback<T | undefined>): T | undefined;\n\n /**\n * **React Hook** - Fetch instance.\n * \n * Effect callback will run once if found, throw if not found.\n * Returned function is called on unmount.\n */\n static get <I extends MVC> (this: Model.Type<I>, effectCallback: MVC.EffectCallback<I>): I | undefined;\n\n /**\n * **React Hook** - Fetch specific value from instance of this controller in context.\n */\n static get <I extends MVC, K extends Model.Key<I>> (this: Model.Type<I>, key: K): I[K];\n\n static get(\n arg1?: string | boolean | MVC.EffectCallback,\n arg2?: MVC.EffectCallback<MVC | undefined>){\n\n let instance: MVC | undefined;\n const required = arg1 === undefined || arg1 === true;\n\n if(this.global){\n instance = Global.get(this);\n\n if(!instance && required)\n throw Oops.DoesNotExist(this.name);\n }\n else\n instance = useContext(this, required);\n\n function callback(effect: MVC.EffectCallback<any>){\n try {\n React.useLayoutEffect(() => effect(instance!), []);\n }\n catch(err){\n if(instance)\n instance.on(effect, []);\n else\n effect(undefined);\n }\n }\n\n if(typeof arg1 === \"string\")\n return (instance as any)[arg1];\n\n if(typeof arg1 === \"function\" && instance)\n callback(arg1);\n else if(arg2)\n callback(arg2);\n\n return instance;\n }\n\n /** \n * **React Hook** - Fetch and subscribe to instance of this controller within ambient component.\n */\n static tap <T extends MVC> (this: Model.Type<T>): T;\n\n static tap <T extends MVC, K extends Model.Key<T>> (this: Model.Type<T>, key: K, expect: true): Exclude<T[K], undefined>;\n static tap <T extends MVC, K extends Model.Key<T>> (this: Model.Type<T>, key: K, expect?: boolean): NoVoid<T[K]>;\n\n static tap <T extends MVC, R> (this: Model.Type<T>, connect: (this: T, model: T) => () => R): NoVoid<R>;\n static tap <T extends MVC, R> (this: Model.Type<T>, connect: (this: T, model: T) => (() => R) | null): NoVoid<R> | null;\n\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => Promise<R> | R, expect: true): Exclude<R, undefined>;\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => Promise<R>, expect?: boolean): NoVoid<R> | null;\n static tap <T extends MVC, R> (this: Model.Type<T>, compute: (this: T, model: T) => R, expect?: boolean): NoVoid<R>;\n\n static tap (key?: string | Function, expect?: boolean): any {\n return useTap(this, key as any, expect);\n }\n\n static use <I extends MVC> (this: Model.Type<I>, watch: Model.Key<I>[], callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, callback?: (instance: I) => void): I;\n static use <I extends MVC> (this: Model.Type<I>, apply: Model.Compat<I>, keys?: Model.Event<I>[]): I;\n\n static use <T extends typeof MVC> (this: T, a: any, b?: any){\n return useNew(this, a, b);\n }\n\n static meta <T extends Class>(this: T): T;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect: true): Exclude<T[K], undefined>;\n static meta <T extends Class, K extends keyof T> (this: T, key: K, expect?: boolean): T[K];\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => Promise<T>, expect?: boolean): T;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect: true): Exclude<T, undefined>;\n static meta <T, M extends Class> (this: M, from: (this: M, state: M) => T, expect?: boolean): T;\n\n static meta (path?: string | Function, expect?: boolean): any {\n return useTap(() => this, path as any, expect);\n }\n}\n\nexport { MVC };","import React from 'react';\n\nimport { issues } from '../helper/issues';\nimport { Class } from '../helper/types';\nimport { useContext } from './context';\nimport { useTap } from './useTap';\n\nexport const Oops = issues({\n BadProps: () =>\n `Provider expects either a render function, 'get' or 'has' props.`\n})\n\ndeclare namespace Consumer {\n type HasProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Getter function. Is called on every natural render of this component.\n * Will throw if usable instance cannot be found in context.\n */\n has: (value: InstanceType<E>) => void;\n }\n\n type GetProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /** Getter function. Is called on every natural render of this component. */\n get: (value: InstanceType<E> | undefined) => void;\n }\n\n type RenderProps<E extends Class> = {\n /** @deprecated - use for instead */\n of?: never;\n\n /** Type of controller to fetch from context. */\n for: E;\n\n /**\n * Render function, will receive instance of desired controller.\n *\n * Similar to `tap()`, updates to properties accessed in\n * this function will cause a refresh when they change.\n */\n children: (value: InstanceType<E>) => React.ReactElement<any, any> | null;\n }\n\n type Props<T extends Class> = HasProps<T> | GetProps<T> | RenderProps<T>\n}\n\nfunction Consumer<T extends Class>(props: Consumer.Props<T>){\n const { get, has, children, for: type } = props as any;\n\n if(typeof children == \"function\")\n return children(useTap(type));\n\n const callback = has || get;\n\n if(typeof callback == \"function\")\n callback(useContext(type, !!has));\n else\n throw Oops.BadProps()\n\n return null;\n}\n\nexport { Consumer };","import React from 'react';\n\nimport { Control } from '../control';\nimport { issues } from '../helper/issues';\nimport { values } from '../helper/object';\nimport { Class } from '../helper/types';\nimport { Model } from '../model';\nimport { Subscriber } from '../subscriber';\nimport { Lookup, LookupContext, useLookup } from './context';\nimport { getPending } from './tap';\nimport { use } from './use';\n\nexport const Oops = issues({\n NoType: () =>\n \"Provider 'for' prop must be Model, typeof Model or a collection of them.\"\n})\n\ndeclare namespace Provider {\n type Item = Model | Model.Type;\n\n type Multiple<T extends Item = Item> = T[] | { [key: string]: T };\n\n type Instance<E> = E extends Class ? InstanceType<E> : E extends Model ? E : never;\n\n type NormalProps<E, I = Instance<E>> = {\n for: E;\n children?: React.ReactNode | ((instance: I) => React.ReactNode);\n and?: Model.Compat<I>;\n }\n\n // FIX: This fails to exclude properties with same key but different type.\n type MultipleProps<T extends Item> = {\n for: Multiple<T>;\n children?: React.ReactNode | (() => React.ReactNode);\n and?: Model.Compat<Instance<T>>;\n }\n\n type Props<T extends Item> = MultipleProps<T> | NormalProps<T>;\n}\n\nfunction Provider<T extends Provider.Item>(props: Provider.Props<T>){\n const context = useNewContext(props.for, props.and);\n const render = props.children;\n\n React.useLayoutEffect(() => () => context.pop(), []);\n\n return React.createElement(LookupContext.Provider, { value: context },\n typeof render == \"function\"\n ? React.createElement(RenderFunction, { context, render })\n : render\n );\n}\n\nexport { Provider };\n\nfunction useNewContext<T extends Model>(\n include: Provider.Item | Provider.Multiple,\n assign: Model.Compat<T> | undefined){\n\n const ambient = useLookup();\n\n const context = React.useMemo(() => {\n if(!include)\n throw Oops.NoType();\n\n const next = ambient.push();\n\n if(include instanceof Model || typeof include == \"function\")\n next.add(include);\n else\n values(include).forEach(x => next.add(x));\n\n for(const instance of next.local)\n if(instance){\n if(assign)\n assignWeak(instance, assign);\n\n for(const apply of getPending(instance))\n apply(next)\n }\n\n return next;\n }, []);\n\n if(assign)\n for(const into of context.local as T[])\n assignWeak(into, assign);\n\n return context;\n}\n\ninterface RenderFunctionProps {\n context: Lookup;\n render: Function;\n}\n\nfunction RenderFunction(props: RenderFunctionProps): any {\n const hook = use(refresh => {\n const targets = props.context.local;\n\n if(targets.length == 1)\n return Control.for(targets[0]).subscribe(() => refresh);\n\n return {} as Subscriber;\n });\n\n if(hook.commit)\n React.useLayoutEffect(hook.commit, []);\n\n return props.render(hook.proxy);\n}\n\nfunction assignWeak(into: any, from: any){\n for(const K in from)\n if(K in into)\n into[K] = from[K];\n}","import { MVC } from './mvc';\n\nexport class Global extends MVC {\n static global = true;\n static keepAlive = true;\n}","import { Control } from './control';\nimport { defineProperties } from './helper/object';\nimport { Model } from './model';\nimport { Subscriber } from './subscriber';\n\nconst LOCAL = \"$debug local\";\nconst STATE = \"$debug state\";\nconst UPDATE = \"$debug update\";\nconst CONTROL = \"$debug controller\";\n\ndefineProperties(Model.prototype, {\n [CONTROL]: {\n get(this: Model){\n return Control.get(this);\n }\n },\n [LOCAL]: {\n get(this: Model){\n return Subscriber.get(this);\n }\n },\n [STATE]: {\n get(this: Model){\n const { state } = Control.get(this)!;\n const output: any = {};\n\n state.forEach((value, key) => output[key] = value);\n\n return output;\n }\n },\n [UPDATE]: {\n get(this: Model){\n const source = Subscriber.get(this) || Control.get(this);\n\n return source && source.latest;\n }\n }\n})\n\nconst Debug = {\n CONTROL,\n LOCAL,\n STATE,\n UPDATE\n} as const;\n\ntype Debug<T extends {}> = T & {\n /** Controller for this instance. */\n [CONTROL]?: Control<T>;\n\n /** Current subscriber (if present) while used in a live context (e.g. hook or effect). */\n [LOCAL]?: Subscriber<T>;\n\n /** Current state of this instance. */\n [STATE]?: Model.Export<T>;\n\n /**\n * Last update causing a refresh to subscribers.\n * \n * If accessed directly, will contain all keys from last push.\n * If within a subscribed function, will contain only keys which explicitly caused a refresh.\n */\n [UPDATE]?: readonly Model.Event<T>[];\n}\n\nexport { Debug };"],"names":["Oops","REGISTER","use","React","useState","useMemo","Global"],"mappings":"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"}
|