@expressive/mvc 0.72.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,136 +1,118 @@
1
- import { addListener, enter, watch } from "../control";
2
- import { access, event, METHOD, State, update } from "../state";
3
- import { use } from "./use";
1
+ import { addListener, event, scope, watch } from "../observable.js";
2
+ import { METHOD, State, access, update } from "../state.js";
3
+ import { use } from "./use.js";
4
+
5
+ //#region src/instruction/set.ts
4
6
  const STALE = /* @__PURE__ */ new WeakSet();
5
7
  function set(value, argument) {
6
- return use((key, subject, state) => {
7
- if (typeof value == "symbol")
8
- throw new Error(
9
- `Attempted to use an instruction result (probably use or get) as computed source for ${subject}.${key}. This is not allowed.`
10
- );
11
- const property = {};
12
- if (value instanceof State || value === true) {
13
- let connect2 = function(self) {
14
- reset = watch(
15
- self,
16
- (current) => {
17
- proxy = current;
18
- if (!(key in state) || STALE.delete(compute2)) compute2(!reset);
19
- return (didUpdate) => {
20
- if (didUpdate) {
21
- STALE.add(compute2);
22
- event(subject, key, true);
23
- }
24
- };
25
- },
26
- false
27
- );
28
- }, compute2 = function(initial) {
29
- let next;
30
- try {
31
- next = getter.call(proxy, proxy, key);
32
- } catch (err) {
33
- console.warn(
34
- `An exception was thrown while ${initial ? "initializing" : "refreshing"} ${subject}.${key}.`
35
- );
36
- if (initial) throw err;
37
- console.error(err);
38
- }
39
- update(subject, key, next, !isAsync);
40
- };
41
- var connect = connect2, compute = compute2;
42
- let from = subject;
43
- let getter;
44
- if (value instanceof State) {
45
- from = value;
46
- getter = argument;
47
- } else {
48
- const fn = METHOD.get(argument) || argument;
49
- getter = (p, k) => fn.call(p, k, p);
50
- }
51
- const source = (resolve) => resolve(from);
52
- let reset;
53
- let isAsync;
54
- let proxy;
55
- return () => {
56
- if (!proxy) {
57
- source(connect2);
58
- isAsync = true;
59
- }
60
- if (STALE.delete(compute2)) compute2();
61
- return access(subject, key, !proxy);
62
- };
63
- }
64
- if (typeof value == "function" || value instanceof Promise) {
65
- let init2 = function() {
66
- if (typeof value == "function")
67
- try {
68
- value = attempt(value.bind(subject, key));
69
- } catch (err) {
70
- console.warn(
71
- `Generating initial value for ${subject}.${key} failed.`
72
- );
73
- throw err;
74
- }
75
- property.get = argument !== false;
76
- const set2 = (value2) => subject[key] = value2;
77
- if (value instanceof Promise)
78
- value.then(set2, (error) => {
79
- event(subject, key);
80
- property.get = () => {
81
- throw error;
82
- };
83
- });
84
- else set2(value);
85
- if (argument) return null;
86
- return subject[key];
87
- };
88
- var init = init2;
89
- if (argument) {
90
- addListener(subject, init2, true);
91
- } else {
92
- property.get = init2;
93
- }
94
- } else if (value !== void 0) {
95
- property.value = value;
96
- }
97
- if (typeof argument == "function") {
98
- let unset;
99
- property.set = function(value2, previous) {
100
- const exit = enter();
101
- const returns = argument.call(this, value2, previous);
102
- const flush = exit();
103
- if (returns === false) return false;
104
- if (typeof unset == "function") unset(value2);
105
- unset = (next) => {
106
- if (typeof returns == "function") returns(next);
107
- flush();
108
- };
109
- };
110
- } else
111
- property.set = (value2) => {
112
- property.get = void 0;
113
- update(subject, key, value2);
114
- };
115
- return property;
116
- });
8
+ return use((key, subject, state) => {
9
+ if (typeof value == "symbol") throw new Error(`Attempted to use an instruction result (probably use or get) as computed source for ${subject}.${key}. This is not allowed.`);
10
+ const property = {};
11
+ if (value instanceof State || value === true) {
12
+ let from = subject;
13
+ let getter;
14
+ if (value instanceof State) {
15
+ from = value;
16
+ getter = argument;
17
+ } else {
18
+ const fn = METHOD.get(argument) || argument;
19
+ getter = ((p, k) => fn.call(p, k, p));
20
+ }
21
+ const source = (resolve) => resolve(from);
22
+ let reset;
23
+ let isAsync;
24
+ let proxy;
25
+ function connect(self) {
26
+ reset = watch(self, (current) => {
27
+ proxy = current;
28
+ if (!(key in state) || STALE.delete(compute)) compute(!reset);
29
+ return (didUpdate) => {
30
+ if (didUpdate) {
31
+ STALE.add(compute);
32
+ event(subject, key, true);
33
+ }
34
+ };
35
+ }, false);
36
+ }
37
+ function compute(initial) {
38
+ let next;
39
+ try {
40
+ next = getter.call(proxy, proxy, key);
41
+ } catch (err) {
42
+ console.warn(`An exception was thrown while ${initial ? "initializing" : "refreshing"} ${subject}.${key}.`);
43
+ if (initial) throw err;
44
+ console.error(err);
45
+ }
46
+ update(subject, key, next, !isAsync);
47
+ }
48
+ return () => {
49
+ if (!proxy) {
50
+ source(connect);
51
+ isAsync = true;
52
+ }
53
+ if (STALE.delete(compute)) compute();
54
+ return access(subject, key, !proxy);
55
+ };
56
+ }
57
+ if (typeof value == "function" || value instanceof Promise) {
58
+ function init() {
59
+ if (typeof value == "function") try {
60
+ value = attempt(value.bind(subject, key));
61
+ } catch (err) {
62
+ console.warn(`Generating initial value for ${subject}.${key} failed.`);
63
+ throw err;
64
+ }
65
+ property.get = argument !== false;
66
+ const set = (value) => subject[key] = value;
67
+ if (value instanceof Promise) value.then(set, (error) => {
68
+ event(subject, key);
69
+ property.get = () => {
70
+ throw error;
71
+ };
72
+ });
73
+ else set(value);
74
+ if (argument) return null;
75
+ return subject[key];
76
+ }
77
+ if (argument) addListener(subject, init, true);
78
+ else property.get = init;
79
+ } else if (value !== void 0) property.value = value;
80
+ if (typeof argument == "function") {
81
+ let unset;
82
+ property.set = function(value, previous) {
83
+ const exit = scope();
84
+ const returns = argument.call(this, value, previous);
85
+ const flush = exit();
86
+ if (returns === false) return false;
87
+ if (typeof unset == "function") unset(value);
88
+ unset = (next) => {
89
+ if (typeof returns == "function") returns(next);
90
+ flush();
91
+ };
92
+ };
93
+ } else property.set = (value) => {
94
+ property.get = void 0;
95
+ update(subject, key, value);
96
+ };
97
+ return property;
98
+ });
117
99
  }
118
100
  function attempt(fn) {
119
- function retry(err) {
120
- if (err instanceof Promise) return err.then(compute);
121
- else throw err;
122
- }
123
- function compute() {
124
- try {
125
- const output = fn();
126
- return output instanceof Promise ? output.catch(retry) : output;
127
- } catch (err) {
128
- return retry(err);
129
- }
130
- }
131
- return compute();
101
+ function retry(err) {
102
+ if (err instanceof Promise) return err.then(compute);
103
+ else throw err;
104
+ }
105
+ function compute() {
106
+ try {
107
+ const output = fn();
108
+ return output instanceof Promise ? output.catch(retry) : output;
109
+ } catch (err) {
110
+ return retry(err);
111
+ }
112
+ }
113
+ return compute();
132
114
  }
