@expressive/mvc 0.71.0 → 0.73.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.
@@ -1,90 +1,77 @@
1
- import { Context } from "../context";
2
- import { createEffect } from "../control";
3
- import { fetch, METHOD, Model, PARENT, event, update } from "../model";
4
- import { use } from "./use";
5
- const STALE = /* @__PURE__ */ new WeakSet();
6
- function get(arg0, arg1) {
7
- return use((key, subject, state) => {
8
- if (typeof arg0 == "symbol")
9
- throw new Error(`Attempted to use an instruction result (probably use or get) as computed source for ${subject}.${key}. This is not allowed.`);
10
- if (Model.is(arg0)) {
11
- let assign2 = function(value) {
12
- if (typeof arg1 == "function")
13
- value.get((x) => arg1(x, key));
14
- update(subject, key, value);
15
- };
16
- var assign = assign2;
17
- const hasParent = PARENT.get(subject);
18
- if (!hasParent && arg1 === true)
19
- throw new Error(`${subject} may only exist as a child of type ${arg0}.`);
20
- else if (hasParent) {
21
- if (hasParent instanceof arg0) {
22
- assign2(hasParent);
23
- return {};
24
- } else if (arg1 === true)
25
- throw new Error(`New ${subject} created as child of ${hasParent}, but must be instanceof ${arg0}.`);
26
- }
27
- Context.get(subject, (context) => {
28
- const model = context.get(arg0);
29
- if (model)
30
- assign2(model);
31
- else if (arg1 !== false)
32
- throw new Error(`Required ${arg0} not found in context for ${subject}.`);
33
- });
34
- return {
35
- get: arg1 !== false,
36
- enumerable: false
37
- };
38
- }
39
- let from = subject;
40
- if (arg0 instanceof Model) {
41
- from = arg0;
42
- } else {
43
- const fn = METHOD.get(arg0) || arg0;
44
- arg1 = (p, k) => fn.call(p, k, p);
45
- }
46
- const source = (resolve) => resolve(from);
47
- const getter = arg1;
48
- let reset;
49
- let isAsync;
50
- let proxy;
51
- function connect(model) {
52
- reset = createEffect(model, (current) => {
53
- proxy = current;
54
- if (!(key in state) || STALE.delete(compute))
55
- compute(!reset);
56
- return (didUpdate) => {
57
- if (didUpdate) {
58
- STALE.add(compute);
59
- event(subject, key, true);
60
- }
61
- };
62
- }, false);
63
- }
64
- function compute(initial) {
65
- let next;
66
- try {
67
- next = getter.call(proxy, proxy, key);
68
- } catch (err) {
69
- console.warn(`An exception was thrown while ${initial ? "initializing" : "refreshing"} ${subject}.${key}.`);
70
- if (initial)
71
- throw err;
72
- console.error(err);
73
- }
74
- update(subject, key, next, !isAsync);
75
- }
76
- return () => {
77
- if (!proxy) {
78
- source(connect);
79
- isAsync = true;
80
- }
81
- if (STALE.delete(compute))
82
- compute();
83
- return fetch(subject, key, !proxy);
84
- };
85
- });
1
+ import { scope } from "../observable.js";
2
+ import { PARENT, update } from "../state.js";
3
+ import { Context } from "../context.js";
4
+ import { use } from "./use.js";
5
+
6
+ //#region src/instruction/get.ts
7
+ function get(Type, arg1, arg2) {
8
+ const isDownstream = arg1 === true;
9
+ const isOptional = arg1 === false;
10
+ return use((key, subject) => {
11
+ if (isDownstream) {
12
+ const callback = typeof arg2 === "function" ? arg2 : void 0;
13
+ const applied = /* @__PURE__ */ new Set();
14
+ const reset = () => {
15
+ update(subject, key, Object.freeze(Array.from(applied)));
16
+ };
17
+ Context.get(subject, (context) => {
18
+ context.get(Type, (state) => {
19
+ let remove;
20
+ let flush;
21
+ if (applied.has(state)) return;
22
+ if (callback) {
23
+ const exit = scope();
24
+ try {
25
+ const done = callback(state, subject);
26
+ if (done === false) return false;
27
+ if (typeof done == "function") remove = done;
28
+ } finally {
29
+ flush = exit();
30
+ }
31
+ }
32
+ applied.add(state);
33
+ reset();
34
+ const done = () => {
35
+ if (flush) flush();
36
+ ignore();
37
+ applied.delete(state);
38
+ reset();
39
+ if (typeof remove == "function") remove();
40
+ remove = void 0;
41
+ };
42
+ const ignore = state.set(done, null);
43
+ return done;
44
+ });
45
+ });
46
+ return {
47
+ value: [],
48
+ enumerable: false
49
+ };
50
+ }
51
+ const hasParent = PARENT.get(subject);
52
+ function assign(value) {
53
+ if (typeof arg1 === "function") {
54
+ const result = arg1(value, subject);
55
+ if (typeof result === "function") subject.set(result, null);
56
+ }
57
+ update(subject, key, value);
58
+ }
59
+ if (hasParent && hasParent instanceof Type) {
60
+ assign(hasParent);
61
+ return {};
62
+ }
63
+ Context.get(subject, (context) => {
64
+ const self = context.get(Type);
65
+ if (self) assign(self);
66
+ else if (!isOptional) throw new Error(`Required ${Type} not found in context for ${subject}.`);
67
+ });
68
+ return {
69
+ get: !isOptional,
70
+ enumerable: false
71
+ };
72
+ });
86
73
  }
87
- export {
88
- get
89
- };
90
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2dldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgY3JlYXRlRWZmZWN0IH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBmZXRjaCwgTUVUSE9ELCBNb2RlbCwgUEFSRU5ULCBldmVudCwgdXBkYXRlIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG50eXBlIFR5cGU8VCBleHRlbmRzIE1vZGVsPiA9IE1vZGVsLlR5cGU8VD4gJiB0eXBlb2YgTW9kZWw7XG5cbmNvbnN0IFNUQUxFID0gbmV3IFdlYWtTZXQ8KCkgPT4gdm9pZD4oKTtcblxuZGVjbGFyZSBuYW1lc3BhY2UgZ2V0IHtcbiAgdHlwZSBDb21wdXRlPFQsIFMgPSBhbnk+ID0gKG9uOiBTLCBrZXk6IHN0cmluZykgPT4gVDtcblxuICB0eXBlIEZhY3Rvcnk8VCwgUyA9IGFueT4gPSAodGhpczogUywga2V5OiBzdHJpbmcsIHRoaXNBcmc6IFMpID0+IFQ7XG5cbiAgdHlwZSBTb3VyY2U8VCBleHRlbmRzIE1vZGVsID0gTW9kZWw+ID0gKHJlc29sdmU6ICh4OiBUKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG4gIHR5cGUgRWZmZWN0PFQ+ID0gKG1vZGVsOiBULCBrZXk6IHN0cmluZykgPT4gKCgpID0+IHZvaWQpIHwgdm9pZDtcbn1cblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLiBcbiAqIEBwYXJhbSBleHBlY3RQYXJlbnQgLSBJZiB0cnVlLCB3aWxsIHRocm93IGlmIE1vZGVsIGlzIGNyZWF0ZWQgd2l0aG91dCBhIHBhcmVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0IDxUIGV4dGVuZHMgTW9kZWw+IChUeXBlOiBNb2RlbC5UeXBlPFQ+LCBleHBlY3RQYXJlbnQ/OiB0cnVlKTogVDtcblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLiBcbiAqIEBwYXJhbSByZXF1aXJlZCAtIElmIGZhbHNlLCBwcm9wZXJ0eSBtYXkgYmUgdW5kZWZpbmVkLiBPdGhlcndpc2Ugd2lsbCB0aHJvdyBzdXNwZW5zZS5cbiAqL1xuZnVuY3Rpb24gZ2V0IDxUIGV4dGVuZHMgTW9kZWw+IChUeXBlOiBNb2RlbC5UeXBlPFQ+LCByZXF1aXJlZD86IGZhbHNlKTogVCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBJbXBsZW1lbnQgYSBjb21wdXRlZCB2YWx1ZSBmcm9tIGEgZm9yZWlnbiBtb2RlbC4gT3V0cHV0IHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IHByb3ZpZGVkIGZ1bmN0aW9uLFxuICogd2hlcmUgdGhlIGZvcmVpZ24gbW9kZWwgd2lsbCBiZSBwYXNzZWQgdG8gdGhhdCBmdW5jdGlvbi5cbiAqIFxuICogQHBhcmFtIHNvdXJjZSAtIFR5cGUgb2YgTW9kZWwgdG8gZmV0Y2ggZm9yIGNvbXB1dGF0aW9uLlxuICogQHBhcmFtIGNvbXB1dGUgLSBDb21wdXRlIGZ1bmN0aW9uLiBXaWxsIHVwZGF0ZSBhdXRvbWF0aWNhbGx5IGFzIGlucHV0IHZhbHVlcyBjaGFuZ2UuXG4gKi9cbmZ1bmN0aW9uIGdldCA8VCBleHRlbmRzIE1vZGVsPiAoVHlwZTogTW9kZWwuVHlwZTxUPiwgZWZmZWN0OiBnZXQuRWZmZWN0PFQ+KTogVDtcblxuLyoqXG4gKiBJbXBsZW1lbnQgYSBjb21wdXRlZCB2YWx1ZTsgb3V0cHV0IHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IHByb3ZpZGVkIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBzb3VyY2UgLSBTb3VyY2UgbW9kZWwgZnJvbSB3aGljaCBjb21wdXRlZCB2YWx1ZSB3aWxsIGJlIGEgc3Vic2NyaWJlci5cbiAqIEBwYXJhbSBjb21wdXRlIC0gQ29tcHV0ZSBmdW5jdGlvbi4gQm91bmQgdG8gYSBzdWJzY3JpYmVyLXByb3h5IG9mIHNvdXJjZSwgcmV0dXJucyBvdXRwdXQgdmFsdWUuIFdpbGwgdXBkYXRlIGF1dG9tYXRpY2FsbHkgYXMgaW5wdXQgdmFsdWVzIGNoYW5nZS5cbiAqL1xuZnVuY3Rpb24gZ2V0IDxSLCBUIGV4dGVuZHMgTW9kZWw+IChzb3VyY2U6IFQsIGNvbXB1dGU6IGdldC5Db21wdXRlPFIsIFQ+KTogUjtcblxuLyoqXG4gKiBJbXBsZW1lbnQgYSBjb21wdXRlZCB2YWx1ZTsgb3V0cHV0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9uIGZyb20gcHJvdmlkZWQgZmFjdG9yeS5cbiAqIFxuICogRmFjdG9yeSBpcyBib3VuZCB0byBvd25lciBvZiBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0gY29tcHV0ZSAtIEZhY3RvcnkgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBnZXR0ZXIgdG8gc3Vic2NyaWJlIGRlcGVuZGFuY2llcy5cbiAqL1xuZnVuY3Rpb24gZ2V0IDxSLCBUPiAoY29tcHV0ZTogZ2V0LkZhY3Rvcnk8UiwgVD4pOiBSO1xuIFxuZnVuY3Rpb24gZ2V0PFIsIFQgZXh0ZW5kcyBNb2RlbD4oXG4gIGFyZzA6IFQgfCBnZXQuRmFjdG9yeTxSLCBUPiB8IFR5cGU8VD4sXG4gIGFyZzE/OiBGdW5jdGlvbiB8IGJvb2xlYW4pe1xuXG4gIHJldHVybiB1c2UoKGtleSwgc3ViamVjdCwgc3RhdGUpID0+IHtcbiAgICBpZih0eXBlb2YgYXJnMCA9PSBcInN5bWJvbFwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gdXNlIGFuIGluc3RydWN0aW9uIHJlc3VsdCAocHJvYmFibHkgdXNlIG9yIGdldCkgYXMgY29tcHV0ZWQgc291cmNlIGZvciAke3N1YmplY3R9LiR7a2V5fS4gVGhpcyBpcyBub3QgYWxsb3dlZC5gKVxuXG4gICAgaWYoTW9kZWwuaXMoYXJnMCkpe1xuICAgICAgY29uc3QgaGFzUGFyZW50ID0gUEFSRU5ULmdldChzdWJqZWN0KSBhcyBUO1xuXG4gICAgICAvLyBUT0RPOiBub3RpZnkgb24gZGlzY292ZXJlZCBjb250ZXh0IFxuICAgICAgZnVuY3Rpb24gYXNzaWduKHZhbHVlOiBUKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnMSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgdmFsdWUuZ2V0KHggPT4gKGFyZzEgYXMgRnVuY3Rpb24pKHgsIGtleSkpO1xuXG4gICAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYoIWhhc1BhcmVudCAmJiBhcmcxID09PSB0cnVlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c3ViamVjdH0gbWF5IG9ubHkgZXhpc3QgYXMgYSBjaGlsZCBvZiB0eXBlICR7YXJnMH0uYCk7XG4gICAgICBlbHNlIGlmKGhhc1BhcmVudClcbiAgICAgICAgaWYoaGFzUGFyZW50IGluc3RhbmNlb2YgYXJnMCl7XG4gICAgICAgICAgYXNzaWduKGhhc1BhcmVudCk7XG4gICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihhcmcxID09PSB0cnVlKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTmV3ICR7c3ViamVjdH0gY3JlYXRlZCBhcyBjaGlsZCBvZiAke2hhc1BhcmVudH0sIGJ1dCBtdXN0IGJlIGluc3RhbmNlb2YgJHthcmcwfS5gKTtcbiBcbiAgICAgIENvbnRleHQuZ2V0KHN1YmplY3QsIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGVsID0gY29udGV4dC5nZXQoYXJnMCk7XG5cbiAgICAgICAgaWYobW9kZWwpXG4gICAgICAgICAgYXNzaWduKG1vZGVsKTtcbiAgICAgICAgZWxzZSBpZihhcmcxICE9PSBmYWxzZSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVpcmVkICR7YXJnMH0gbm90IGZvdW5kIGluIGNvbnRleHQgZm9yICR7c3ViamVjdH0uYClcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBnZXQ6IGFyZzEgIT09IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgbGV0IGZyb20gPSBzdWJqZWN0O1xuICAgIFxuICAgIGlmKGFyZzAgaW5zdGFuY2VvZiBNb2RlbCl7XG4gICAgICBmcm9tID0gYXJnMDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBmbiA9IE1FVEhPRC5nZXQoYXJnMCkgfHwgYXJnMDtcbiAgICAgIGFyZzEgPSAoKHAsIGspID0+IGZuLmNhbGwocCwgaywgcCkpIGFzIGdldC5FZmZlY3Q8VD47XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlOiBnZXQuU291cmNlPFQ+ID0gcmVzb2x2ZSA9PiByZXNvbHZlKGZyb20pO1xuICAgIGNvbnN0IGdldHRlciA9IGFyZzEgYXMgZ2V0LkNvbXB1dGU8UiwgVD47XG5cbiAgICBsZXQgcmVzZXQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgaXNBc3luYzogYm9vbGVhbjtcbiAgICBsZXQgcHJveHk6IGFueTtcblxuICAgIGZ1bmN0aW9uIGNvbm5lY3QobW9kZWw6IE1vZGVsKXtcbiAgICAgIHJlc2V0ID0gY3JlYXRlRWZmZWN0KG1vZGVsLCBjdXJyZW50ID0+IHtcbiAgICAgICAgcHJveHkgPSBjdXJyZW50O1xuXG4gICAgICAgIGlmKCEoa2V5IGluIHN0YXRlKSB8fCBTVEFMRS5kZWxldGUoY29tcHV0ZSkpXG4gICAgICAgICAgY29tcHV0ZSghcmVzZXQpO1xuXG4gICAgICAgIHJldHVybiAoZGlkVXBkYXRlKSA9PiB7XG4gICAgICAgICAgaWYoZGlkVXBkYXRlKXtcbiAgICAgICAgICAgIFNUQUxFLmFkZChjb21wdXRlKTtcbiAgICAgICAgICAgIGV2ZW50KHN1YmplY3QsIGtleSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSwgZmFsc2UpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZShpbml0aWFsPzogYm9vbGVhbil7XG4gICAgICBsZXQgbmV4dDogUiB8IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV4dCA9IGdldHRlci5jYWxsKHByb3h5LCBwcm94eSwga2V5KTtcbiAgICAgIH1cbiAgICAgIGNhdGNoKGVycil7XG4gICAgICAgIGNvbnNvbGUud2FybihgQW4gZXhjZXB0aW9uIHdhcyB0aHJvd24gd2hpbGUgJHtpbml0aWFsID8gXCJpbml0aWFsaXppbmdcIiA6IFwicmVmcmVzaGluZ1wifSAke3N1YmplY3R9LiR7a2V5fS5gKVxuXG4gICAgICAgIGlmKGluaXRpYWwpXG4gICAgICAgICAgdGhyb3cgZXJyO1xuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgbmV4dCwgIWlzQXN5bmMpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZighcHJveHkpe1xuICAgICAgICBzb3VyY2UoY29ubmVjdCk7XG4gICAgICAgIGlzQXN5bmMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZihTVEFMRS5kZWxldGUoY29tcHV0ZSkpXG4gICAgICAgIGNvbXB1dGUoKTtcblxuICAgICAgcmV0dXJuIGZldGNoKHN1YmplY3QsIGtleSwgIXByb3h5KSBhcyBUO1xuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IHsgZ2V0IH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsT0FBTyxRQUFRLE9BQU8sUUFBUSxPQUFPLGNBQWM7QUFDNUQsU0FBUyxXQUFXO0FBSXBCLE1BQU0sUUFBUSxvQkFBSSxRQUFvQjtBQTBEdEMsU0FBUyxJQUNQLE1BQ0EsTUFBMEI7QUFFMUIsU0FBTyxJQUFJLENBQUMsS0FBSyxTQUFTLFVBQVU7QUFDbEMsUUFBRyxPQUFPLFFBQVE7QUFDaEIsWUFBTSxJQUFJLE1BQU0sdUZBQXVGLE9BQU8sSUFBSSxHQUFHLHdCQUF3QjtBQUUvSSxRQUFHLE1BQU0sR0FBRyxJQUFJLEdBQUU7QUFJaEIsVUFBU0EsVUFBVCxTQUFnQixPQUFVO0FBQ3hCLFlBQUksT0FBTyxRQUFRO0FBQ2pCLGdCQUFNLElBQUksT0FBTSxLQUFrQixHQUFHLEdBQUcsQ0FBQztBQUUzQyxlQUFPLFNBQVMsS0FBSyxLQUFLO0FBQUEsTUFDNUI7QUFMUyxtQkFBQUE7QUFIVCxZQUFNLFlBQVksT0FBTyxJQUFJLE9BQU87QUFVcEMsVUFBRyxDQUFDLGFBQWEsU0FBUztBQUN4QixjQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sc0NBQXNDLElBQUksR0FBRztBQUFBLGVBQ2pFO0FBQ04sWUFBRyxxQkFBcUIsTUFBSztBQUMzQixVQUFBQSxRQUFPLFNBQVM7QUFDaEIsaUJBQU8sQ0FBQztBQUFBLFFBQ1YsV0FDUSxTQUFTO0FBQ2YsZ0JBQU0sSUFBSSxNQUFNLE9BQU8sT0FBTyx3QkFBd0IsU0FBUyw0QkFBNEIsSUFBSSxHQUFHO0FBQUE7QUFFdEcsY0FBUSxJQUFJLFNBQVMsQ0FBQyxZQUFZO0FBQ2hDLGNBQU0sUUFBUSxRQUFRLElBQUksSUFBSTtBQUU5QixZQUFHO0FBQ0QsVUFBQUEsUUFBTyxLQUFLO0FBQUEsaUJBQ04sU0FBUztBQUNmLGdCQUFNLElBQUksTUFBTSxZQUFZLElBQUksNkJBQTZCLE9BQU8sR0FBRztBQUFBLE1BQzNFLENBQUM7QUFFRCxhQUFPO0FBQUEsUUFDTCxLQUFLLFNBQVM7QUFBQSxRQUNkLFlBQVk7QUFBQSxNQUNkO0FBQUEsSUFDRjtBQUVBLFFBQUksT0FBTztBQUVYLFFBQUcsZ0JBQWdCLE9BQU07QUFDdkIsYUFBTztBQUFBLElBQ1QsT0FDSztBQUNILFlBQU0sS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLO0FBQy9CLGFBQVEsQ0FBQyxHQUFHLE1BQU0sR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQUEsSUFDbkM7QUFFQSxVQUFNLFNBQXdCLGFBQVcsUUFBUSxJQUFJO0FBQ3JELFVBQU0sU0FBUztBQUVmLFFBQUk7QUFDSixRQUFJO0FBQ0osUUFBSTtBQUVKLGFBQVMsUUFBUSxPQUFhO0FBQzVCLGNBQVEsYUFBYSxPQUFPLGFBQVc7QUFDckMsZ0JBQVE7QUFFUixZQUFHLEVBQUUsT0FBTyxVQUFVLE1BQU0sT0FBTyxPQUFPO0FBQ3hDLGtCQUFRLENBQUMsS0FBSztBQUVoQixlQUFPLENBQUMsY0FBYztBQUNwQixjQUFHLFdBQVU7QUFDWCxrQkFBTSxJQUFJLE9BQU87QUFDakIsa0JBQU0sU0FBUyxLQUFLLElBQUk7QUFBQSxVQUMxQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGLEdBQUcsS0FBSztBQUFBLElBQ1Y7QUFFQSxhQUFTLFFBQVEsU0FBa0I7QUFDakMsVUFBSTtBQUVKLFVBQUk7QUFDRixlQUFPLE9BQU8sS0FBSyxPQUFPLE9BQU8sR0FBRztBQUFBLE1BQ3RDLFNBQ00sS0FBSTtBQUNSLGdCQUFRLEtBQUssaUNBQWlDLFVBQVUsaUJBQWlCLFlBQVksSUFBSSxPQUFPLElBQUksR0FBRyxHQUFHO0FBRTFHLFlBQUc7QUFDRCxnQkFBTTtBQUVSLGdCQUFRLE1BQU0sR0FBRztBQUFBLE1BQ25CO0FBRUEsYUFBTyxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU87QUFBQSxJQUNyQztBQUVBLFdBQU8sTUFBTTtBQUNYLFVBQUcsQ0FBQyxPQUFNO0FBQ1IsZUFBTyxPQUFPO0FBQ2Qsa0JBQVU7QUFBQSxNQUNaO0FBRUEsVUFBRyxNQUFNLE9BQU8sT0FBTztBQUNyQixnQkFBUTtBQUVWLGFBQU8sTUFBTSxTQUFTLEtBQUssQ0FBQyxLQUFLO0FBQUEsSUFDbkM7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsiYXNzaWduIl0KfQo=
74
+
75
+ //#endregion
76
+ export { get };
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnN0cnVjdGlvbi9nZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2NvcGUgfSBmcm9tICcuLi9vYnNlcnZhYmxlJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IFN0YXRlLCBQQVJFTlQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxudHlwZSBUeXBlPFQgZXh0ZW5kcyBTdGF0ZT4gPSBTdGF0ZS5FeHRlbmRzPFQ+ICYgdHlwZW9mIFN0YXRlO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBnZXQge1xuICB0eXBlIENhbGxiYWNrPFQgPSBhbnk+ID0gKFxuICAgIHN0YXRlOiBULFxuICAgIHN1YmplY3Q6IFN0YXRlXG4gICkgPT4gdm9pZCB8IGJvb2xlYW4gfCAoKCkgPT4gdm9pZCk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB1cHN0cmVhbSBTdGF0ZSBmcm9tIGNvbnRleHQgd2l0aCBvcHRpb25hbCBsaWZlY3ljbGUgY2FsbGJhY2suXG4gKiBDYWxsYmFjayBydW5zIG9uIG1vdW50IGFuZCBjYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24gZm9yIHVubW91bnQuXG4gKlxuICogQHBhcmFtIFR5cGUgLSBUeXBlIG9mIFN0YXRlIHRvIGZldGNoLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrLCByZWNlaXZlcyAoc3RhdGUsIHN1YmplY3QpLiBDYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5FeHRlbmRzPFQ+LFxuICBjYWxsYmFjaz86IGdldC5DYWxsYmFjazxUPlxuKTogVDtcblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgZmFsc2UsIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQuIE90aGVyd2lzZSB3aWxsIHRocm93IHN1c3BlbnNlLlxuICovXG5mdW5jdGlvbiBnZXQ8VCBleHRlbmRzIFN0YXRlPihcbiAgVHlwZTogU3RhdGUuRXh0ZW5kczxUPixcbiAgcmVxdWlyZWQ6IGZhbHNlXG4pOiBUIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENvbGxlY3RzIGRvd25zdHJlYW0gU3RhdGVzLCB0aGlzIHdpbGwgYWNjdW11bGF0ZSBhbGwgaW5zdGFuY2VzIG9mIHNwZWNpZmllZCB0eXBlIGZvciB3aGljaCB0aGlzIGlzIGFuIGFuY2VzdG9yLlxuICogUmV0dXJucyBhIGZyb3plbiBhcnJheSB0aGF0IHVwZGF0ZXMgYXMgU3RhdGVzIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICogQ2FsbGJhY2sgcnVucyBvbiBlYWNoIFN0YXRlIHJlZ2lzdHJhdGlvbiBhbmQgY2FuIHJldHVybiBjbGVhbnVwIG9yIGZhbHNlIHRvIHByZXZlbnQgcmVnaXN0cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBTdGF0ZSB0byBjb2xsZWN0LlxuICogQHBhcmFtIGRvd25zdHJlYW0gLSBNdXN0IGJlIHRydWUgdG8gZW5hYmxlIGRvd25zdHJlYW0gbW9kZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGxpZmVjeWNsZSBjYWxsYmFjaywgcmVjZWl2ZXMgKHN0YXRlLCBzdWJqZWN0KS4gTWF5IHJldHVybiBmYWxzZSB0byBwcmV2ZW50IHJlZ2lzdHJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gIFR5cGU6IFN0YXRlLkV4dGVuZHM8VD4sXG4gIGRvd25zdHJlYW06IHRydWUsXG4gIGNhbGxiYWNrPzogZ2V0LkNhbGxiYWNrPFQ+XG4pOiByZWFkb25seSBUW107XG5cbmZ1bmN0aW9uIGdldDxSLCBUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBUeXBlPFQ+LFxuICBhcmcxPzogRnVuY3Rpb24gfCBib29sZWFuLFxuICBhcmcyPzogRnVuY3Rpb25cbikge1xuICBjb25zdCBpc0Rvd25zdHJlYW0gPSBhcmcxID09PSB0cnVlO1xuICBjb25zdCBpc09wdGlvbmFsID0gYXJnMSA9PT0gZmFsc2U7XG5cbiAgcmV0dXJuIHVzZTxUW10gfCBUPigoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgLy8gRG93bnN0cmVhbSBjb2xsZWN0aW9uIG1vZGVcbiAgICBpZiAoaXNEb3duc3RyZWFtKSB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9XG4gICAgICAgIHR5cGVvZiBhcmcyID09PSAnZnVuY3Rpb24nID8gKGFyZzIgYXMgZ2V0LkNhbGxiYWNrPFQ+KSA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgYXBwbGllZCA9IG5ldyBTZXQ8U3RhdGU+KCk7XG4gICAgICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGFwcGxpZWQpKSk7XG4gICAgICB9O1xuXG4gICAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb250ZXh0LmdldChUeXBlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICBsZXQgcmVtb3ZlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoYXBwbGllZC5oYXMoc3RhdGUpKSByZXR1cm47XG5cbiAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXQgPSBzY29wZSgpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkb25lID0gY2FsbGJhY2soc3RhdGUsIHN1YmplY3QpO1xuXG4gICAgICAgICAgICAgIGlmIChkb25lID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRvbmUgPT0gJ2Z1bmN0aW9uJykgcmVtb3ZlID0gZG9uZTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGZsdXNoID0gZXhpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFwcGxpZWQuYWRkKHN0YXRlKTtcbiAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgY29uc3QgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChmbHVzaCkgZmx1c2goKTtcbiAgICAgICAgICAgIGlnbm9yZSgpO1xuXG4gICAgICAgICAgICBhcHBsaWVkLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlbW92ZSA9PSAnZnVuY3Rpb24nKSByZW1vdmUoKTtcblxuICAgICAgICAgICAgcmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmUgPSBzdGF0ZS5zZXQoZG9uZSwgbnVsbCk7XG5cbiAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBVcHN0cmVhbSBtb2RlXG4gICAgY29uc3QgaGFzUGFyZW50ID0gUEFSRU5ULmdldChzdWJqZWN0KSBhcyBUO1xuXG4gICAgZnVuY3Rpb24gYXNzaWduKHZhbHVlOiBUKSB7XG4gICAgICAvLyBJZiBjYWxsYmFjayBwcm92aWRlZCwgcnVuIGl0IGFzIGxpZmVjeWNsZSBob29rXG4gICAgICBpZiAodHlwZW9mIGFyZzEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBhcmcxIGFzIGdldC5DYWxsYmFjazxUPjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2sodmFsdWUsIHN1YmplY3QpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGNsZWFudXAgaWYgcmV0dXJuZWRcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBzdWJqZWN0LnNldChyZXN1bHQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBwYXJlbnRcbiAgICBpZiAoaGFzUGFyZW50ICYmIGhhc1BhcmVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIGFzc2lnbihoYXNQYXJlbnQpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGNvbnRleHRcbiAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZiA9IGNvbnRleHQuZ2V0KFR5cGUpO1xuXG4gICAgICBpZiAoc2VsZikgYXNzaWduKHNlbGYpO1xuICAgICAgZWxzZSBpZiAoIWlzT3B0aW9uYWwpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmVxdWlyZWQgJHtUeXBlfSBub3QgZm91bmQgaW4gY29udGV4dCBmb3IgJHtzdWJqZWN0fS5gXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAhaXNPcHRpb25hbCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFzREEsU0FBUyxJQUNQLE1BQ0EsTUFDQSxNQUNBO0NBQ0EsTUFBTSxlQUFlLFNBQVM7Q0FDOUIsTUFBTSxhQUFhLFNBQVM7QUFFNUIsUUFBTyxLQUFjLEtBQUssWUFBWTtBQUVwQyxNQUFJLGNBQWM7R0FDaEIsTUFBTSxXQUNKLE9BQU8sU0FBUyxhQUFjLE9BQTJCO0dBRTNELE1BQU0sMEJBQVUsSUFBSSxLQUFZO0dBQ2hDLE1BQU0sY0FBYztBQUNsQixXQUFPLFNBQVMsS0FBSyxPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDOztBQUcxRCxXQUFRLElBQUksVUFBVSxZQUFZO0FBQ2hDLFlBQVEsSUFBSSxPQUFPLFVBQVU7S0FDM0IsSUFBSTtLQUNKLElBQUk7QUFFSixTQUFJLFFBQVEsSUFBSSxNQUFNLENBQUU7QUFFeEIsU0FBSSxVQUFVO01BQ1osTUFBTSxPQUFPLE9BQU87QUFFcEIsVUFBSTtPQUNGLE1BQU0sT0FBTyxTQUFTLE9BQU8sUUFBUTtBQUVyQyxXQUFJLFNBQVMsTUFBTyxRQUFPO0FBQzNCLFdBQUksT0FBTyxRQUFRLFdBQVksVUFBUztnQkFDaEM7QUFDUixlQUFRLE1BQU07OztBQUlsQixhQUFRLElBQUksTUFBTTtBQUNsQixZQUFPO0tBRVAsTUFBTSxhQUFhO0FBQ2pCLFVBQUksTUFBTyxRQUFPO0FBQ2xCLGNBQVE7QUFFUixjQUFRLE9BQU8sTUFBTTtBQUNyQixhQUFPO0FBRVAsVUFBSSxPQUFPLFVBQVUsV0FBWSxTQUFRO0FBRXpDLGVBQVM7O0tBR1gsTUFBTSxTQUFTLE1BQU0sSUFBSSxNQUFNLEtBQUs7QUFFcEMsWUFBTztNQUNQO0tBQ0Y7QUFFRixVQUFPO0lBQ0wsT0FBTyxFQUFFO0lBQ1QsWUFBWTtJQUNiOztFQUlILE1BQU0sWUFBWSxPQUFPLElBQUksUUFBUTtFQUVyQyxTQUFTLE9BQU8sT0FBVTtBQUV4QixPQUFJLE9BQU8sU0FBUyxZQUFZO0lBRTlCLE1BQU0sU0FEVyxLQUNPLE9BQU8sUUFBUTtBQUd2QyxRQUFJLE9BQU8sV0FBVyxXQUNwQixTQUFRLElBQUksUUFBUSxLQUFLOztBQUk3QixVQUFPLFNBQVMsS0FBSyxNQUFNOztBQUk3QixNQUFJLGFBQWEscUJBQXFCLE1BQU07QUFDMUMsVUFBTyxVQUFVO0FBQ2pCLFVBQU8sRUFBRTs7QUFJWCxVQUFRLElBQUksVUFBVSxZQUFZO0dBQ2hDLE1BQU0sT0FBTyxRQUFRLElBQUksS0FBSztBQUU5QixPQUFJLEtBQU0sUUFBTyxLQUFLO1lBQ2IsQ0FBQyxXQUNSLE9BQU0sSUFBSSxNQUNSLFlBQVksS0FBSyw0QkFBNEIsUUFBUSxHQUN0RDtJQUNIO0FBRUYsU0FBTztHQUNMLEtBQUssQ0FBQztHQUNOLFlBQVk7R0FDYjtHQUNEIn0=
@@ -0,0 +1,71 @@
1
+ import { State } from "../state.js";
2
+
3
+ //#region src/instruction/ref.d.ts
4
+ declare namespace ref {
5
+ type Callback<T> = (argument: T) => ((next: T | null) => void) | Promise<void> | void | boolean;
6
+ interface Object<T = any> {
7
+ /** Current value held by this reference. */
8
+ current: T;
9
+ /** State instance this reference belongs to. */
10
+ is: State;
11
+ /** Key of property on state this reference belongs to. */
12
+ key: string;
13
+ /**
14
+ * Subscribe to changes of this reference.
15
+ *
16
+ * @param callback - Callback to invoke with the current value when it changes.
17
+ * @returns Unsubscribe function to stop listening to changes.
18
+ */
19
+ get(callback: (value: T) => void): () => void;
20
+ /** Retrieve current value. */
21
+ get(): T | null;
22
+ }
23
+ /** Object with references to all managed values of `T`. */
24
+ /** Object with references to all managed values of `T`. */
25
+ type Proxy<T extends State> = { [P in State.Field<T>]-?: Object<T[P]> } & {
26
+ get(): T;
27
+ };
28
+ type CustomProxy<T extends State, R> = { [P in State.Field<T>]-?: R } & {
29
+ get(): T;
30
+ };
31
+ }
32
+ /**
33
+ * Creates an object with references to all managed values.
34
+ * Each property is a function to set value in state when invoked.
35
+ *
36
+ * *Properties are simultaneously a ref-function and ref-object, use as needed.*
37
+ *
38
+ * @param target - Source state from which to reference values.
39
+ */
40
+ declare function ref<T extends State>(target: T): ref.Proxy<T>;
41
+ /**
42
+ * Creates an object with values based on managed values.
43
+ * Each property will invoke mapper function on first access supply
44
+ * the its return value going forward.
45
+ *
46
+ * @param target - Source state from which to reference values.
47
+ * @param mapper - Function producing the placeholder value for any given property.
48
+ */
49
+ declare function ref<O extends State, R>(target: O, mapper: (key: State.Field<O>) => R): ref.CustomProxy<O, R>;
50
+ /**
51
+ * Creates a ref-compatible property.
52
+ * Will persist value, and updates to this are made part of controller event-stream.
53
+ *
54
+ * *Output is simultaneously a ref-function and ref-object, use as needed.*
55
+ *
56
+ * @param callback - Optional callback to synchronously fire when reference is first set or does update.
57
+ */
58
+ declare function ref<T>(callback?: ref.Callback<T>): ref.Object<T>;
59
+ /**
60
+ * Creates a ref-compatible property.
61
+ * Will persist value, and updates to this are made part of controller event-stream.
62
+ *
63
+ * *Output is simultaneously a ref-function and ref-object, use as needed.*
64
+ *
65
+ * @param callback - Optional callback to synchronously fire when reference is first set or does update.
66
+ * @param ignoreNull - Default `true`. If `false`, will still callback with `null`.
67
+ */
68
+ declare function ref<T>(callback: ref.Callback<T | null>, ignoreNull: boolean): ref.Object<T>;
69
+ //#endregion
70
+ export { ref };
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuZGVjbGFyZSBuYW1lc3BhY2UgcmVmIHtcbiAgICB0eXBlIENhbGxiYWNrPFQ+ID0gKGFyZ3VtZW50OiBUKSA9PiAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcbiAgICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAgICAgLyoqIEN1cnJlbnQgdmFsdWUgaGVsZCBieSB0aGlzIHJlZmVyZW5jZS4gKi9cbiAgICAgICAgY3VycmVudDogVDtcbiAgICAgICAgLyoqIFN0YXRlIGluc3RhbmNlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAgICAgIGlzOiBTdGF0ZTtcbiAgICAgICAgLyoqIEtleSBvZiBwcm9wZXJ0eSBvbiBzdGF0ZSB0aGlzIHJlZmVyZW5jZSBiZWxvbmdzIHRvLiAqL1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1YnNjcmliZSB0byBjaGFuZ2VzIG9mIHRoaXMgcmVmZXJlbmNlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byBpbnZva2Ugd2l0aCB0aGUgY3VycmVudCB2YWx1ZSB3aGVuIGl0IGNoYW5nZXMuXG4gICAgICAgICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uIHRvIHN0b3AgbGlzdGVuaW5nIHRvIGNoYW5nZXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQoY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCk6ICgpID0+IHZvaWQ7XG4gICAgICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgICAgICBnZXQoKTogVCB8IG51bGw7XG4gICAgfVxuICAgIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG4gICAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgICB0eXBlIFByb3h5PFQgZXh0ZW5kcyBTdGF0ZT4gPSB7XG4gICAgICAgIFtQIGluIFN0YXRlLkZpZWxkPFQ+XS0/OiBPYmplY3Q8VFtQXT47XG4gICAgfSAmIHtcbiAgICAgICAgZ2V0KCk6IFQ7XG4gICAgfTtcbiAgICB0eXBlIEN1c3RvbVByb3h5PFQgZXh0ZW5kcyBTdGF0ZSwgUj4gPSB7XG4gICAgICAgIFtQIGluIFN0YXRlLkZpZWxkPFQ+XS0/OiBSO1xuICAgIH0gJiB7XG4gICAgICAgIGdldCgpOiBUO1xuICAgIH07XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHJlZjxUIGV4dGVuZHMgU3RhdGU+KHRhcmdldDogVCk6IHJlZi5Qcm94eTxUPjtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiByZWY8TyBleHRlbmRzIFN0YXRlLCBSPih0YXJnZXQ6IE8sIG1hcHBlcjogKGtleTogU3RhdGUuRmllbGQ8Tz4pID0+IFIpOiByZWYuQ3VzdG9tUHJveHk8TywgUj47XG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gcmVmPFQ+KGNhbGxiYWNrPzogcmVmLkNhbGxiYWNrPFQ+KTogcmVmLk9iamVjdDxUPjtcbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gcmVmPFQ+KGNhbGxiYWNrOiByZWYuQ2FsbGJhY2s8VCB8IG51bGw+LCBpZ25vcmVOdWxsOiBib29sZWFuKTogcmVmLk9iamVjdDxUPjtcbmV4cG9ydCB7IHJlZiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFBLE1BQVE7Q0FBQTtFQUFBLEdBQVUsTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDdEIsSUFBSSxNQUFLO0NBQUE7RUFBQSxNQUFXO0VBQUM7RUFBRztFQUFBO0VBQVUsSUFBSTtFQUFJO0NBQUk7RUFBQztFQUFJO0VBQUM7RUFBTztFQUFFO0VBQU07RUFBRTtFQUFBO0NBQUE7QUFDckUsSUFBSSxNQUFBO0NBQUE7RUFBVSxHQUFBLE1BQVc7RUFBQTtFQUFLO0VBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsSUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzlCLElBQUksTUFBTTtDQUFDO0VBQUMsTUFBUTtFQUFBO0VBQUEsSUFBTTtFQUFZO0VBQUMsSUFBQTtFQUFZO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuRCxJQUFJLE1BQUk7Q0FBQTtFQUFPLE1BQUc7RUFBQTtFQUFBLElBQUE7RUFBQTtFQUFBLElBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQSJ9
@@ -1,66 +1,68 @@
1
- import { addListener, enter } from "../control";
2
- import { update } from "../model";
3
- import { use } from "./use";
1
+ import { addListener, scope } from "../observable.js";
2
+ import { update } from "../state.js";
3
+ import { use } from "./use.js";
4
+
5
+ //#region src/instruction/ref.ts
4
6
  const { defineProperty, defineProperties } = Object;
5
7
  function ref(arg, arg2) {
6
- return use((key, subject, state) => {
7
- let value = {};
8
- const method = (key2, from) => (callback) => callback ? addListener(subject, () => callback(from[key2]), key2) : from[key2];
9
- if (arg === subject)
10
- addListener(subject, () => {
11
- for (const key2 in subject)
12
- if (typeof arg2 == "function")
13
- defineProperty(value, key2, {
14
- configurable: true,
15
- get() {
16
- const out = arg2(key2);
17
- defineProperty(value, key2, { value: out });
18
- return out;
19
- }
20
- });
21
- else {
22
- const get = method(key2, subject);
23
- const set = (x) => subject[key2] = x;
24
- defineProperties(set, {
25
- current: { get, set },
26
- get: { value: get },
27
- is: { value: subject },
28
- key: { value: key2 }
29
- });
30
- defineProperty(value, key2, { value: set });
31
- }
32
- return null;
33
- }, true);
34
- else if (typeof arg == "object")
35
- throw new Error("ref instruction does not support object which is not 'this'");
36
- else {
37
- let unset;
38
- const get = method(key, state);
39
- const set = (value2) => {
40
- if (!update(subject, key, value2) || !arg)
41
- return;
42
- if (unset)
43
- unset = void unset(value2);
44
- if (value2 === null && arg2 !== false)
45
- return;
46
- const exit = enter();
47
- const out = arg.call(subject, value2);
48
- const flush = exit();
49
- unset = (key2) => {
50
- if (typeof out == "function")
51
- out(key2);
52
- flush();
53
- };
54
- };
55
- state[key] = null;
56
- value = defineProperties({ get, key, is: subject }, {
57
- current: { get, set }
58
- });
59
- }
60
- defineProperty(subject, key, { value });
61
- });
8
+ return use((key, subject, state) => {
9
+ let value = {};
10
+ const method = (key, from) => (callback) => callback ? addListener(subject, () => callback(from[key]), key) : from[key];
11
+ if (arg === subject) addListener(subject, () => {
12
+ for (const key in subject) if (typeof arg2 == "function") defineProperty(value, key, {
13
+ configurable: true,
14
+ get() {
15
+ const out = arg2(key);
16
+ defineProperty(value, key, { value: out });
17
+ return out;
18
+ }
19
+ });
20
+ else {
21
+ const get = method(key, subject);
22
+ const set = (x) => subject[key] = x;
23
+ defineProperties(set, {
24
+ current: {
25
+ get,
26
+ set
27
+ },
28
+ get: { value: get },
29
+ is: { value: subject },
30
+ key: { value: key }
31
+ });
32
+ defineProperty(value, key, { value: set });
33
+ }
34
+ return null;
35
+ }, true);
36
+ else if (typeof arg == "object") throw new Error("ref instruction does not support object which is not 'this'");
37
+ else {
38
+ let unset;
39
+ const get = method(key, state);
40
+ const set = (value) => {
41
+ if (!update(subject, key, value) || !arg) return;
42
+ if (unset) unset = void unset(value);
43
+ if (value === null && arg2 !== false) return;
44
+ const exit = scope();
45
+ const out = arg.call(subject, value);
46
+ const flush = exit();
47
+ unset = (key) => {
48
+ if (typeof out == "function") out(key);
49
+ flush();
50
+ };
51
+ };
52
+ state[key] = null;
53
+ value = defineProperty({
54
+ get,
55
+ key,
56
+ is: subject
57
+ }, "current", {
58
+ get,
59
+ set
60
+ });
61
+ }
62
+ defineProperty(subject, key, { value });
63
+ });
62
64
  }
63
- export {
64
- ref
65
- };
66
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyIH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBNb2RlbCwgdXBkYXRlIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0aWVzIH0gPSBPYmplY3Q7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHJlZiB7XG4gIHR5cGUgQ2FsbGJhY2s8VD4gPSAoYXJndW1lbnQ6IFQpID0+XG4gICAgKChuZXh0OiBUIHwgbnVsbCkgPT4gdm9pZCkgfCBQcm9taXNlPHZvaWQ+IHwgdm9pZCB8IGJvb2xlYW47XG5cbiAgaW50ZXJmYWNlIE9iamVjdDxUID0gYW55PiB7XG4gICAgLyoqIEN1cnJlbnQgdmFsdWUgaGVsZCBieSB0aGlzIHJlZmVyZW5jZS4gKi9cbiAgICBjdXJyZW50OiBUO1xuXG4gICAgLyoqIE1vZGVsIGluc3RhbmNlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAgaXM6IE1vZGVsO1xuXG4gICAgLyoqIEtleSBvZiBwcm9wZXJ0eSBvbiBtb2RlbCB0aGlzIHJlZmVyZW5jZSBiZWxvbmdzIHRvLiAqL1xuICAgIGtleTogc3RyaW5nO1xuXG4gICAgLyoqIFxuICAgICAqIFN1YnNjcmliZSB0byBjaGFuZ2VzIG9mIHRoaXMgcmVmZXJlbmNlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIHRoZSBjdXJyZW50IHZhbHVlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICAgKiBAcmV0dXJucyBVbnN1YnNjcmliZSBmdW5jdGlvbiB0byBzdG9wIGxpc3RlbmluZyB0byBjaGFuZ2VzLlxuICAgICAqL1xuICAgIGdldChjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgIGdldCgpOiBUIHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG5cbiAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgdHlwZSBQcm94eTxUIGV4dGVuZHMgTW9kZWw+ID1cbiAgICAmIHsgW1AgaW4gTW9kZWwuRmllbGQ8VD5dLT86IE9iamVjdDxUW1BdPiB9XG4gICAgJiB7IGdldCgpOiBUIH07XG5cbiAgdHlwZSBDdXN0b21Qcm94eTxUIGV4dGVuZHMgTW9kZWwsIFI+ID1cbiAgICAmIHsgW1AgaW4gTW9kZWwuRmllbGQ8VD5dLT86IFIgfVxuICAgICYgeyBnZXQoKTogVCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2UgbW9kZWwgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5mdW5jdGlvbiByZWYgPFQgZXh0ZW5kcyBNb2RlbD4gKHRhcmdldDogVCk6IHJlZi5Qcm94eTxUPjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHZhbHVlcyBiYXNlZCBvbiBtYW5hZ2VkIHZhbHVlcy5cbiAqIEVhY2ggcHJvcGVydHkgd2lsbCBpbnZva2UgbWFwcGVyIGZ1bmN0aW9uIG9uIGZpcnN0IGFjY2VzcyBzdXBwbHlcbiAqIHRoZSBpdHMgcmV0dXJuIHZhbHVlIGdvaW5nIGZvcndhcmQuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFNvdXJjZSBtb2RlbCBmcm9tIHdoaWNoIHRvIHJlZmVyZW5jZSB2YWx1ZXMuXG4gKiBAcGFyYW0gbWFwcGVyIC0gRnVuY3Rpb24gcHJvZHVjaW5nIHRoZSBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYW55IGdpdmVuIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiByZWYgPE8gZXh0ZW5kcyBNb2RlbCwgUj5cbiAgKHRhcmdldDogTywgbWFwcGVyOiAoa2V5OiBNb2RlbC5GaWVsZDxPPikgPT4gUik6IHJlZi5DdXN0b21Qcm94eTxPLCBSPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVmLWNvbXBhdGlibGUgcHJvcGVydHkuXG4gKiBXaWxsIHBlcnNpc3QgdmFsdWUsIGFuZCB1cGRhdGVzIHRvIHRoaXMgYXJlIG1hZGUgcGFydCBvZiBjb250cm9sbGVyIGV2ZW50LXN0cmVhbS5cbiAqXG4gKiAqT3V0cHV0IGlzIHNpbXVsdGFuZW91c2x5IGEgcmVmLWZ1bmN0aW9uIGFuZCByZWYtb2JqZWN0LCB1c2UgYXMgbmVlZGVkLipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBPcHRpb25hbCBjYWxsYmFjayB0byBzeW5jaHJvbm91c2x5IGZpcmUgd2hlbiByZWZlcmVuY2UgaXMgZmlyc3Qgc2V0IG9yIGRvZXMgdXBkYXRlLlxuICovXG5mdW5jdGlvbiByZWYgPFQ+IChjYWxsYmFjaz86IHJlZi5DYWxsYmFjazxUPik6IHJlZi5PYmplY3Q8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIHJlZiA8VD4gKGNhbGxiYWNrOiByZWYuQ2FsbGJhY2s8VCB8IG51bGw+LCBpZ25vcmVOdWxsOiBib29sZWFuKTogcmVmLk9iamVjdDxUPjtcblxuZnVuY3Rpb24gcmVmPFQ+KFxuICBhcmc/OiByZWYuQ2FsbGJhY2s8VD4gfCBNb2RlbCxcbiAgYXJnMj86ICgoa2V5OiBzdHJpbmcpID0+IGFueSkgfCBib29sZWFuKXtcblxuICByZXR1cm4gdXNlPFQ+KChrZXksIHN1YmplY3QsIHN0YXRlKSA9PiB7XG4gICAgbGV0IHZhbHVlID0ge307XG4gICAgY29uc3QgbWV0aG9kID0gKGtleTogc3RyaW5nLCBmcm9tOiBSZWNvcmQ8c3RyaW5nLCBUPikgPT5cbiAgICAgIChjYWxsYmFjaz86ICh2YWx1ZTogVCkgPT4gdm9pZCkgPT4gY2FsbGJhY2tcbiAgICAgICAgPyBhZGRMaXN0ZW5lcihzdWJqZWN0LCAoKSA9PiBjYWxsYmFjayhmcm9tW2tleV0pLCBrZXkpXG4gICAgICAgIDogZnJvbVtrZXldO1xuXG4gICAgaWYoYXJnID09PSBzdWJqZWN0KVxuICAgICAgYWRkTGlzdGVuZXIoc3ViamVjdCwgKCkgPT4ge1xuICAgICAgICBmb3IoY29uc3Qga2V5IGluIHN1YmplY3QpXG4gICAgICAgICAgaWYodHlwZW9mIGFyZzIgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGdldCgpe1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dCA9IGFyZzIoa2V5KTtcbiAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBvdXQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdldCA9IG1ldGhvZChrZXksIHN1YmplY3QpO1xuICAgICAgICAgICAgY29uc3Qgc2V0ID0gKHg6IGFueSkgPT4gc3ViamVjdFtrZXldID0geDtcblxuICAgICAgICAgICAgZGVmaW5lUHJvcGVydGllcyhzZXQsIHtcbiAgICAgICAgICAgICAgY3VycmVudDogeyBnZXQsIHNldCB9LFxuICAgICAgICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9LFxuICAgICAgICAgICAgICBpczogeyB2YWx1ZTogc3ViamVjdCB9LFxuICAgICAgICAgICAgICBrZXk6IHsgdmFsdWU6IGtleSB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCBrZXksIHsgdmFsdWU6IHNldCB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LCB0cnVlKTtcblxuICAgIGVsc2UgaWYodHlwZW9mIGFyZyA9PSBcIm9iamVjdFwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmVmIGluc3RydWN0aW9uIGRvZXMgbm90IHN1cHBvcnQgb2JqZWN0IHdoaWNoIGlzIG5vdCAndGhpcydcIik7XG5cbiAgICBlbHNlIHtcbiAgICAgIGxldCB1bnNldDogKChuZXh0OiBUKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGdldCA9IG1ldGhvZChrZXksIHN0YXRlKTtcbiAgICAgIGNvbnN0IHNldCA9ICh2YWx1ZT86IGFueSkgPT4ge1xuICAgICAgICBpZighdXBkYXRlKHN1YmplY3QsIGtleSwgdmFsdWUpIHx8ICFhcmcpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGlmKHVuc2V0KVxuICAgICAgICAgIHVuc2V0ID0gdm9pZCB1bnNldCh2YWx1ZSk7XG4gICAgXG4gICAgICAgIGlmKHZhbHVlID09PSBudWxsICYmIGFyZzIgIT09IGZhbHNlKVxuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICB1bnNldCA9IGtleSA9PiB7XG4gICAgICAgICAgaWYodHlwZW9mIG91dCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICBvdXQoa2V5KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gIFxuICAgICAgc3RhdGVba2V5XSA9IG51bGw7XG4gICAgICB2YWx1ZSA9IGRlZmluZVByb3BlcnRpZXMoeyBnZXQsIGtleSwgaXM6IHN1YmplY3QgfSwge1xuICAgICAgICBjdXJyZW50OiB7IGdldCwgc2V0IH1cbiAgICAgIH0pIGFzIHJlZi5PYmplY3Q8VD47XG4gICAgfVxuXG4gICAgZGVmaW5lUHJvcGVydHkoc3ViamVjdCwga2V5LCB7IHZhbHVlIH0pO1xuICB9KVxufVxuXG5leHBvcnQgeyByZWYgfSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsYUFBYSxhQUFhO0FBQ25DLFNBQWdCLGNBQWM7QUFDOUIsU0FBUyxXQUFXO0FBRXBCLE1BQU0sRUFBRSxnQkFBZ0IsaUJBQWlCLElBQUk7QUFrRjdDLFNBQVMsSUFDUCxLQUNBLE1BQXdDO0FBRXhDLFNBQU8sSUFBTyxDQUFDLEtBQUssU0FBUyxVQUFVO0FBQ3JDLFFBQUksUUFBUSxDQUFDO0FBQ2IsVUFBTSxTQUFTLENBQUNBLE1BQWEsU0FDM0IsQ0FBQyxhQUFrQyxXQUMvQixZQUFZLFNBQVMsTUFBTSxTQUFTLEtBQUtBLElBQUcsQ0FBQyxHQUFHQSxJQUFHLElBQ25ELEtBQUtBLElBQUc7QUFFZCxRQUFHLFFBQVE7QUFDVCxrQkFBWSxTQUFTLE1BQU07QUFDekIsbUJBQVVBLFFBQU87QUFDZixjQUFHLE9BQU8sUUFBUTtBQUNoQiwyQkFBZSxPQUFPQSxNQUFLO0FBQUEsY0FDekIsY0FBYztBQUFBLGNBQ2QsTUFBSztBQUNILHNCQUFNLE1BQU0sS0FBS0EsSUFBRztBQUNwQiwrQkFBZSxPQUFPQSxNQUFLLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDekMsdUJBQU87QUFBQSxjQUNUO0FBQUEsWUFDRixDQUFDO0FBQUEsZUFDRTtBQUNILGtCQUFNLE1BQU0sT0FBT0EsTUFBSyxPQUFPO0FBQy9CLGtCQUFNLE1BQU0sQ0FBQyxNQUFXLFFBQVFBLElBQUcsSUFBSTtBQUV2Qyw2QkFBaUIsS0FBSztBQUFBLGNBQ3BCLFNBQVMsRUFBRSxLQUFLLElBQUk7QUFBQSxjQUNwQixLQUFLLEVBQUUsT0FBTyxJQUFJO0FBQUEsY0FDbEIsSUFBSSxFQUFFLE9BQU8sUUFBUTtBQUFBLGNBQ3JCLEtBQUssRUFBRSxPQUFPQSxLQUFJO0FBQUEsWUFDcEIsQ0FBQztBQUVELDJCQUFlLE9BQU9BLE1BQUssRUFBRSxPQUFPLElBQUksQ0FBQztBQUFBLFVBQzNDO0FBRUYsZUFBTztBQUFBLE1BQ1QsR0FBRyxJQUFJO0FBQUEsYUFFRCxPQUFPLE9BQU87QUFDcEIsWUFBTSxJQUFJLE1BQU0sNkRBQTZEO0FBQUEsU0FFMUU7QUFDSCxVQUFJO0FBQ0osWUFBTSxNQUFNLE9BQU8sS0FBSyxLQUFLO0FBQzdCLFlBQU0sTUFBTSxDQUFDQyxXQUFnQjtBQUMzQixZQUFHLENBQUMsT0FBTyxTQUFTLEtBQUtBLE1BQUssS0FBSyxDQUFDO0FBQ2xDO0FBRUYsWUFBRztBQUNELGtCQUFRLEtBQUssTUFBTUEsTUFBSztBQUUxQixZQUFHQSxXQUFVLFFBQVEsU0FBUztBQUM1QjtBQUVGLGNBQU0sT0FBTyxNQUFNO0FBQ25CLGNBQU0sTUFBTSxJQUFJLEtBQUssU0FBU0EsTUFBSztBQUNuQyxjQUFNLFFBQVEsS0FBSztBQUVuQixnQkFBUSxDQUFBRCxTQUFPO0FBQ2IsY0FBRyxPQUFPLE9BQU87QUFDZixnQkFBSUEsSUFBRztBQUVULGdCQUFNO0FBQUEsUUFDUjtBQUFBLE1BQ0Y7QUFFQSxZQUFNLEdBQUcsSUFBSTtBQUNiLGNBQVEsaUJBQWlCLEVBQUUsS0FBSyxLQUFLLElBQUksUUFBUSxHQUFHO0FBQUEsUUFDbEQsU0FBUyxFQUFFLEtBQUssSUFBSTtBQUFBLE1BQ3RCLENBQUM7QUFBQSxJQUNIO0FBRUEsbUJBQWUsU0FBUyxLQUFLLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDeEMsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJrZXkiLCAidmFsdWUiXQp9Cg==
65
+
66
+ //#endregion
67
+ export { ref };
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnN0cnVjdGlvbi9yZWYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIHNjb3BlIH0gZnJvbSAnLi4vb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdGF0ZSwgdXBkYXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0aWVzIH0gPSBPYmplY3Q7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHJlZiB7XG4gIHR5cGUgQ2FsbGJhY2s8VD4gPSAoXG4gICAgYXJndW1lbnQ6IFRcbiAgKSA9PiAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAvKiogQ3VycmVudCB2YWx1ZSBoZWxkIGJ5IHRoaXMgcmVmZXJlbmNlLiAqL1xuICAgIGN1cnJlbnQ6IFQ7XG5cbiAgICAvKiogU3RhdGUgaW5zdGFuY2UgdGhpcyByZWZlcmVuY2UgYmVsb25ncyB0by4gKi9cbiAgICBpczogU3RhdGU7XG5cbiAgICAvKiogS2V5IG9mIHByb3BlcnR5IG9uIHN0YXRlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gY2hhbmdlcyBvZiB0aGlzIHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIHRoZSBjdXJyZW50IHZhbHVlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICAgKiBAcmV0dXJucyBVbnN1YnNjcmliZSBmdW5jdGlvbiB0byBzdG9wIGxpc3RlbmluZyB0byBjaGFuZ2VzLlxuICAgICAqL1xuICAgIGdldChjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgIGdldCgpOiBUIHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG5cbiAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgdHlwZSBQcm94eTxUIGV4dGVuZHMgU3RhdGU+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogT2JqZWN0PFRbUF0+IH0gJiB7XG4gICAgZ2V0KCk6IFQ7XG4gIH07XG5cbiAgdHlwZSBDdXN0b21Qcm94eTxUIGV4dGVuZHMgU3RhdGUsIFI+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogUiB9ICYge1xuICAgIGdldCgpOiBUO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5mdW5jdGlvbiByZWY8VCBleHRlbmRzIFN0YXRlPih0YXJnZXQ6IFQpOiByZWYuUHJveHk8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcmVmPE8gZXh0ZW5kcyBTdGF0ZSwgUj4oXG4gIHRhcmdldDogTyxcbiAgbWFwcGVyOiAoa2V5OiBTdGF0ZS5GaWVsZDxPPikgPT4gUlxuKTogcmVmLkN1c3RvbVByb3h5PE8sIFI+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihjYWxsYmFjaz86IHJlZi5DYWxsYmFjazxUPik6IHJlZi5PYmplY3Q8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihcbiAgY2FsbGJhY2s6IHJlZi5DYWxsYmFjazxUIHwgbnVsbD4sXG4gIGlnbm9yZU51bGw6IGJvb2xlYW5cbik6IHJlZi5PYmplY3Q8VD47XG5cbmZ1bmN0aW9uIHJlZjxUPihcbiAgYXJnPzogcmVmLkNhbGxiYWNrPFQ+IHwgU3RhdGUsXG4gIGFyZzI/OiAoKGtleTogc3RyaW5nKSA9PiBhbnkpIHwgYm9vbGVhblxuKSB7XG4gIHJldHVybiB1c2U8VD4oKGtleSwgc3ViamVjdCwgc3RhdGUpID0+IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBjb25zdCBtZXRob2QgPVxuICAgICAgKGtleTogc3RyaW5nLCBmcm9tOiBSZWNvcmQ8c3RyaW5nLCBUPikgPT5cbiAgICAgIChjYWxsYmFjaz86ICh2YWx1ZTogVCkgPT4gdm9pZCkgPT5cbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICA/IGFkZExpc3RlbmVyKHN1YmplY3QsICgpID0+IGNhbGxiYWNrKGZyb21ba2V5XSksIGtleSlcbiAgICAgICAgICA6IGZyb21ba2V5XTtcblxuICAgIGlmIChhcmcgPT09IHN1YmplY3QpXG4gICAgICBhZGRMaXN0ZW5lcihcbiAgICAgICAgc3ViamVjdCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHN1YmplY3QpXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvdXQgPSBhcmcyKGtleSk7XG4gICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBvdXQgfSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ2V0ID0gbWV0aG9kKGtleSwgc3ViamVjdCk7XG4gICAgICAgICAgICAgIGNvbnN0IHNldCA9ICh4OiBhbnkpID0+IChzdWJqZWN0W2tleV0gPSB4KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0aWVzKHNldCwge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHsgZ2V0LCBzZXQgfSxcbiAgICAgICAgICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9LFxuICAgICAgICAgICAgICAgIGlzOiB7IHZhbHVlOiBzdWJqZWN0IH0sXG4gICAgICAgICAgICAgICAga2V5OiB7IHZhbHVlOiBrZXkgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBzZXQgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBlbHNlIGlmICh0eXBlb2YgYXJnID09ICdvYmplY3QnKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInJlZiBpbnN0cnVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9iamVjdCB3aGljaCBpcyBub3QgJ3RoaXMnXCJcbiAgICAgICk7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdW5zZXQ6ICgobmV4dDogVCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBnZXQgPSBtZXRob2Qoa2V5LCBzdGF0ZSk7XG4gICAgICBjb25zdCBzZXQgPSAodmFsdWU/OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSkgfHwgIWFyZykgcmV0dXJuO1xuXG4gICAgICAgIGlmICh1bnNldCkgdW5zZXQgPSB2b2lkIHVuc2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgYXJnMiAhPT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBleGl0ID0gc2NvcGUoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICB1bnNldCA9IChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nKSBvdXQoa2V5KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICBzdGF0ZVtrZXldID0gbnVsbDtcbiAgICAgIHZhbHVlID0gZGVmaW5lUHJvcGVydHkoeyBnZXQsIGtleSwgaXM6IHN1YmplY3QgfSwgJ2N1cnJlbnQnLCB7XG4gICAgICAgIGdldCxcbiAgICAgICAgc2V0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShzdWJqZWN0LCBrZXksIHsgdmFsdWUgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyByZWYgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFNLEVBQUUsZ0JBQWdCLHFCQUFxQjtBQXdGN0MsU0FBUyxJQUNQLEtBQ0EsTUFDQTtBQUNBLFFBQU8sS0FBUSxLQUFLLFNBQVMsVUFBVTtFQUNyQyxJQUFJLFFBQVEsRUFBRTtFQUNkLE1BQU0sVUFDSCxLQUFhLFVBQ2IsYUFDQyxXQUNJLFlBQVksZUFBZSxTQUFTLEtBQUssS0FBSyxFQUFFLElBQUksR0FDcEQsS0FBSztBQUViLE1BQUksUUFBUSxRQUNWLGFBQ0UsZUFDTTtBQUNKLFFBQUssTUFBTSxPQUFPLFFBQ2hCLEtBQUksT0FBTyxRQUFRLFdBQ2pCLGdCQUFlLE9BQU8sS0FBSztJQUN6QixjQUFjO0lBQ2QsTUFBTTtLQUNKLE1BQU0sTUFBTSxLQUFLLElBQUk7QUFDckIsb0JBQWUsT0FBTyxLQUFLLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDMUMsWUFBTzs7SUFFVixDQUFDO1FBQ0M7SUFDSCxNQUFNLE1BQU0sT0FBTyxLQUFLLFFBQVE7SUFDaEMsTUFBTSxPQUFPLE1BQVksUUFBUSxPQUFPO0FBRXhDLHFCQUFpQixLQUFLO0tBQ3BCLFNBQVM7TUFBRTtNQUFLO01BQUs7S0FDckIsS0FBSyxFQUFFLE9BQU8sS0FBSztLQUNuQixJQUFJLEVBQUUsT0FBTyxTQUFTO0tBQ3RCLEtBQUssRUFBRSxPQUFPLEtBQUs7S0FDcEIsQ0FBQztBQUVGLG1CQUFlLE9BQU8sS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDOztBQUc5QyxVQUFPO0tBRVQsS0FDRDtXQUNNLE9BQU8sT0FBTyxTQUNyQixPQUFNLElBQUksTUFDUiw4REFDRDtPQUNFO0dBQ0gsSUFBSTtHQUNKLE1BQU0sTUFBTSxPQUFPLEtBQUssTUFBTTtHQUM5QixNQUFNLE9BQU8sVUFBZ0I7QUFDM0IsUUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUs7QUFFMUMsUUFBSSxNQUFPLFNBQVEsS0FBSyxNQUFNLE1BQU07QUFFcEMsUUFBSSxVQUFVLFFBQVEsU0FBUyxNQUFPO0lBRXRDLE1BQU0sT0FBTyxPQUFPO0lBQ3BCLE1BQU0sTUFBTSxJQUFJLEtBQUssU0FBUyxNQUFNO0lBQ3BDLE1BQU0sUUFBUSxNQUFNO0FBRXBCLGFBQVMsUUFBUTtBQUNmLFNBQUksT0FBTyxPQUFPLFdBQVksS0FBSSxJQUFJO0FBRXRDLFlBQU87OztBQUlYLFNBQU0sT0FBTztBQUNiLFdBQVEsZUFBZTtJQUFFO0lBQUs7SUFBSyxJQUFJO0lBQVMsRUFBRSxXQUFXO0lBQzNEO0lBQ0E7SUFDRCxDQUFDOztBQUdKLGlCQUFlLFNBQVMsS0FBSyxFQUFFLE9BQU8sQ0FBQztHQUN2QyJ9
@@ -0,0 +1,69 @@
1
+ import { State } from "../state.js";
2
+
3
+ //#region src/instruction/set.d.ts
4
+ declare namespace set {
5
+ type Callback<T, S = any> = (this: S, next: T, previous: T) => ((next: T) => void) | Promise<any> | void | boolean;
6
+ type Compute<T, S = any> = (on: S, key: string) => T;
7
+ type Factory<T, S = any> = (this: S, key: string) => Promise<T> | T;
8
+ }
9
+ /**
10
+ * Set property as `undefined` but required.
11
+ *
12
+ * Property cannot be accessed until it is defined. If accessed while undefined, a hybrid
13
+ * `Promise`/`Error` (aka: [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html)) will be thrown.
14
+ */
15
+ declare function set<T = any>(): T;
16
+ /**
17
+ * Set property with a factory function.
18
+ *
19
+ * **Note** Factory is lazy! It will only run if/when property is accessed.
20
+ * Value will be undefined until factory resolves, which will also dispatch an update for the property.
21
+ */
22
+ declare function set<T>(factory: set.Factory<T>, required: false): T | undefined;
23
+ /**
24
+ * Set property with a factory function.
25
+ *
26
+ * If async, property cannot be accessed until resolves, yeilding a result.
27
+ * If accessed while still processing, React Suspense will be thrown.
28
+ *
29
+ * @param factory - Callback run to derrive property value.
30
+ * @param required - If true run factory immediately on creation, otherwise on access.
31
+ */
32
+ declare function set<T>(factory: set.Factory<T>, required?: boolean): T;
33
+ /**
34
+ * Set property with a factory function.
35
+ *
36
+ * If async, property cannot be accessed until resolves, yeilding a result.
37
+ * If accessed while still processing, React Suspense will be thrown.
38
+ *
39
+ * @param factory - Callback run to derrive property value.
40
+ * @param onUpdate - Callback run when property is finished computing or is set.
41
+ */
42
+ declare function set<T>(factory: set.Factory<T>, onUpdate?: set.Callback<T>): T;
43
+ /**
44
+ * Set a property with empty placeholder and/or update callback.
45
+ *
46
+ * @param value - Starting value for property. If undefined, suspense will be thrown on access, until value is set and accepted by callback.
47
+ * @param onUpdate - Callback run when property is set. If returns false, update is not accepted and property will keep previous value.
48
+ */
49
+ declare function set<T>(value: T | undefined, onUpdate?: set.Callback<T>): T;
50
+ /**
51
+ * Implement a reactive computed value using a method reference.
52
+ *
53
+ * The method will automatically re-run when any accessed properties change.
54
+ * Use `true` to indicate reactive mode with implicit `this` as the source.
55
+ *
56
+ * @param reactiveToThis - Pass `true` to enable reactive mode with implicit this
57
+ * @param method - Method reference or compute function to use
58
+ */
59
+ declare function set<R, T = any>(reactiveToThis: true, method: set.Compute<R, T> | Function): R;
60
+ /**
61
+ * Implement a computed value; output will be generated by provided function.
62
+ *
63
+ * @param reactiveTo - Source state from which computed value will be a subscriber.
64
+ * @param compute - Compute function. Bound to a subscriber-proxy of source, returns output value. Will update automatically as input values change.
65
+ */
66
+ declare function set<R, T extends State>(reactiveTo: T, compute: set.Compute<R, T>): R;
67
+ //#endregion
68
+ export { set };
69
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3NldC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuZGVjbGFyZSBuYW1lc3BhY2Ugc2V0IHtcbiAgICB0eXBlIENhbGxiYWNrPFQsIFMgPSBhbnk+ID0gKHRoaXM6IFMsIG5leHQ6IFQsIHByZXZpb3VzOiBUKSA9PiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgUHJvbWlzZTxhbnk+IHwgdm9pZCB8IGJvb2xlYW47XG4gICAgdHlwZSBDb21wdXRlPFQsIFMgPSBhbnk+ID0gKG9uOiBTLCBrZXk6IHN0cmluZykgPT4gVDtcbiAgICB0eXBlIEZhY3Rvcnk8VCwgUyA9IGFueT4gPSAodGhpczogUywga2V5OiBzdHJpbmcpID0+IFByb21pc2U8VD4gfCBUO1xufVxuLyoqXG4gKiBTZXQgcHJvcGVydHkgYXMgYHVuZGVmaW5lZGAgYnV0IHJlcXVpcmVkLlxuICpcbiAqIFByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCBpdCBpcyBkZWZpbmVkLiBJZiBhY2Nlc3NlZCB3aGlsZSB1bmRlZmluZWQsIGEgaHlicmlkXG4gKiBgUHJvbWlzZWAvYEVycm9yYCAoYWthOiBbU3VzcGVuc2VdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9jb25jdXJyZW50LW1vZGUtc3VzcGVuc2UuaHRtbCkpIHdpbGwgYmUgdGhyb3duLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxUID0gYW55PigpOiBUO1xuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlKiogRmFjdG9yeSBpcyBsYXp5ISBJdCB3aWxsIG9ubHkgcnVuIGlmL3doZW4gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKiBWYWx1ZSB3aWxsIGJlIHVuZGVmaW5lZCB1bnRpbCBmYWN0b3J5IHJlc29sdmVzLCB3aGljaCB3aWxsIGFsc28gZGlzcGF0Y2ggYW4gdXBkYXRlIGZvciB0aGUgcHJvcGVydHkuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gc2V0PFQ+KGZhY3Rvcnk6IHNldC5GYWN0b3J5PFQ+LCByZXF1aXJlZDogZmFsc2UpOiBUIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogSWYgYXN5bmMsIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCByZXNvbHZlcywgeWVpbGRpbmcgYSByZXN1bHQuXG4gKiBJZiBhY2Nlc3NlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLCBSZWFjdCBTdXNwZW5zZSB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIENhbGxiYWNrIHJ1biB0byBkZXJyaXZlIHByb3BlcnR5IHZhbHVlLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgdHJ1ZSBydW4gZmFjdG9yeSBpbW1lZGlhdGVseSBvbiBjcmVhdGlvbiwgb3RoZXJ3aXNlIG9uIGFjY2Vzcy5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBzZXQ8VD4oZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4sIHJlcXVpcmVkPzogYm9vbGVhbik6IFQ7XG4vKipcbiAqIFNldCBwcm9wZXJ0eSB3aXRoIGEgZmFjdG9yeSBmdW5jdGlvbi5cbiAqXG4gKiBJZiBhc3luYywgcHJvcGVydHkgY2Fubm90IGJlIGFjY2Vzc2VkIHVudGlsIHJlc29sdmVzLCB5ZWlsZGluZyBhIHJlc3VsdC5cbiAqIElmIGFjY2Vzc2VkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcsIFJlYWN0IFN1c3BlbnNlIHdpbGwgYmUgdGhyb3duLlxuICpcbiAqIEBwYXJhbSBmYWN0b3J5IC0gQ2FsbGJhY2sgcnVuIHRvIGRlcnJpdmUgcHJvcGVydHkgdmFsdWUuXG4gKiBAcGFyYW0gb25VcGRhdGUgLSBDYWxsYmFjayBydW4gd2hlbiBwcm9wZXJ0eSBpcyBmaW5pc2hlZCBjb21wdXRpbmcgb3IgaXMgc2V0LlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxUPihmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiwgb25VcGRhdGU/OiBzZXQuQ2FsbGJhY2s8VD4pOiBUO1xuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSB3aXRoIGVtcHR5IHBsYWNlaG9sZGVyIGFuZC9vciB1cGRhdGUgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gU3RhcnRpbmcgdmFsdWUgZm9yIHByb3BlcnR5LiBJZiB1bmRlZmluZWQsIHN1c3BlbnNlIHdpbGwgYmUgdGhyb3duIG9uIGFjY2VzcywgdW50aWwgdmFsdWUgaXMgc2V0IGFuZCBhY2NlcHRlZCBieSBjYWxsYmFjay5cbiAqIEBwYXJhbSBvblVwZGF0ZSAtIENhbGxiYWNrIHJ1biB3aGVuIHByb3BlcnR5IGlzIHNldC4gSWYgcmV0dXJucyBmYWxzZSwgdXBkYXRlIGlzIG5vdCBhY2NlcHRlZCBhbmQgcHJvcGVydHkgd2lsbCBrZWVwIHByZXZpb3VzIHZhbHVlLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxUPih2YWx1ZTogVCB8IHVuZGVmaW5lZCwgb25VcGRhdGU/OiBzZXQuQ2FsbGJhY2s8VD4pOiBUO1xuLyoqXG4gKiBJbXBsZW1lbnQgYSByZWFjdGl2ZSBjb21wdXRlZCB2YWx1ZSB1c2luZyBhIG1ldGhvZCByZWZlcmVuY2UuXG4gKlxuICogVGhlIG1ldGhvZCB3aWxsIGF1dG9tYXRpY2FsbHkgcmUtcnVuIHdoZW4gYW55IGFjY2Vzc2VkIHByb3BlcnRpZXMgY2hhbmdlLlxuICogVXNlIGB0cnVlYCB0byBpbmRpY2F0ZSByZWFjdGl2ZSBtb2RlIHdpdGggaW1wbGljaXQgYHRoaXNgIGFzIHRoZSBzb3VyY2UuXG4gKlxuICogQHBhcmFtIHJlYWN0aXZlVG9UaGlzIC0gUGFzcyBgdHJ1ZWAgdG8gZW5hYmxlIHJlYWN0aXZlIG1vZGUgd2l0aCBpbXBsaWNpdCB0aGlzXG4gKiBAcGFyYW0gbWV0aG9kIC0gTWV0aG9kIHJlZmVyZW5jZSBvciBjb21wdXRlIGZ1bmN0aW9uIHRvIHVzZVxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxSLCBUID0gYW55PihyZWFjdGl2ZVRvVGhpczogdHJ1ZSwgbWV0aG9kOiBzZXQuQ29tcHV0ZTxSLCBUPiB8IEZ1bmN0aW9uKTogUjtcbi8qKlxuICogSW1wbGVtZW50IGEgY29tcHV0ZWQgdmFsdWU7IG91dHB1dCB3aWxsIGJlIGdlbmVyYXRlZCBieSBwcm92aWRlZCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcmVhY3RpdmVUbyAtIFNvdXJjZSBzdGF0ZSBmcm9tIHdoaWNoIGNvbXB1dGVkIHZhbHVlIHdpbGwgYmUgYSBzdWJzY3JpYmVyLlxuICogQHBhcmFtIGNvbXB1dGUgLSBDb21wdXRlIGZ1bmN0aW9uLiBCb3VuZCB0byBhIHN1YnNjcmliZXItcHJveHkgb2Ygc291cmNlLCByZXR1cm5zIG91dHB1dCB2YWx1ZS4gV2lsbCB1cGRhdGUgYXV0b21hdGljYWxseSBhcyBpbnB1dCB2YWx1ZXMgY2hhbmdlLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxSLCBUIGV4dGVuZHMgU3RhdGU+KHJlYWN0aXZlVG86IFQsIGNvbXB1dGU6IHNldC5Db21wdXRlPFIsIFQ+KTogUjtcbmV4cG9ydCB7IHNldCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFBLE1BQVE7Q0FBQTtFQUFBLEdBQVUsTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3RCLElBQUksTUFBSztDQUFBO0VBQUEsTUFBVyxDQUFDLEVBQUU7Q0FBRSxDQUFBLElBQUssR0FBRztDQUFBO0FBQ2pDLElBQUksTUFBSztDQUFBO0VBQUEsTUFBVztFQUFDO0VBQUcsSUFBSTtFQUFTO0VBQUU7Q0FBQTtFQUFHO0VBQUU7RUFBTTtFQUFJO0VBQUU7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN4RCxJQUFJLE1BQUs7Q0FBQTtFQUFBLE1BQVc7RUFBQztFQUFHLElBQUk7RUFBUztFQUFFO0NBQUU7RUFBQTtFQUFLO0VBQUE7RUFBUTtFQUFHO0VBQUE7RUFBUztFQUFHO0NBQUM7QUFDdEUsSUFBQSxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxJQUFBO0VBQUE7RUFBQSxJQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBRSxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBLElBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNGLElBQUcsTUFBSTtDQUFBO0VBQVMsR0FBRyxNQUFDO0VBQUE7RUFBUztFQUFFLElBQUk7RUFBUTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMzQyxJQUFDLE1BQUE7Q0FBQTtFQUFBLEdBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsSUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBIn0=