133
- export {
134
- set
135
- };
136
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyLCB3YXRjaCB9IGZyb20gJy4uL2NvbnRyb2wnO1xuaW1wb3J0IHsgYWNjZXNzLCBldmVudCwgTUVUSE9ELCBTdGF0ZSwgdXBkYXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb24sIHVzZSB9IGZyb20gJy4vdXNlJztcblxuY29uc3QgU1RBTEUgPSBuZXcgV2Vha1NldDwoKSA9PiB2b2lkPigpO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBzZXQge1xuICB0eXBlIENhbGxiYWNrPFQsIFMgPSBhbnk+ID0gKFxuICAgIHRoaXM6IFMsXG4gICAgbmV4dDogVCxcbiAgICBwcmV2aW91czogVFxuICApID0+ICgobmV4dDogVCkgPT4gdm9pZCkgfCBQcm9taXNlPGFueT4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICB0eXBlIENvbXB1dGU8VCwgUyA9IGFueT4gPSAob246IFMsIGtleTogc3RyaW5nKSA9PiBUO1xuXG4gIHR5cGUgRmFjdG9yeTxULCBTID0gYW55PiA9ICh0aGlzOiBTLCBrZXk6IHN0cmluZykgPT4gUHJvbWlzZTxUPiB8IFQ7XG59XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IGFzIGB1bmRlZmluZWRgIGJ1dCByZXF1aXJlZC5cbiAqXG4gKiBQcm9wZXJ0eSBjYW5ub3QgYmUgYWNjZXNzZWQgdW50aWwgaXQgaXMgZGVmaW5lZC4gSWYgYWNjZXNzZWQgd2hpbGUgdW5kZWZpbmVkLCBhIGh5YnJpZFxuICogYFByb21pc2VgL2BFcnJvcmAgKGFrYTogW1N1c3BlbnNlXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvY29uY3VycmVudC1tb2RlLXN1c3BlbnNlLmh0bWwpKSB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gc2V0PFQgPSBhbnk+KCk6IFQ7XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IHdpdGggYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZSoqIEZhY3RvcnkgaXMgbGF6eSEgSXQgd2lsbCBvbmx5IHJ1biBpZi93aGVuIHByb3BlcnR5IGlzIGFjY2Vzc2VkLlxuICogVmFsdWUgd2lsbCBiZSB1bmRlZmluZWQgdW50aWwgZmFjdG9yeSByZXNvbHZlcywgd2hpY2ggd2lsbCBhbHNvIGRpc3BhdGNoIGFuIHVwZGF0ZSBmb3IgdGhlIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBzZXQ8VD4oZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4sIHJlcXVpcmVkOiBmYWxzZSk6IFQgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IHdpdGggYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICpcbiAqIElmIGFzeW5jLCBwcm9wZXJ0eSBjYW5ub3QgYmUgYWNjZXNzZWQgdW50aWwgcmVzb2x2ZXMsIHllaWxkaW5nIGEgcmVzdWx0LlxuICogSWYgYWNjZXNzZWQgd2hpbGUgc3RpbGwgcHJvY2Vzc2luZywgUmVhY3QgU3VzcGVuc2Ugd2lsbCBiZSB0aHJvd24uXG4gKlxuICogQHBhcmFtIGZhY3RvcnkgLSBDYWxsYmFjayBydW4gdG8gZGVycml2ZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEBwYXJhbSByZXF1aXJlZCAtIElmIHRydWUgcnVuIGZhY3RvcnkgaW1tZWRpYXRlbHkgb24gY3JlYXRpb24sIG90aGVyd2lzZSBvbiBhY2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHNldDxUPihmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiwgcmVxdWlyZWQ/OiBib29sZWFuKTogVDtcblxuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogSWYgYXN5bmMsIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCByZXNvbHZlcywgeWVpbGRpbmcgYSByZXN1bHQuXG4gKiBJZiBhY2Nlc3NlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLCBSZWFjdCBTdXNwZW5zZSB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIENhbGxiYWNrIHJ1biB0byBkZXJyaXZlIHByb3BlcnR5IHZhbHVlLlxuICogQHBhcmFtIG9uVXBkYXRlIC0gQ2FsbGJhY2sgcnVuIHdoZW4gcHJvcGVydHkgaXMgZmluaXNoZWQgY29tcHV0aW5nIG9yIGlzIHNldC5cbiAqL1xuZnVuY3Rpb24gc2V0PFQ+KGZhY3Rvcnk6IHNldC5GYWN0b3J5PFQ+LCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgd2l0aCBlbXB0eSBwbGFjZWhvbGRlciBhbmQvb3IgdXBkYXRlIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFN0YXJ0aW5nIHZhbHVlIGZvciBwcm9wZXJ0eS4gSWYgdW5kZWZpbmVkLCBzdXNwZW5zZSB3aWxsIGJlIHRocm93biBvbiBhY2Nlc3MsIHVudGlsIHZhbHVlIGlzIHNldCBhbmQgYWNjZXB0ZWQgYnkgY2FsbGJhY2suXG4gKiBAcGFyYW0gb25VcGRhdGUgLSBDYWxsYmFjayBydW4gd2hlbiBwcm9wZXJ0eSBpcyBzZXQuIElmIHJldHVybnMgZmFsc2UsIHVwZGF0ZSBpcyBub3QgYWNjZXB0ZWQgYW5kIHByb3BlcnR5IHdpbGwga2VlcCBwcmV2aW91cyB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2V0PFQ+KHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbi8qKlxuICogSW1wbGVtZW50IGEgcmVhY3RpdmUgY29tcHV0ZWQgdmFsdWUgdXNpbmcgYSBtZXRob2QgcmVmZXJlbmNlLlxuICpcbiAqIFRoZSBtZXRob2Qgd2lsbCBhdXRvbWF0aWNhbGx5IHJlLXJ1biB3aGVuIGFueSBhY2Nlc3NlZCBwcm9wZXJ0aWVzIGNoYW5nZS5cbiAqIFVzZSBgdHJ1ZWAgdG8gaW5kaWNhdGUgcmVhY3RpdmUgbW9kZSB3aXRoIGltcGxpY2l0IGB0aGlzYCBhcyB0aGUgc291cmNlLlxuICpcbiAqIEBwYXJhbSByZWFjdGl2ZVRvVGhpcyAtIFBhc3MgYHRydWVgIHRvIGVuYWJsZSByZWFjdGl2ZSBtb2RlIHdpdGggaW1wbGljaXQgdGhpc1xuICogQHBhcmFtIG1ldGhvZCAtIE1ldGhvZCByZWZlcmVuY2Ugb3IgY29tcHV0ZSBmdW5jdGlvbiB0byB1c2VcbiAqL1xuZnVuY3Rpb24gc2V0PFIsIFQgPSBhbnk+KFxuICByZWFjdGl2ZVRvVGhpczogdHJ1ZSxcbiAgbWV0aG9kOiBzZXQuQ29tcHV0ZTxSLCBUPiB8IEZ1bmN0aW9uXG4pOiBSO1xuXG4vKipcbiAqIEltcGxlbWVudCBhIGNvbXB1dGVkIHZhbHVlOyBvdXRwdXQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHJlYWN0aXZlVG8gLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCBjb21wdXRlZCB2YWx1ZSB3aWxsIGJlIGEgc3Vic2NyaWJlci5cbiAqIEBwYXJhbSBjb21wdXRlIC0gQ29tcHV0ZSBmdW5jdGlvbi4gQm91bmQgdG8gYSBzdWJzY3JpYmVyLXByb3h5IG9mIHNvdXJjZSwgcmV0dXJucyBvdXRwdXQgdmFsdWUuIFdpbGwgdXBkYXRlIGF1dG9tYXRpY2FsbHkgYXMgaW5wdXQgdmFsdWVzIGNoYW5nZS5cbiAqL1xuZnVuY3Rpb24gc2V0PFIsIFQgZXh0ZW5kcyBTdGF0ZT4ocmVhY3RpdmVUbzogVCwgY29tcHV0ZTogc2V0LkNvbXB1dGU8UiwgVD4pOiBSO1xuXG5mdW5jdGlvbiBzZXQ8VCA9IGFueT4odmFsdWU/OiB1bmtub3duLCBhcmd1bWVudD86IHVua25vd24pOiBhbnkge1xuICByZXR1cm4gdXNlPFQ+KChrZXksIHN1YmplY3QsIHN0YXRlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEF0dGVtcHRlZCB0byB1c2UgYW4gaW5zdHJ1Y3Rpb24gcmVzdWx0IChwcm9iYWJseSB1c2Ugb3IgZ2V0KSBhcyBjb21wdXRlZCBzb3VyY2UgZm9yICR7c3ViamVjdH0uJHtrZXl9LiBUaGlzIGlzIG5vdCBhbGxvd2VkLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eTogSW5zdHJ1Y3Rpb24uRGVzY3JpcHRvciA9IHt9O1xuXG4gICAgLy8gSGFuZGxlIHJlYWN0aXZlIGNvbXB1dGUgbW9kZXNcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTdGF0ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgbGV0IGZyb20gPSBzdWJqZWN0O1xuICAgICAgbGV0IGdldHRlcjogc2V0LkNvbXB1dGU8VCwgYW55PjtcblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RhdGUpIHtcbiAgICAgICAgZnJvbSA9IHZhbHVlO1xuICAgICAgICBnZXR0ZXIgPSBhcmd1bWVudCBhcyBzZXQuQ29tcHV0ZTxULCBhbnk+O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdmFsdWUgPT09IHRydWUsIGltcGxpY2l0IHRoaXMgd2l0aCBtZXRob2QgcmVmZXJlbmNlXG4gICAgICAgIGNvbnN0IGZuID0gTUVUSE9ELmdldChhcmd1bWVudCkgfHwgYXJndW1lbnQ7XG4gICAgICAgIGdldHRlciA9ICgocCwgaykgPT4gZm4uY2FsbChwLCBrLCBwKSkgYXMgc2V0LkNvbXB1dGU8VCwgYW55PjtcbiAgICAgIH1cblxuICAgICAgdHlwZSBTb3VyY2U8VCBleHRlbmRzIFN0YXRlID0gU3RhdGU+ID0gKHJlc29sdmU6ICh4OiBUKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgICAgY29uc3Qgc291cmNlOiBTb3VyY2UgPSAocmVzb2x2ZSkgPT4gcmVzb2x2ZShmcm9tKTtcblxuICAgICAgbGV0IHJlc2V0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgaXNBc3luYzogYm9vbGVhbjtcbiAgICAgIGxldCBwcm94eTogYW55O1xuXG4gICAgICBmdW5jdGlvbiBjb25uZWN0KHNlbGY6IFN0YXRlKSB7XG4gICAgICAgIHJlc2V0ID0gd2F0Y2goXG4gICAgICAgICAgc2VsZixcbiAgICAgICAgICAoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgcHJveHkgPSBjdXJyZW50O1xuXG4gICAgICAgICAgICBpZiAoIShrZXkgaW4gc3RhdGUpIHx8IFNUQUxFLmRlbGV0ZShjb21wdXRlKSkgY29tcHV0ZSghcmVzZXQpO1xuXG4gICAgICAgICAgICByZXR1cm4gKGRpZFVwZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlkVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgU1RBTEUuYWRkKGNvbXB1dGUpO1xuICAgICAgICAgICAgICAgIGV2ZW50KHN1YmplY3QsIGtleSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjb21wdXRlKGluaXRpYWw/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBuZXh0OiBUIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbmV4dCA9IGdldHRlci5jYWxsKHByb3h5LCBwcm94eSwga2V5KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYEFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIHdoaWxlICR7XG4gICAgICAgICAgICAgIGluaXRpYWwgPyAnaW5pdGlhbGl6aW5nJyA6ICdyZWZyZXNoaW5nJ1xuICAgICAgICAgICAgfSAke3N1YmplY3R9LiR7a2V5fS5gXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChpbml0aWFsKSB0aHJvdyBlcnI7XG5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCBuZXh0LCAhaXNBc3luYyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmICghcHJveHkpIHtcbiAgICAgICAgICBzb3VyY2UoY29ubmVjdCk7XG4gICAgICAgICAgaXNBc3luYyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU1RBTEUuZGVsZXRlKGNvbXB1dGUpKSBjb21wdXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIGFjY2VzcyhzdWJqZWN0LCBrZXksICFwcm94eSkgYXMgVDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGZhY3RvcnkvdmFsdWUgbW9kZXMgKGV4aXN0aW5nIGxvZ2ljKVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBhdHRlbXB0KHZhbHVlLmJpbmQoc3ViamVjdCwga2V5KSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBHZW5lcmF0aW5nIGluaXRpYWwgdmFsdWUgZm9yICR7c3ViamVjdH0uJHtrZXl9IGZhaWxlZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICBwcm9wZXJ0eS5nZXQgPSBhcmd1bWVudCAhPT0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2V0ID0gKHZhbHVlOiBhbnkpID0+IChzdWJqZWN0W2tleV0gPSB2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSlcbiAgICAgICAgICB2YWx1ZS50aGVuKHNldCwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBldmVudChzdWJqZWN0LCBrZXkpO1xuICAgICAgICAgICAgcHJvcGVydHkuZ2V0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIGVsc2Ugc2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAoYXJndW1lbnQpIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiBzdWJqZWN0W2tleV07XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmd1bWVudCkge1xuICAgICAgICBhZGRMaXN0ZW5lcihzdWJqZWN0LCBpbml0LCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BlcnR5LmdldCA9IGluaXQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0eS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHVuc2V0OiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgICBwcm9wZXJ0eS5zZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB2YWx1ZTogYW55LCBwcmV2aW91czogYW55KSB7XG4gICAgICAgIGNvbnN0IGV4aXQgPSBlbnRlcigpO1xuICAgICAgICBjb25zdCByZXR1cm5zID0gYXJndW1lbnQuY2FsbCh0aGlzLCB2YWx1ZSwgcHJldmlvdXMpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICBpZiAocmV0dXJucyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAodHlwZW9mIHVuc2V0ID09ICdmdW5jdGlvbicpIHVuc2V0KHZhbHVlKTtcblxuICAgICAgICB1bnNldCA9IChuZXh0OiBUKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXR1cm5zID09ICdmdW5jdGlvbicpIHJldHVybnMobmV4dCk7XG5cbiAgICAgICAgICBmbHVzaCgpO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9IGVsc2VcbiAgICAgIHByb3BlcnR5LnNldCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBwcm9wZXJ0eS5nZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH07XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhdHRlbXB0KGZuOiAoKSA9PiBhbnkpOiBhbnkge1xuICAvLyBJZ25vcmUgVFM4MDAwNjogRnVuY3Rpb24gbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgZnVuY3Rpb24gcmV0cnkoZXJyOiB1bmtub3duKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIFByb21pc2UpIHJldHVybiBlcnIudGhlbihjb21wdXRlKTtcbiAgICBlbHNlIHRocm93IGVycjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGUoKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZm4oKTtcblxuICAgICAgcmV0dXJuIG91dHB1dCBpbnN0YW5jZW9mIFByb21pc2UgPyBvdXRwdXQuY2F0Y2gocmV0cnkpIDogb3V0cHV0O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHJldHJ5KGVycik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGUoKTtcbn1cblxuZXhwb3J0IHsgc2V0IH07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGFBQWEsT0FBTyxhQUFhO0FBQzFDLFNBQVMsUUFBUSxPQUFPLFFBQVEsT0FBTyxjQUFjO0FBQ3JELFNBQXNCLFdBQVc7QUFFakMsTUFBTSxRQUFRLG9CQUFJLFFBQW9CO0FBa0Z0QyxTQUFTLElBQWEsT0FBaUIsVUFBeUI7QUFDOUQsU0FBTyxJQUFPLENBQUMsS0FBSyxTQUFTLFVBQVU7QUFDckMsUUFBSSxPQUFPLFNBQVM7QUFD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
115
+
116
+ //#endregion
117
+ export { set };
118
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnN0cnVjdGlvbi9zZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIHNjb3BlLCB3YXRjaCB9IGZyb20gJy4uL29ic2VydmFibGUnO1xuaW1wb3J0IHsgYWNjZXNzLCBldmVudCwgTUVUSE9ELCBTdGF0ZSwgdXBkYXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb24sIHVzZSB9IGZyb20gJy4vdXNlJztcblxuY29uc3QgU1RBTEUgPSBuZXcgV2Vha1NldDwoKSA9PiB2b2lkPigpO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBzZXQge1xuICB0eXBlIENhbGxiYWNrPFQsIFMgPSBhbnk+ID0gKFxuICAgIHRoaXM6IFMsXG4gICAgbmV4dDogVCxcbiAgICBwcmV2aW91czogVFxuICApID0+ICgobmV4dDogVCkgPT4gdm9pZCkgfCBQcm9taXNlPGFueT4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICB0eXBlIENvbXB1dGU8VCwgUyA9IGFueT4gPSAob246IFMsIGtleTogc3RyaW5nKSA9PiBUO1xuXG4gIHR5cGUgRmFjdG9yeTxULCBTID0gYW55PiA9ICh0aGlzOiBTLCBrZXk6IHN0cmluZykgPT4gUHJvbWlzZTxUPiB8IFQ7XG59XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IGFzIGB1bmRlZmluZWRgIGJ1dCByZXF1aXJlZC5cbiAqXG4gKiBQcm9wZXJ0eSBjYW5ub3QgYmUgYWNjZXNzZWQgdW50aWwgaXQgaXMgZGVmaW5lZC4gSWYgYWNjZXNzZWQgd2hpbGUgdW5kZWZpbmVkLCBhIGh5YnJpZFxuICogYFByb21pc2VgL2BFcnJvcmAgKGFrYTogW1N1c3BlbnNlXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvY29uY3VycmVudC1tb2RlLXN1c3BlbnNlLmh0bWwpKSB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gc2V0PFQgPSBhbnk+KCk6IFQ7XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IHdpdGggYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZSoqIEZhY3RvcnkgaXMgbGF6eSEgSXQgd2lsbCBvbmx5IHJ1biBpZi93aGVuIHByb3BlcnR5IGlzIGFjY2Vzc2VkLlxuICogVmFsdWUgd2lsbCBiZSB1bmRlZmluZWQgdW50aWwgZmFjdG9yeSByZXNvbHZlcywgd2hpY2ggd2lsbCBhbHNvIGRpc3BhdGNoIGFuIHVwZGF0ZSBmb3IgdGhlIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBzZXQ8VD4oZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4sIHJlcXVpcmVkOiBmYWxzZSk6IFQgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IHdpdGggYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICpcbiAqIElmIGFzeW5jLCBwcm9wZXJ0eSBjYW5ub3QgYmUgYWNjZXNzZWQgdW50aWwgcmVzb2x2ZXMsIHllaWxkaW5nIGEgcmVzdWx0LlxuICogSWYgYWNjZXNzZWQgd2hpbGUgc3RpbGwgcHJvY2Vzc2luZywgUmVhY3QgU3VzcGVuc2Ugd2lsbCBiZSB0aHJvd24uXG4gKlxuICogQHBhcmFtIGZhY3RvcnkgLSBDYWxsYmFjayBydW4gdG8gZGVycml2ZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEBwYXJhbSByZXF1aXJlZCAtIElmIHRydWUgcnVuIGZhY3RvcnkgaW1tZWRpYXRlbHkgb24gY3JlYXRpb24sIG90aGVyd2lzZSBvbiBhY2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHNldDxUPihmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiwgcmVxdWlyZWQ/OiBib29sZWFuKTogVDtcblxuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogSWYgYXN5bmMsIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCByZXNvbHZlcywgeWVpbGRpbmcgYSByZXN1bHQuXG4gKiBJZiBhY2Nlc3NlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLCBSZWFjdCBTdXNwZW5zZSB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIENhbGxiYWNrIHJ1biB0byBkZXJyaXZlIHByb3BlcnR5IHZhbHVlLlxuICogQHBhcmFtIG9uVXBkYXRlIC0gQ2FsbGJhY2sgcnVuIHdoZW4gcHJvcGVydHkgaXMgZmluaXNoZWQgY29tcHV0aW5nIG9yIGlzIHNldC5cbiAqL1xuZnVuY3Rpb24gc2V0PFQ+KGZhY3Rvcnk6IHNldC5GYWN0b3J5PFQ+LCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgd2l0aCBlbXB0eSBwbGFjZWhvbGRlciBhbmQvb3IgdXBkYXRlIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFN0YXJ0aW5nIHZhbHVlIGZvciBwcm9wZXJ0eS4gSWYgdW5kZWZpbmVkLCBzdXNwZW5zZSB3aWxsIGJlIHRocm93biBvbiBhY2Nlc3MsIHVudGlsIHZhbHVlIGlzIHNldCBhbmQgYWNjZXB0ZWQgYnkgY2FsbGJhY2suXG4gKiBAcGFyYW0gb25VcGRhdGUgLSBDYWxsYmFjayBydW4gd2hlbiBwcm9wZXJ0eSBpcyBzZXQuIElmIHJldHVybnMgZmFsc2UsIHVwZGF0ZSBpcyBub3QgYWNjZXB0ZWQgYW5kIHByb3BlcnR5IHdpbGwga2VlcCBwcmV2aW91cyB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2V0PFQ+KHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbi8qKlxuICogSW1wbGVtZW50IGEgcmVhY3RpdmUgY29tcHV0ZWQgdmFsdWUgdXNpbmcgYSBtZXRob2QgcmVmZXJlbmNlLlxuICpcbiAqIFRoZSBtZXRob2Qgd2lsbCBhdXRvbWF0aWNhbGx5IHJlLXJ1biB3aGVuIGFueSBhY2Nlc3NlZCBwcm9wZXJ0aWVzIGNoYW5nZS5cbiAqIFVzZSBgdHJ1ZWAgdG8gaW5kaWNhdGUgcmVhY3RpdmUgbW9kZSB3aXRoIGltcGxpY2l0IGB0aGlzYCBhcyB0aGUgc291cmNlLlxuICpcbiAqIEBwYXJhbSByZWFjdGl2ZVRvVGhpcyAtIFBhc3MgYHRydWVgIHRvIGVuYWJsZSByZWFjdGl2ZSBtb2RlIHdpdGggaW1wbGljaXQgdGhpc1xuICogQHBhcmFtIG1ldGhvZCAtIE1ldGhvZCByZWZlcmVuY2Ugb3IgY29tcHV0ZSBmdW5jdGlvbiB0byB1c2VcbiAqL1xuZnVuY3Rpb24gc2V0PFIsIFQgPSBhbnk+KFxuICByZWFjdGl2ZVRvVGhpczogdHJ1ZSxcbiAgbWV0aG9kOiBzZXQuQ29tcHV0ZTxSLCBUPiB8IEZ1bmN0aW9uXG4pOiBSO1xuXG4vKipcbiAqIEltcGxlbWVudCBhIGNvbXB1dGVkIHZhbHVlOyBvdXRwdXQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHJlYWN0aXZlVG8gLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCBjb21wdXRlZCB2YWx1ZSB3aWxsIGJlIGEgc3Vic2NyaWJlci5cbiAqIEBwYXJhbSBjb21wdXRlIC0gQ29tcHV0ZSBmdW5jdGlvbi4gQm91bmQgdG8gYSBzdWJzY3JpYmVyLXByb3h5IG9mIHNvdXJjZSwgcmV0dXJucyBvdXRwdXQgdmFsdWUuIFdpbGwgdXBkYXRlIGF1dG9tYXRpY2FsbHkgYXMgaW5wdXQgdmFsdWVzIGNoYW5nZS5cbiAqL1xuZnVuY3Rpb24gc2V0PFIsIFQgZXh0ZW5kcyBTdGF0ZT4ocmVhY3RpdmVUbzogVCwgY29tcHV0ZTogc2V0LkNvbXB1dGU8UiwgVD4pOiBSO1xuXG5mdW5jdGlvbiBzZXQ8VCA9IGFueT4odmFsdWU/OiB1bmtub3duLCBhcmd1bWVudD86IHVua25vd24pOiBhbnkge1xuICByZXR1cm4gdXNlPFQ+KChrZXksIHN1YmplY3QsIHN0YXRlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEF0dGVtcHRlZCB0byB1c2UgYW4gaW5zdHJ1Y3Rpb24gcmVzdWx0IChwcm9iYWJseSB1c2Ugb3IgZ2V0KSBhcyBjb21wdXRlZCBzb3VyY2UgZm9yICR7c3ViamVjdH0uJHtrZXl9LiBUaGlzIGlzIG5vdCBhbGxvd2VkLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eTogSW5zdHJ1Y3Rpb24uRGVzY3JpcHRvciA9IHt9O1xuXG4gICAgLy8gSGFuZGxlIHJlYWN0aXZlIGNvbXB1dGUgbW9kZXNcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTdGF0ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgbGV0IGZyb20gPSBzdWJqZWN0O1xuICAgICAgbGV0IGdldHRlcjogc2V0LkNvbXB1dGU8VCwgYW55PjtcblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RhdGUpIHtcbiAgICAgICAgZnJvbSA9IHZhbHVlO1xuICAgICAgICBnZXR0ZXIgPSBhcmd1bWVudCBhcyBzZXQuQ29tcHV0ZTxULCBhbnk+O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdmFsdWUgPT09IHRydWUsIGltcGxpY2l0IHRoaXMgd2l0aCBtZXRob2QgcmVmZXJlbmNlXG4gICAgICAgIGNvbnN0IGZuID0gTUVUSE9ELmdldChhcmd1bWVudCkgfHwgYXJndW1lbnQ7XG4gICAgICAgIGdldHRlciA9ICgocCwgaykgPT4gZm4uY2FsbChwLCBrLCBwKSkgYXMgc2V0LkNvbXB1dGU8VCwgYW55PjtcbiAgICAgIH1cblxuICAgICAgdHlwZSBTb3VyY2U8VCBleHRlbmRzIFN0YXRlID0gU3RhdGU+ID0gKHJlc29sdmU6ICh4OiBUKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgICAgY29uc3Qgc291cmNlOiBTb3VyY2UgPSAocmVzb2x2ZSkgPT4gcmVzb2x2ZShmcm9tKTtcblxuICAgICAgbGV0IHJlc2V0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgaXNBc3luYzogYm9vbGVhbjtcbiAgICAgIGxldCBwcm94eTogYW55O1xuXG4gICAgICBmdW5jdGlvbiBjb25uZWN0KHNlbGY6IFN0YXRlKSB7XG4gICAgICAgIHJlc2V0ID0gd2F0Y2goXG4gICAgICAgICAgc2VsZixcbiAgICAgICAgICAoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgcHJveHkgPSBjdXJyZW50O1xuXG4gICAgICAgICAgICBpZiAoIShrZXkgaW4gc3RhdGUpIHx8IFNUQUxFLmRlbGV0ZShjb21wdXRlKSkgY29tcHV0ZSghcmVzZXQpO1xuXG4gICAgICAgICAgICByZXR1cm4gKGRpZFVwZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlkVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgU1RBTEUuYWRkKGNvbXB1dGUpO1xuICAgICAgICAgICAgICAgIGV2ZW50KHN1YmplY3QsIGtleSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjb21wdXRlKGluaXRpYWw/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBuZXh0OiBUIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbmV4dCA9IGdldHRlci5jYWxsKHByb3h5LCBwcm94eSwga2V5KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYEFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIHdoaWxlICR7XG4gICAgICAgICAgICAgIGluaXRpYWwgPyAnaW5pdGlhbGl6aW5nJyA6ICdyZWZyZXNoaW5nJ1xuICAgICAgICAgICAgfSAke3N1YmplY3R9LiR7a2V5fS5gXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChpbml0aWFsKSB0aHJvdyBlcnI7XG5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCBuZXh0LCAhaXNBc3luYyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmICghcHJveHkpIHtcbiAgICAgICAgICBzb3VyY2UoY29ubmVjdCk7XG4gICAgICAgICAgaXNBc3luYyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU1RBTEUuZGVsZXRlKGNvbXB1dGUpKSBjb21wdXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIGFjY2VzcyhzdWJqZWN0LCBrZXksICFwcm94eSkgYXMgVDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGZhY3RvcnkvdmFsdWUgbW9kZXMgKGV4aXN0aW5nIGxvZ2ljKVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBhdHRlbXB0KHZhbHVlLmJpbmQoc3ViamVjdCwga2V5KSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBHZW5lcmF0aW5nIGluaXRpYWwgdmFsdWUgZm9yICR7c3ViamVjdH0uJHtrZXl9IGZhaWxlZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICBwcm9wZXJ0eS5nZXQgPSBhcmd1bWVudCAhPT0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2V0ID0gKHZhbHVlOiBhbnkpID0+IChzdWJqZWN0W2tleV0gPSB2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSlcbiAgICAgICAgICB2YWx1ZS50aGVuKHNldCwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBldmVudChzdWJqZWN0LCBrZXkpO1xuICAgICAgICAgICAgcHJvcGVydHkuZ2V0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIGVsc2Ugc2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAoYXJndW1lbnQpIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiBzdWJqZWN0W2tleV07XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmd1bWVudCkge1xuICAgICAgICBhZGRMaXN0ZW5lcihzdWJqZWN0LCBpbml0LCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BlcnR5LmdldCA9IGluaXQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0eS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHVuc2V0OiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgICBwcm9wZXJ0eS5zZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB2YWx1ZTogYW55LCBwcmV2aW91czogYW55KSB7XG4gICAgICAgIGNvbnN0IGV4aXQgPSBzY29wZSgpO1xuICAgICAgICBjb25zdCByZXR1cm5zID0gYXJndW1lbnQuY2FsbCh0aGlzLCB2YWx1ZSwgcHJldmlvdXMpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICBpZiAocmV0dXJucyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAodHlwZW9mIHVuc2V0ID09ICdmdW5jdGlvbicpIHVuc2V0KHZhbHVlKTtcblxuICAgICAgICB1bnNldCA9IChuZXh0OiBUKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXR1cm5zID09ICdmdW5jdGlvbicpIHJldHVybnMobmV4dCk7XG5cbiAgICAgICAgICBmbHVzaCgpO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9IGVsc2VcbiAgICAgIHByb3BlcnR5LnNldCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBwcm9wZXJ0eS5nZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH07XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhdHRlbXB0KGZuOiAoKSA9PiBhbnkpOiBhbnkge1xuICAvLyBJZ25vcmUgVFM4MDAwNjogRnVuY3Rpb24gbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgZnVuY3Rpb24gcmV0cnkoZXJyOiB1bmtub3duKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIFByb21pc2UpIHJldHVybiBlcnIudGhlbihjb21wdXRlKTtcbiAgICBlbHNlIHRocm93IGVycjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGUoKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZm4oKTtcblxuICAgICAgcmV0dXJuIG91dHB1dCBpbnN0YW5jZW9mIFByb21pc2UgPyBvdXRwdXQuY2F0Y2gocmV0cnkpIDogb3V0cHV0O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHJldHJ5KGVycik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGUoKTtcbn1cblxuZXhwb3J0IHsgc2V0IH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBSUEsTUFBTSx3QkFBUSxJQUFJLFNBQXFCO0FBa0Z2QyxTQUFTLElBQWEsT0FBaUIsVUFBeUI7QUFDOUQsUUFBTyxLQUFRLEtBQUssU0FBUyxVQUFVO0FBQ3JDLE1BQUksT0FBTyxTQUFTLFNBQ2xCLE9BQU0sSUFBSSxNQUNSLHVGQUF1RixRQUFRLEdBQUcsSUFBSSx3QkFDdkc7RUFFSCxNQUFNLFdBQW1DLEVB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
@@ -0,0 +1,23 @@
1
+ import { State } from "../state.js";
2
+
3
+ //#region src/instruction/use.d.ts
4
+ /**
5
+ * Property initializer, will run upon instance creation.
6
+ * Optional returned callback will run when once upon first access.
7
+ */
8
+ type Instruction<T = any, M extends State = any> = (this: M, key: Extract<State.Field<M>, string>, thisArg: M, state: State.Values<M>) => Instruction.Descriptor<T> | ((source: M) => T) | void;
9
+ declare namespace Instruction {
10
+ type Getter<T> = (source: State) => T;
11
+ type Descriptor<T = any> = {
12
+ get?: Getter<T> | boolean;
13
+ set?: State.Setter<T> | boolean;
14
+ enumerable?: boolean;
15
+ value?: T;
16
+ };
17
+ }
18
+ declare function use<T>(instruction: Instruction<T>): T extends void ? unknown : T;
19
+ declare function use<T extends State>(Type: State.Type<T>, required: false): T | undefined;
20
+ declare function use<T extends State>(Type: State.Type<T>, ready?: (i: T) => void): T;
21
+ //#endregion
22
+ export { Instruction, use };
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3VzZS5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuLyoqXG4gKiBQcm9wZXJ0eSBpbml0aWFsaXplciwgd2lsbCBydW4gdXBvbiBpbnN0YW5jZSBjcmVhdGlvbi5cbiAqIE9wdGlvbmFsIHJldHVybmVkIGNhbGxiYWNrIHdpbGwgcnVuIHdoZW4gb25jZSB1cG9uIGZpcnN0IGFjY2Vzcy5cbiAqL1xudHlwZSBJbnN0cnVjdGlvbjxUID0gYW55LCBNIGV4dGVuZHMgU3RhdGUgPSBhbnk+ID0gKHRoaXM6IE0sIGtleTogRXh0cmFjdDxTdGF0ZS5GaWVsZDxNPiwgc3RyaW5nPiwgdGhpc0FyZzogTSwgc3RhdGU6IFN0YXRlLlZhbHVlczxNPikgPT4gSW5zdHJ1Y3Rpb24uRGVzY3JpcHRvcjxUPiB8ICgoc291cmNlOiBNKSA9PiBUKSB8IHZvaWQ7XG5kZWNsYXJlIG5hbWVzcGFjZSBJbnN0cnVjdGlvbiB7XG4gICAgdHlwZSBHZXR0ZXI8VD4gPSAoc291cmNlOiBTdGF0ZSkgPT4gVDtcbiAgICB0eXBlIERlc2NyaXB0b3I8VCA9IGFueT4gPSB7XG4gICAgICAgIGdldD86IEdldHRlcjxUPiB8IGJvb2xlYW47XG4gICAgICAgIHNldD86IFN0YXRlLlNldHRlcjxUPiB8IGJvb2xlYW47XG4gICAgICAgIGVudW1lcmFibGU/OiBib29sZWFuO1xuICAgICAgICB2YWx1ZT86IFQ7XG4gICAgfTtcbn1cbmRlY2xhcmUgZnVuY3Rpb24gdXNlPFQ+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUPik6IFQgZXh0ZW5kcyB2b2lkID8gdW5rbm93biA6IFQ7XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZTxUIGV4dGVuZHMgU3RhdGU+KFR5cGU6IFN0YXRlLlR5cGU8VD4sIHJlcXVpcmVkOiBmYWxzZSk6IFQgfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGZ1bmN0aW9uIHVzZTxUIGV4dGVuZHMgU3RhdGU+KFR5cGU6IFN0YXRlLlR5cGU8VD4sIHJlYWR5PzogKGk6IFQpID0+IHZvaWQpOiBUO1xuZXhwb3J0IHsgdXNlLCBJbnN0cnVjdGlvbiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFFLGNBQUE7Q0FBQTtFQUFBLEdBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxZQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDRixJQUFHLGNBQVM7Q0FBQTtFQUFXLE1BQUU7RUFBSTtFQUFLO0VBQUs7RUFBQTtFQUFTO0VBQUEsTUFBUTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3hELElBQUcsTUFBQTtDQUFRO0VBQUMsTUFBUTtFQUFDO0VBQUE7RUFBYztFQUFJO0VBQUE7Q0FBSztFQUFBO0VBQUs7RUFBSTtFQUFDO0VBQU07RUFBQTtFQUFNO0NBQUE7QUFDbEUsSUFBRSxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNGLElBQUksTUFBQztDQUFBO0VBQUEsTUFBZTtFQUFDO0VBQU87RUFBQSxNQUFRO0VBQU87RUFBQztFQUFJO0NBQUU7RUFBQztFQUFDO0VBQU87RUFBRTtFQUFLO0VBQUE7RUFBUTtFQUFLO0VBQUM7RUFBTztFQUFHO0NBQUEifQ==
@@ -1,63 +1,56 @@
1
- import { access, follow, State, PARENT, STATE, uid, update } from "../state";
1
+ import { PARENT, STATE, State, access, follow, uid, update } from "../state.js";
2
+
3
+ //#region src/instruction/use.ts
2
4
  const INSTRUCTION = /* @__PURE__ */ new Map();
3
5
  function use(arg1, arg2) {
4
- if (State.is(arg1)) arg1 = childInstruction(arg1, arg2);
5
- const token = Symbol("instruction-" + uid());
6
- INSTRUCTION.set(token, arg1);
7
- return token;
6
+ if (State.is(arg1)) arg1 = childInstruction(arg1, arg2);
7
+ const token = Symbol("instruction-" + uid());
8
+ INSTRUCTION.set(token, arg1);
9
+ return token;
8
10
  }
9
11
  function childInstruction(type, arg2) {
10
- return (key, subject) => {
11
- function set(next) {
12
- if (next ? !(next instanceof type) : arg2 !== false)
13
- throw new Error(
14
- `${subject}.${key} expected State of type ${type} but got ${next && next.constructor}.`
15
- );
16
- update(subject, key, next);
17
- if (next && typeof arg2 == "function") arg2(next);
18
- return false;
19
- }
20
- const value = new type();
21
- set(value);
22
- PARENT.set(value, subject);
23
- value.set();
24
- return { set };
25
- };
12
+ return (key, subject) => {
13
+ function set(next) {
14
+ if (next ? !(next instanceof type) : arg2 !== false) throw new Error(`${subject}.${key} expected State of type ${type} but got ${next && next.constructor}.`);
15
+ update(subject, key, next);
16
+ if (next && typeof arg2 == "function") arg2(next);
17
+ return false;
18
+ }
19
+ const value = new type();
20
+ set(value);
21
+ PARENT.set(value, subject);
22
+ value.set();
23
+ return { set };
24
+ };
26
25
  }
27
26
  function init() {
28
- const state = STATE.get(this);
29
- for (const key in this) {
30
- const { value } = Object.getOwnPropertyDescriptor(this, key);
31
- const instruction = INSTRUCTION.get(value);
32
- if (!instruction) continue;
33
- INSTRUCTION.delete(value);
34
- delete this[key];
35
- const output = instruction.call(this, key, this, state);
36
- if (!output) continue;
37
- const desc = typeof output == "object" ? output : { get: output };
38
- if ("value" in desc) state[key] = desc.value;
39
- const self = this;
40
- Object.defineProperty(self, key, {
41
- enumerable: desc.enumerable !== false,
42
- get() {
43
- return follow(
44
- this,
45
- key,
46
- typeof desc.get == "function" ? desc.get(this) : access(self, key, desc.get)
47
- );
48
- },
49
- set(next) {
50
- if (desc.set === false) {
51
- throw new Error(`${self}.${key} is read-only.`);
52
- }
53
- update(self, key, next, desc.set);
54
- }
55
- });
56
- }
57
- return null;
27
+ const state = STATE.get(this);
28
+ for (const key in this) {
29
+ const { value } = Object.getOwnPropertyDescriptor(this, key);
30
+ const instruction = INSTRUCTION.get(value);
31
+ if (!instruction) continue;
32
+ INSTRUCTION.delete(value);
33
+ delete this[key];
34
+ const output = instruction.call(this, key, this, state);
35
+ if (!output) continue;
36
+ const desc = typeof output == "object" ? output : { get: output };
37
+ if ("value" in desc) state[key] = desc.value;
38
+ const self = this;
39
+ Object.defineProperty(self, key, {
40
+ enumerable: desc.enumerable !== false,
41
+ get() {
42
+ return follow(this, key, typeof desc.get == "function" ? desc.get(this) : access(self, key, desc.get));
43
+ },
44
+ set(next) {
45
+ if (desc.set === false) throw new Error(`${self}.${key} is read-only.`);
46
+ update(self, key, next, desc.set);
47
+ }
48
+ });
49
+ }
50
+ return null;
58
51
  }
59
52
  State.on(init);
60
- export {
61
- use
62
- };
63
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3VzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWNjZXNzLCBmb2xsb3csIFN0YXRlLCBQQVJFTlQsIFNUQVRFLCB1aWQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuLyoqXG4gKiBQcm9wZXJ0eSBpbml0aWFsaXplciwgd2lsbCBydW4gdXBvbiBpbnN0YW5jZSBjcmVhdGlvbi5cbiAqIE9wdGlvbmFsIHJldHVybmVkIGNhbGxiYWNrIHdpbGwgcnVuIHdoZW4gb25jZSB1cG9uIGZpcnN0IGFjY2Vzcy5cbiAqL1xudHlwZSBJbnN0cnVjdGlvbjxUID0gYW55LCBNIGV4dGVuZHMgU3RhdGUgPSBhbnk+ID1cbiAgLy8gVE9ETzogU2hvdWxkIHRoaXMgYWxsb3cgZm9yIG51bWJlcnMvc3ltYm9sIHByb3BlcnRpZXM/XG4gIChcbiAgICB0aGlzOiBNLFxuICAgIGtleTogRXh0cmFjdDxTdGF0ZS5GaWVsZDxNPiwgc3RyaW5nPixcbiAgICB0aGlzQXJnOiBNLFxuICAgIHN0YXRlOiBTdGF0ZS5WYWx1ZXM8TT5cbiAgKSA9PiBJbnN0cnVjdGlvbi5EZXNjcmlwdG9yPFQ+IHwgKChzb3VyY2U6IE0pID0+IFQpIHwgdm9pZDtcblxuZGVjbGFyZSBuYW1lc3BhY2UgSW5zdHJ1Y3Rpb24ge1xuICB0eXBlIEdldHRlcjxUPiA9IChzb3VyY2U6IFN0YXRlKSA9PiBUO1xuXG4gIHR5cGUgRGVzY3JpcHRvcjxUID0gYW55PiA9IHtcbiAgICBnZXQ/OiBHZXR0ZXI8VD4gfCBib29sZWFuO1xuICAgIHNldD86IFN0YXRlLlNldHRlcjxUPiB8IGJvb2xlYW47XG4gICAgZW51bWVyYWJsZT86IGJvb2xlYW47XG4gICAgdmFsdWU/OiBUO1xuICB9O1xufVxuXG5jb25zdCBJTlNUUlVDVElPTiA9IG5ldyBNYXA8c3ltYm9sLCBJbnN0cnVjdGlvbj4oKTtcblxuZnVuY3Rpb24gdXNlPFQ+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUPik6IFQgZXh0ZW5kcyB2b2lkID8gdW5rbm93biA6IFQ7XG5cbmZ1bmN0aW9uIHVzZTxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5OZXc8VD4sXG4gIHJlcXVpcmVkOiBmYWxzZVxuKTogVCB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gdXNlPFQgZXh0ZW5kcyBTdGF0ZT4oVHlwZTogU3RhdGUuTmV3PFQ+LCByZWFkeT86IChpOiBUKSA9PiB2b2lkKTogVDtcblxuZnVuY3Rpb24gdXNlKFxuICBhcmcxOiBTdGF0ZS5DbGFzcyB8IEluc3RydWN0aW9uLFxuICBhcmcyPzogKChpOiBTdGF0ZSkgPT4gdm9pZCkgfCBib29sZWFuXG4pIHtcbiAgaWYgKFN0YXRlLmlzKGFyZzEpKSBhcmcxID0gY2hpbGRJbnN0cnVjdGlvbihhcmcxLCBhcmcyKTtcblxuICBjb25zdCB0b2tlbiA9IFN5bWJvbCgnaW5zdHJ1Y3Rpb24tJyArIHVpZCgpKTtcbiAgSU5TVFJVQ1RJT04uc2V0KHRva2VuLCBhcmcxKTtcbiAgcmV0dXJuIHRva2VuO1xufVxuXG5mdW5jdGlvbiBjaGlsZEluc3RydWN0aW9uKFxuICB0eXBlOiBTdGF0ZS5DbGFzczxTdGF0ZT4sXG4gIGFyZzI/OiAoKGk6IFN0YXRlKSA9PiB2b2lkKSB8IGJvb2xlYW5cbik6IEluc3RydWN0aW9uPGFueSwgYW55PiB7XG4gIHJldHVybiAoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0KG5leHQ6IFN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobmV4dCA/ICEobmV4dCBpbnN0YW5jZW9mIHR5cGUpIDogYXJnMiAhPT0gZmFsc2UpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtzdWJqZWN0fS4ke2tleX0gZXhwZWN0ZWQgU3RhdGUgb2YgdHlwZSAke3R5cGV9IGJ1dCBnb3QgJHtcbiAgICAgICAgICAgIG5leHQgJiYgbmV4dC5jb25zdHJ1Y3RvclxuICAgICAgICAgIH0uYFxuICAgICAgICApO1xuXG4gICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCBuZXh0KTtcblxuICAgICAgaWYgKG5leHQgJiYgdHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJykgYXJnMihuZXh0KTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IHR5cGUoKTtcblxuICAgIHNldCh2YWx1ZSk7XG4gICAgUEFSRU5ULnNldCh2YWx1ZSwgc3ViamVjdCk7XG4gICAgdmFsdWUuc2V0KCk7XG5cbiAgICByZXR1cm4geyBzZXQgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdCh0aGlzOiBTdGF0ZSkge1xuICBjb25zdCBzdGF0ZSA9IFNUQVRFLmdldCh0aGlzKSE7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gdGhpcykge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywga2V5KSE7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBJTlNUUlVDVElPTi5nZXQodmFsdWUpO1xuXG4gICAgaWYgKCFpbnN0cnVjdGlvbikgY29udGludWU7XG5cbiAgICBJTlNUUlVDVElPTi5kZWxldGUodmFsdWUpO1xuICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpW2tleV07XG5cbiAgICBjb25zdCBvdXRwdXQgPSBpbnN0cnVjdGlvbi5jYWxsKHRoaXMsIGtleSwgdGhpcywgc3RhdGUpO1xuXG4gICAgaWYgKCFvdXRwdXQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZGVzYyA9IHR5cGVvZiBvdXRwdXQgPT0gJ29iamVjdCcgPyBvdXRwdXQgOiB7IGdldDogb3V0cHV0IH07XG5cbiAgICBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSBzdGF0ZVtrZXldID0gZGVzYy52YWx1ZTtcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlICE9PSBmYWxzZSxcbiAgICAgIGdldCh0aGlzOiBTdGF0ZSkge1xuICAgICAgICByZXR1cm4gZm9sbG93KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHR5cGVvZiBkZXNjLmdldCA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGRlc2MuZ2V0KHRoaXMpXG4gICAgICAgICAgICA6IGFjY2VzcyhzZWxmLCBrZXksIGRlc2MuZ2V0KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHNldChuZXh0KSB7XG4gICAgICAgIGlmIChkZXNjLnNldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c2VsZn0uJHtrZXl9IGlzIHJlYWQtb25seS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZShzZWxmLCBrZXksIG5leHQsIGRlc2Muc2V0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5TdGF0ZS5vbihpbml0KTtcblxuZXhwb3J0IHsgdXNlLCBJbnN0cnVjdGlvbiB9O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxRQUFRLFFBQVEsT0FBTyxRQUFRLE9BQU8sS0FBSyxjQUFjO0FBMEJsRSxNQUFNLGNBQWMsb0JBQUksSUFBeUI7QUFXakQsU0FBUyxJQUNQLE1BQ0EsTUFDQTtBQUNBLE1BQUksTUFBTSxHQUFHLElBQUksRUFBRyxRQUFPLGlCQUFpQixNQUFNLElBQUk7QUFFdEQsUUFBTSxRQUFRLE9BQU8saUJBQWlCLElBQUksQ0FBQztBQUMzQyxjQUFZLElBQUksT0FBTyxJQUFJO0FBQzNCLFNBQU87QUFDVDtBQUVBLFNBQVMsaUJBQ1AsTUFDQSxNQUN1QjtBQUN2QixTQUFPLENBQUMsS0FBSyxZQUFZO0FBQ3ZCLGFBQVMsSUFBSSxNQUF5QjtBQUNwQyxVQUFJLE9BQU8sRUFBRSxnQkFBZ0IsUUFBUSxTQUFTO0FBQzVDLGNBQU0sSUFBSTtBQUFBLFVBQ1IsR0FBRyxPQUFPLElBQUksR0FBRywyQkFBMkIsSUFBSSxZQUM5QyxRQUFRLEtBQUssV0FDZjtBQUFBLFFBQ0Y7QUFFRixhQUFPLFNBQVMsS0FBSyxJQUFJO0FBRXpCLFVBQUksUUFBUSxPQUFPLFFBQVEsV0FBWSxNQUFLLElBQUk7QUFFaEQsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFFBQVEsSUFBSSxLQUFLO0FBRXZCLFFBQUksS0FBSztBQUNULFdBQU8sSUFBSSxPQUFPLE9BQU87QUFDekIsVUFBTSxJQUFJO0FBRVYsV0FBTyxFQUFFLElBQUk7QUFBQSxFQUNmO0FBQ0Y7QUFFQSxTQUFTLE9BQWtCO0FBQ3pCLFFBQU0sUUFBUSxNQUFNLElBQUksSUFBSTtBQUU1QixhQUFXLE9BQU8sTUFBTTtBQUN0QixVQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8seUJBQXlCLE1BQU0sR0FBRztBQUMzRCxVQUFNLGNBQWMsWUFBWSxJQUFJLEtBQUs7QUFFekMsUUFBSSxDQUFDLFlBQWE7QUFFbEIsZ0JBQVksT0FBTyxLQUFLO0FBQ3hCLFdBQVEsS0FBYSxHQUFHO0FBRXhCLFVBQU0sU0FBUyxZQUFZLEtBQUssTUFBTSxLQUFLLE1BQU0sS0FBSztBQUV0RCxRQUFJLENBQUMsT0FBUTtBQUViLFVBQU0sT0FBTyxPQUFPLFVBQVUsV0FBVyxTQUFTLEVBQUUsS0FBSyxPQUFPO0FBRWhFLFFBQUksV0FBVyxLQUFNLE9BQU0sR0FBRyxJQUFJLEtBQUs7QUFFdkMsVUFBTSxPQUFPO0FBRWIsV0FBTyxlQUFlLE1BQU0sS0FBSztBQUFBLE1BQy9CLFlBQVksS0FBSyxlQUFlO0FBQUEsTUFDaEMsTUFBaUI7QUFDZixlQUFPO0FBQUEsVUFDTDtBQUFBLFVBQ0E7QUFBQSxVQUNBLE9BQU8sS0FBSyxPQUFPLGFBQ2YsS0FBSyxJQUFJLElBQUksSUFDYixPQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUc7QUFBQSxRQUNoQztBQUFBLE1BQ0Y7QUFBQSxNQUNBLElBQUksTUFBTTtBQUNSLFlBQUksS0FBSyxRQUFRLE9BQU87QUFDdEIsZ0JBQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCO0FBQUEsUUFDaEQ7QUFFQSxlQUFPLE1BQU0sS0FBSyxNQUFNLEtBQUssR0FBRztBQUFBLE1BQ2xDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU87QUFDVDtBQUVBLE1BQU0sR0FBRyxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=
53
+
54
+ //#endregion
55
+ export { use };
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnN0cnVjdGlvbi91c2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWNjZXNzLCBmb2xsb3csIFN0YXRlLCBQQVJFTlQsIFNUQVRFLCB1aWQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuLyoqXG4gKiBQcm9wZXJ0eSBpbml0aWFsaXplciwgd2lsbCBydW4gdXBvbiBpbnN0YW5jZSBjcmVhdGlvbi5cbiAqIE9wdGlvbmFsIHJldHVybmVkIGNhbGxiYWNrIHdpbGwgcnVuIHdoZW4gb25jZSB1cG9uIGZpcnN0IGFjY2Vzcy5cbiAqL1xudHlwZSBJbnN0cnVjdGlvbjxUID0gYW55LCBNIGV4dGVuZHMgU3RhdGUgPSBhbnk+ID1cbiAgLy8gVE9ETzogU2hvdWxkIHRoaXMgYWxsb3cgZm9yIG51bWJlcnMvc3ltYm9sIHByb3BlcnRpZXM/XG4gIChcbiAgICB0aGlzOiBNLFxuICAgIGtleTogRXh0cmFjdDxTdGF0ZS5GaWVsZDxNPiwgc3RyaW5nPixcbiAgICB0aGlzQXJnOiBNLFxuICAgIHN0YXRlOiBTdGF0ZS5WYWx1ZXM8TT5cbiAgKSA9PiBJbnN0cnVjdGlvbi5EZXNjcmlwdG9yPFQ+IHwgKChzb3VyY2U6IE0pID0+IFQpIHwgdm9pZDtcblxuZGVjbGFyZSBuYW1lc3BhY2UgSW5zdHJ1Y3Rpb24ge1xuICB0eXBlIEdldHRlcjxUPiA9IChzb3VyY2U6IFN0YXRlKSA9PiBUO1xuXG4gIHR5cGUgRGVzY3JpcHRvcjxUID0gYW55PiA9IHtcbiAgICBnZXQ/OiBHZXR0ZXI8VD4gfCBib29sZWFuO1xuICAgIHNldD86IFN0YXRlLlNldHRlcjxUPiB8IGJvb2xlYW47XG4gICAgZW51bWVyYWJsZT86IGJvb2xlYW47XG4gICAgdmFsdWU/OiBUO1xuICB9O1xufVxuXG5jb25zdCBJTlNUUlVDVElPTiA9IG5ldyBNYXA8c3ltYm9sLCBJbnN0cnVjdGlvbj4oKTtcblxuZnVuY3Rpb24gdXNlPFQ+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUPik6IFQgZXh0ZW5kcyB2b2lkID8gdW5rbm93biA6IFQ7XG5cbmZ1bmN0aW9uIHVzZTxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5UeXBlPFQ+LFxuICByZXF1aXJlZDogZmFsc2Vcbik6IFQgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIHVzZTxUIGV4dGVuZHMgU3RhdGU+KFR5cGU6IFN0YXRlLlR5cGU8VD4sIHJlYWR5PzogKGk6IFQpID0+IHZvaWQpOiBUO1xuXG5mdW5jdGlvbiB1c2UoXG4gIGFyZzE6IFN0YXRlLlR5cGUgfCBJbnN0cnVjdGlvbixcbiAgYXJnMj86ICgoaTogU3RhdGUpID0+IHZvaWQpIHwgYm9vbGVhblxuKSB7XG4gIGlmIChTdGF0ZS5pcyhhcmcxKSkgYXJnMSA9IGNoaWxkSW5zdHJ1Y3Rpb24oYXJnMSwgYXJnMik7XG5cbiAgY29uc3QgdG9rZW4gPSBTeW1ib2woJ2luc3RydWN0aW9uLScgKyB1aWQoKSk7XG4gIElOU1RSVUNUSU9OLnNldCh0b2tlbiwgYXJnMSk7XG4gIHJldHVybiB0b2tlbjtcbn1cblxuZnVuY3Rpb24gY2hpbGRJbnN0cnVjdGlvbihcbiAgdHlwZTogU3RhdGUuVHlwZTxTdGF0ZT4sXG4gIGFyZzI/OiAoKGk6IFN0YXRlKSA9PiB2b2lkKSB8IGJvb2xlYW5cbik6IEluc3RydWN0aW9uPGFueSwgYW55PiB7XG4gIHJldHVybiAoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0KG5leHQ6IFN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobmV4dCA/ICEobmV4dCBpbnN0YW5jZW9mIHR5cGUpIDogYXJnMiAhPT0gZmFsc2UpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtzdWJqZWN0fS4ke2tleX0gZXhwZWN0ZWQgU3RhdGUgb2YgdHlwZSAke3R5cGV9IGJ1dCBnb3QgJHtcbiAgICAgICAgICAgIG5leHQgJiYgbmV4dC5jb25zdHJ1Y3RvclxuICAgICAgICAgIH0uYFxuICAgICAgICApO1xuXG4gICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCBuZXh0KTtcblxuICAgICAgaWYgKG5leHQgJiYgdHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJykgYXJnMihuZXh0KTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IHR5cGUoKTtcblxuICAgIHNldCh2YWx1ZSk7XG4gICAgUEFSRU5ULnNldCh2YWx1ZSwgc3ViamVjdCk7XG4gICAgdmFsdWUuc2V0KCk7XG5cbiAgICByZXR1cm4geyBzZXQgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdCh0aGlzOiBTdGF0ZSkge1xuICBjb25zdCBzdGF0ZSA9IFNUQVRFLmdldCh0aGlzKSE7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gdGhpcykge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywga2V5KSE7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBJTlNUUlVDVElPTi5nZXQodmFsdWUpO1xuXG4gICAgaWYgKCFpbnN0cnVjdGlvbikgY29udGludWU7XG5cbiAgICBJTlNUUlVDVElPTi5kZWxldGUodmFsdWUpO1xuICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpW2tleV07XG5cbiAgICBjb25zdCBvdXRwdXQgPSBpbnN0cnVjdGlvbi5jYWxsKHRoaXMsIGtleSwgdGhpcywgc3RhdGUpO1xuXG4gICAgaWYgKCFvdXRwdXQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZGVzYyA9IHR5cGVvZiBvdXRwdXQgPT0gJ29iamVjdCcgPyBvdXRwdXQgOiB7IGdldDogb3V0cHV0IH07XG5cbiAgICBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSBzdGF0ZVtrZXldID0gZGVzYy52YWx1ZTtcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlICE9PSBmYWxzZSxcbiAgICAgIGdldCh0aGlzOiBTdGF0ZSkge1xuICAgICAgICByZXR1cm4gZm9sbG93KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHR5cGVvZiBkZXNjLmdldCA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGRlc2MuZ2V0KHRoaXMpXG4gICAgICAgICAgICA6IGFjY2VzcyhzZWxmLCBrZXksIGRlc2MuZ2V0KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHNldChuZXh0KSB7XG4gICAgICAgIGlmIChkZXNjLnNldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c2VsZn0uJHtrZXl9IGlzIHJlYWQtb25seS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZShzZWxmLCBrZXksIG5leHQsIGRlc2Muc2V0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5TdGF0ZS5vbihpbml0KTtcblxuZXhwb3J0IHsgdXNlLCBJbnN0cnVjdGlvbiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUEwQkEsTUFBTSw4QkFBYyxJQUFJLEtBQTBCO0FBV2xELFNBQVMsSUFDUCxNQUNBLE1BQ0E7QUFDQSxLQUFJLE1BQU0sR0FBRyxLQUFLLENBQUUsUUFBTyxpQkFBaUIsTUFBTSxLQUFLO0NBRXZELE1BQU0sUUFBUSxPQUFPLGlCQUFpQixLQUFLLENBQUM7QUFDNUMsYUFBWSxJQUFJLE9BQU8sS0FBSztBQUM1QixRQUFPOztBQUdULFNBQVMsaUJBQ1AsTUFDQSxNQUN1QjtBQUN2QixTQUFRLEtBQUssWUFBWTtFQUN2QixTQUFTLElBQUksTUFBeUI7QUFDcEMsT0FBSSxPQUFPLEVBQUUsZ0JBQWdCLFFBQVEsU0FBUyxNQUM1QyxPQUFNLElBQUksTUFDUixHQUFHLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixLQUFLLFdBQy9DLFFBQVEsS0FBSyxZQUNkLEdBQ0Y7QUFFSCxVQUFPLFNBQVMsS0FBSyxLQUFLO0FBRTFCLE9BQUksUUFBUSxPQUFPLFFBQVEsV0FBWSxNQUFLLEtBQUs7QUFFakQsVUFBTzs7RUFHVCxNQUFNLFFBQVEsSUFBSSxNQUFNO0FBRXhCLE1BQUksTUFBTTtBQUNWLFNBQU8sSUFBSSxPQUFPLFFBQVE7QUFDMUIsUUFBTSxLQUFLO0FBRVgsU0FBTyxFQUFFLEtBQUs7OztBQUlsQixTQUFTLE9BQWtCO0NBQ3pCLE1BQU0sUUFBUSxNQUFNLElBQUksS0FBSztBQUU3QixNQUFLLE1BQU0sT0FBTyxNQUFNO0VBQ3RCLE1BQU0sRUFBRSxVQUFVLE9BQU8seUJBQXlCLE1BQU0sSUFBSTtFQUM1RCxNQUFNLGNBQWMsWUFBWSxJQUFJLE1BQU07QUFFMUMsTUFBSSxDQUFDLFlBQWE7QUFFbEIsY0FBWSxPQUFPLE1BQU07QUFDekIsU0FBUSxLQUFhO0VBRXJCLE1BQU0sU0FBUyxZQUFZLEtBQUssTUFBTSxLQUFLLE1BQU0sTUFBTTtBQUV2RCxNQUFJLENBQUMsT0FBUTtFQUViLE1BQU0sT0FBTyxPQUFPLFVBQVUsV0FBVyxTQUFTLEVBQUUsS0FBSyxRQUFRO0FBRWpFLE1BQUksV0FBVyxLQUFNLE9BQU0sT0FBTyxLQUFLO0VBRXZDLE1BQU0sT0FBTztBQUViLFNBQU8sZUFBZSxNQUFNLEtBQUs7R0FDL0IsWUFBWSxLQUFLLGVBQWU7R0FDaEMsTUFBaUI7QUFDZixXQUFPLE9BQ0wsTUFDQSxLQUNBLE9BQU8sS0FBSyxPQUFPLGFBQ2YsS0FBSyxJQUFJLEtBQUssR0FDZCxPQUFPLE1BQU0sS0FBSyxLQUFLLElBQUksQ0FDaEM7O0dBRUgsSUFBSSxNQUFNO0FBQ1IsUUFBSSxLQUFLLFFBQVEsTUFDZixPQUFNLElBQUksTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLGdCQUFnQjtBQUdqRCxXQUFPLE1BQU0sS0FBSyxNQUFNLEtBQUssSUFBSTs7R0FFcEMsQ0FBQzs7QUFHSixRQUFPOztBQUdULE1BQU0sR0FBRyxLQUFLIn0=
@@ -0,0 +1,42 @@
1
+ //#region src/observable.d.ts
2
+ /**
3
+ * Update callback function.
4
+ *
5
+ * @param key -
6
+ * - `string` - property which has updated.
7
+ * - `false` - a normal update has completed.
8
+ * - `true` - initial event; instance is ready.
9
+ * - `null` - terminal event; instance is expired.
10
+ * @param source - Instance of State for which update has occured.
11
+ */
12
+ type Notify<T extends Observable = any> = (this: T, key: Event, source: T) => (() => void) | null | void;
13
+ type Effect<T extends Observable> = (proxy: T) => ((update: boolean | null) => void) | Promise<void> | null | void;
14
+ type Event = number | string | null | boolean | symbol;
15
+ type PromiseLite<T = void> = {
16
+ then: (callback: () => T) => T;
17
+ };
18
+ declare namespace Observable {
19
+ type Callback = () => void | PromiseLite;
20
+ }
21
+ interface Observable {
22
+ [Observable](callback: Observable.Callback, required?: boolean): this | void;
23
+ }
24
+ declare const Observable: unique symbol;
25
+ /** Update register. */
26
+ declare const PENDING_KEYS: WeakMap<Observable, Set<string | number | symbol>>;
27
+ declare function addListener<T extends Observable>(subject: T, callback: Notify<T>, select?: Event | Set<Event>): () => boolean;
28
+ declare function event(subject: Observable, key?: string | number | symbol | null, silent?: boolean): void;
29
+ /**
30
+ * Create a side-effect which will update whenever values accessed change.
31
+ * Callback is called immediately and whenever values are stale.
32
+ *
33
+ * @param target - Instance of State to observe.
34
+ * @param callback - Function to invoke when values change.
35
+ * @param requireValues - If `true` will throw if accessing a value which is `undefined`.
36
+ */
37
+ declare function watch<T extends Observable>(target: T, callback: Effect<Required<T>>, requireValues: true): () => void;
38
+ declare function watch<T extends Observable>(target: T, callback: Effect<T>, recursive?: boolean): () => void;
39
+ declare function scope(): () => () => void;
40
+ //#endregion
41
+ export { Notify, Observable, PENDING_KEYS, addListener, event, scope, watch };
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vYnNlcnZhYmxlLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVcGRhdGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGtleSAtXG4gKiAgIC0gYHN0cmluZ2AgLSBwcm9wZXJ0eSB3aGljaCBoYXMgdXBkYXRlZC5cbiAqICAgLSBgZmFsc2VgIC0gYSBub3JtYWwgdXBkYXRlIGhhcyBjb21wbGV0ZWQuXG4gKiAgIC0gYHRydWVgIC0gaW5pdGlhbCBldmVudDsgaW5zdGFuY2UgaXMgcmVhZHkuXG4gKiAgIC0gYG51bGxgIC0gdGVybWluYWwgZXZlbnQ7IGluc3RhbmNlIGlzIGV4cGlyZWQuXG4gKiBAcGFyYW0gc291cmNlIC0gSW5zdGFuY2Ugb2YgU3RhdGUgZm9yIHdoaWNoIHVwZGF0ZSBoYXMgb2NjdXJlZC5cbiAqL1xudHlwZSBOb3RpZnk8VCBleHRlbmRzIE9ic2VydmFibGUgPSBhbnk+ID0gKHRoaXM6IFQsIGtleTogRXZlbnQsIHNvdXJjZTogVCkgPT4gKCgpID0+IHZvaWQpIHwgbnVsbCB8IHZvaWQ7XG50eXBlIEVmZmVjdDxUIGV4dGVuZHMgT2JzZXJ2YWJsZT4gPSAocHJveHk6IFQpID0+ICgodXBkYXRlOiBib29sZWFuIHwgbnVsbCkgPT4gdm9pZCkgfCBQcm9taXNlPHZvaWQ+IHwgbnVsbCB8IHZvaWQ7XG50eXBlIEV2ZW50ID0gbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IGJvb2xlYW4gfCBzeW1ib2w7XG50eXBlIFByb21pc2VMaXRlPFQgPSB2b2lkPiA9IHtcbiAgICB0aGVuOiAoY2FsbGJhY2s6ICgpID0+IFQpID0+IFQ7XG59O1xuZGVjbGFyZSBuYW1lc3BhY2UgT2JzZXJ2YWJsZSB7XG4gICAgdHlwZSBDYWxsYmFjayA9ICgpID0+IHZvaWQgfCBQcm9taXNlTGl0ZTtcbn1cbmludGVyZmFjZSBPYnNlcnZhYmxlIHtcbiAgICBbT2JzZXJ2YWJsZV0oY2FsbGJhY2s6IE9ic2VydmFibGUuQ2FsbGJhY2ssIHJlcXVpcmVkPzogYm9vbGVhbik6IHRoaXMgfCB2b2lkO1xufVxuZGVjbGFyZSBjb25zdCBPYnNlcnZhYmxlOiB1bmlxdWUgc3ltYm9sO1xuLyoqIFVwZGF0ZSByZWdpc3Rlci4gKi9cbmRlY2xhcmUgY29uc3QgUEVORElOR19LRVlTOiBXZWFrTWFwPE9ic2VydmFibGUsIFNldDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+PjtcbmRlY2xhcmUgZnVuY3Rpb24gYWRkTGlzdGVuZXI8VCBleHRlbmRzIE9ic2VydmFibGU+KHN1YmplY3Q6IFQsIGNhbGxiYWNrOiBOb3RpZnk8VD4sIHNlbGVjdD86IEV2ZW50IHwgU2V0PEV2ZW50Pik6ICgpID0+IGJvb2xlYW47XG5kZWNsYXJlIGZ1bmN0aW9uIGV2ZW50KHN1YmplY3Q6IE9ic2VydmFibGUsIGtleT86IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCB8IG51bGwsIHNpbGVudD86IGJvb2xlYW4pOiB2b2lkO1xuLyoqXG4gKiBDcmVhdGUgYSBzaWRlLWVmZmVjdCB3aGljaCB3aWxsIHVwZGF0ZSB3aGVuZXZlciB2YWx1ZXMgYWNjZXNzZWQgY2hhbmdlLlxuICogQ2FsbGJhY2sgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFuZCB3aGVuZXZlciB2YWx1ZXMgYXJlIHN0YWxlLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBJbnN0YW5jZSBvZiBTdGF0ZSB0byBvYnNlcnZlLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gdmFsdWVzIGNoYW5nZS5cbiAqIEBwYXJhbSByZXF1aXJlVmFsdWVzIC0gSWYgYHRydWVgIHdpbGwgdGhyb3cgaWYgYWNjZXNzaW5nIGEgdmFsdWUgd2hpY2ggaXMgYHVuZGVmaW5lZGAuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gd2F0Y2g8VCBleHRlbmRzIE9ic2VydmFibGU+KHRhcmdldDogVCwgY2FsbGJhY2s6IEVmZmVjdDxSZXF1aXJlZDxUPj4sIHJlcXVpcmVWYWx1ZXM6IHRydWUpOiAoKSA9PiB2b2lkO1xuZGVjbGFyZSBmdW5jdGlvbiB3YXRjaDxUIGV4dGVuZHMgT2JzZXJ2YWJsZT4odGFyZ2V0OiBULCBjYWxsYmFjazogRWZmZWN0PFQ+LCByZWN1cnNpdmU/OiBib29sZWFuKTogKCkgPT4gdm9pZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHNjb3BlKCk6ICgpID0+ICgpID0+IHZvaWQ7XG5leHBvcnQgeyBhZGRMaXN0ZW5lciwgd2F0Y2gsIGV2ZW50LCBOb3RpZnksIFBFTkRJTkdfS0VZUywgT2JzZXJ2YWJsZSB9O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBRSxTQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDRixJQUFHLFNBQU87Q0FBQTtFQUFBLE1BQVM7RUFBQTtFQUFRO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMzQixJQUFDLFFBQUE7Q0FBQTtPQUFBLEVBQUE7Q0FBQSxFQUFBO0NBQUE7QUFDRCxJQUFJLGNBQVU7Q0FBQTtFQUFBLE1BQUEsQ0FBQSxHQUFBLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2QsSUFBSSxhQUFhO0NBQUM7T0FBUyxDQUFBLFlBQVU7Q0FBQSxDQUFBLElBQU8sR0FBQTtDQUFBO0FBQzVDLElBQUksYUFBYTtDQUFDO09BQVEsQ0FBQSxXQUFXLFNBQVM7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzlDLElBQUksYUFBWTtDQUFBO09BQVEsRUFBSztDQUFFLEVBQUE7Q0FBQTtBQUMvQixJQUFJLGVBQVk7Q0FBQTtPQUFjO0VBQUM7RUFBWTtFQUFDO0VBQU87Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbkQsSUFBSSxjQUFjO0NBQUM7RUFBQSxNQUFTO0VBQUE7RUFBYTtFQUFBO0VBQU07RUFBTztFQUFJO0VBQU87RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDakUsSUFBRSxRQUFBO0NBQUE7T0FBQSxDQUFBLFdBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNGLElBQUksUUFBUTtDQUFDO0VBQUMsTUFBUTtFQUFBO0VBQWE7RUFBRztFQUFHO0VBQVU7RUFBTTtDQUFBO0VBQUE7RUFBTztFQUFBO0VBQVM7RUFBSTtFQUFJO0VBQUk7RUFBSTtFQUFJO0VBQUE7Q0FBSTtBQUNqRyxJQUFJLFFBQVE7Q0FBQztFQUFDLE1BQVE7RUFBQTtFQUFhO0VBQUU7RUFBQTtFQUFXO0NBQUU7RUFBQztFQUFDO0VBQU87RUFBQztFQUFPO0VBQUc7RUFBSztFQUFJO0VBQUE7Q0FBSTtBQUNuRixJQUFXLFFBQVE7Q0FBQztPQUFVLEVBQUM7Q0FBQSxFQUFLO0NBQUMifQ==