@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,81 +1,77 @@
1
- import { enter } from "../control";
2
- import { Context } from "../context";
3
- import { PARENT, update } from "../state";
4
- import { use } from "./use";
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
5
7
  function get(Type, arg1, arg2) {
6
- const isDownstream = arg1 === true;
7
- const isOptional = arg1 === false;
8
- return use((key, subject) => {
9
- if (isDownstream) {
10
- const callback = typeof arg2 === "function" ? arg2 : void 0;
11
- const applied = /* @__PURE__ */ new Set();
12
- const reset = () => {
13
- update(subject, key, Object.freeze(Array.from(applied)));
14
- };
15
- Context.get(subject, (context) => {
16
- context.get(Type, (state) => {
17
- let remove;
18
- let flush;
19
- if (applied.has(state)) return;
20
- if (callback) {
21
- const exit = enter();
22
- try {
23
- const done2 = callback(state, subject);
24
- if (done2 === false) return false;
25
- if (typeof done2 == "function") remove = done2;
26
- } finally {
27
- flush = exit();
28
- }
29
- }
30
- applied.add(state);
31
- reset();
32
- const done = () => {
33
- if (flush) flush();
34
- ignore();
35
- applied.delete(state);
36
- reset();
37
- if (typeof remove == "function") remove();
38
- remove = void 0;
39
- };
40
- const ignore = state.set(done, null);
41
- return done;
42
- });
43
- });
44
- return {
45
- value: [],
46
- enumerable: false
47
- };
48
- }
49
- const hasParent = PARENT.get(subject);
50
- function assign(value) {
51
- if (typeof arg1 === "function") {
52
- const callback = arg1;
53
- const result = callback(value, subject);
54
- if (typeof result === "function") {
55
- subject.set(result, null);
56
- }
57
- }
58
- update(subject, key, value);
59
- }
60
- if (hasParent && hasParent instanceof Type) {
61
- assign(hasParent);
62
- return {};
63
- }
64
- Context.get(subject, (context) => {
65
- const self = context.get(Type);
66
- if (self) assign(self);
67
- else if (!isOptional)
68
- throw new Error(
69
- `Required ${Type} not found in context for ${subject}.`
70
- );
71
- });
72
- return {
73
- get: !isOptional,
74
- enumerable: false
75
- };
76
- });
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
+ });
77
73
  }
78
- export {
79
- get
80
- };
81
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2dldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZW50ZXIgfSBmcm9tICcuLi9jb250cm9sJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IFN0YXRlLCBQQVJFTlQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxudHlwZSBUeXBlPFQgZXh0ZW5kcyBTdGF0ZT4gPSBTdGF0ZS5FeHRlbmRzPFQ+ICYgdHlwZW9mIFN0YXRlO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBnZXQge1xuICB0eXBlIENhbGxiYWNrPFQgPSBhbnk+ID0gKFxuICAgIHN0YXRlOiBULFxuICAgIHN1YmplY3Q6IFN0YXRlXG4gICkgPT4gdm9pZCB8IGJvb2xlYW4gfCAoKCkgPT4gdm9pZCk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB1cHN0cmVhbSBTdGF0ZSBmcm9tIGNvbnRleHQgd2l0aCBvcHRpb25hbCBsaWZlY3ljbGUgY2FsbGJhY2suXG4gKiBDYWxsYmFjayBydW5zIG9uIG1vdW50IGFuZCBjYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24gZm9yIHVubW91bnQuXG4gKlxuICogQHBhcmFtIFR5cGUgLSBUeXBlIG9mIFN0YXRlIHRvIGZldGNoLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrLCByZWNlaXZlcyAoc3RhdGUsIHN1YmplY3QpLiBDYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5FeHRlbmRzPFQ+LFxuICBjYWxsYmFjaz86IGdldC5DYWxsYmFjazxUPlxuKTogVDtcblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgZmFsc2UsIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQuIE90aGVyd2lzZSB3aWxsIHRocm93IHN1c3BlbnNlLlxuICovXG5mdW5jdGlvbiBnZXQ8VCBleHRlbmRzIFN0YXRlPihcbiAgVHlwZTogU3RhdGUuRXh0ZW5kczxUPixcbiAgcmVxdWlyZWQ6IGZhbHNlXG4pOiBUIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENvbGxlY3RzIGRvd25zdHJlYW0gU3RhdGVzLCB0aGlzIHdpbGwgYWNjdW11bGF0ZSBhbGwgaW5zdGFuY2VzIG9mIHNwZWNpZmllZCB0eXBlIGZvciB3aGljaCB0aGlzIGlzIGFuIGFuY2VzdG9yLlxuICogUmV0dXJucyBhIGZyb3plbiBhcnJheSB0aGF0IHVwZGF0ZXMgYXMgU3RhdGVzIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICogQ2FsbGJhY2sgcnVucyBvbiBlYWNoIFN0YXRlIHJlZ2lzdHJhdGlvbiBhbmQgY2FuIHJldHVybiBjbGVhbnVwIG9yIGZhbHNlIHRvIHByZXZlbnQgcmVnaXN0cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBTdGF0ZSB0byBjb2xsZWN0LlxuICogQHBhcmFtIGRvd25zdHJlYW0gLSBNdXN0IGJlIHRydWUgdG8gZW5hYmxlIGRvd25zdHJlYW0gbW9kZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGxpZmVjeWNsZSBjYWxsYmFjaywgcmVjZWl2ZXMgKHN0YXRlLCBzdWJqZWN0KS4gTWF5IHJldHVybiBmYWxzZSB0byBwcmV2ZW50IHJlZ2lzdHJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gIFR5cGU6IFN0YXRlLkV4dGVuZHM8VD4sXG4gIGRvd25zdHJlYW06IHRydWUsXG4gIGNhbGxiYWNrPzogZ2V0LkNhbGxiYWNrPFQ+XG4pOiByZWFkb25seSBUW107XG5cbmZ1bmN0aW9uIGdldDxSLCBUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBUeXBlPFQ+LFxuICBhcmcxPzogRnVuY3Rpb24gfCBib29sZWFuLFxuICBhcmcyPzogRnVuY3Rpb25cbikge1xuICBjb25zdCBpc0Rvd25zdHJlYW0gPSBhcmcxID09PSB0cnVlO1xuICBjb25zdCBpc09wdGlvbmFsID0gYXJnMSA9PT0gZmFsc2U7XG5cbiAgcmV0dXJuIHVzZTxUW10gfCBUPigoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgLy8gRG93bnN0cmVhbSBjb2xsZWN0aW9uIG1vZGVcbiAgICBpZiAoaXNEb3duc3RyZWFtKSB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9XG4gICAgICAgIHR5cGVvZiBhcmcyID09PSAnZnVuY3Rpb24nID8gKGFyZzIgYXMgZ2V0LkNhbGxiYWNrPFQ+KSA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgYXBwbGllZCA9IG5ldyBTZXQ8U3RhdGU+KCk7XG4gICAgICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGFwcGxpZWQpKSk7XG4gICAgICB9O1xuXG4gICAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb250ZXh0LmdldChUeXBlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICBsZXQgcmVtb3ZlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoYXBwbGllZC5oYXMoc3RhdGUpKSByZXR1cm47XG5cbiAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXQgPSBlbnRlcigpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkb25lID0gY2FsbGJhY2soc3RhdGUsIHN1YmplY3QpO1xuXG4gICAgICAgICAgICAgIGlmIChkb25lID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRvbmUgPT0gJ2Z1bmN0aW9uJykgcmVtb3ZlID0gZG9uZTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGZsdXNoID0gZXhpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFwcGxpZWQuYWRkKHN0YXRlKTtcbiAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgY29uc3QgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChmbHVzaCkgZmx1c2goKTtcbiAgICAgICAgICAgIGlnbm9yZSgpO1xuXG4gICAgICAgICAgICBhcHBsaWVkLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlbW92ZSA9PSAnZnVuY3Rpb24nKSByZW1vdmUoKTtcblxuICAgICAgICAgICAgcmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmUgPSBzdGF0ZS5zZXQoZG9uZSwgbnVsbCk7XG5cbiAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBVcHN0cmVhbSBtb2RlXG4gICAgY29uc3QgaGFzUGFyZW50ID0gUEFSRU5ULmdldChzdWJqZWN0KSBhcyBUO1xuXG4gICAgZnVuY3Rpb24gYXNzaWduKHZhbHVlOiBUKSB7XG4gICAgICAvLyBJZiBjYWxsYmFjayBwcm92aWRlZCwgcnVuIGl0IGFzIGxpZmVjeWNsZSBob29rXG4gICAgICBpZiAodHlwZW9mIGFyZzEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBhcmcxIGFzIGdldC5DYWxsYmFjazxUPjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2sodmFsdWUsIHN1YmplY3QpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGNsZWFudXAgaWYgcmV0dXJuZWRcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBzdWJqZWN0LnNldChyZXN1bHQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBwYXJlbnRcbiAgICBpZiAoaGFzUGFyZW50ICYmIGhhc1BhcmVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIGFzc2lnbihoYXNQYXJlbnQpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGNvbnRleHRcbiAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZiA9IGNvbnRleHQuZ2V0KFR5cGUpO1xuXG4gICAgICBpZiAoc2VsZikgYXNzaWduKHNlbGYpO1xuICAgICAgZWxzZSBpZiAoIWlzT3B0aW9uYWwpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmVxdWlyZWQgJHtUeXBlfSBub3QgZm91bmQgaW4gY29udGV4dCBmb3IgJHtzdWJqZWN0fS5gXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAhaXNPcHRpb25hbCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldCB9O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsZUFBZTtBQUN4QixTQUFnQixRQUFRLGNBQWM7QUFDdEMsU0FBUyxXQUFXO0FBbURwQixTQUFTLElBQ1AsTUFDQSxNQUNBLE1BQ0E7QUFDQSxRQUFNLGVBQWUsU0FBUztBQUM5QixRQUFNLGFBQWEsU0FBUztBQUU1QixTQUFPLElBQWEsQ0FBQyxLQUFLLFlBQVk7QUFFcEMsUUFBSSxjQUFjO0FBQ2hCLFlBQU0sV0FDSixPQUFPLFNBQVMsYUFBYyxPQUEyQjtBQUUzRCxZQUFNLFVBQVUsb0JBQUksSUFBVztBQUMvQixZQUFNLFFBQVEsTUFBTTtBQUNsQixlQUFPLFNBQVMsS0FBSyxPQUFPLE9BQU8sTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQUEsTUFDekQ7QUFFQSxjQUFRLElBQUksU0FBUyxDQUFDLFlBQVk7QUFDaEMsZ0JBQVEsSUFBSSxNQUFNLENBQUMsVUFBVTtBQUMzQixjQUFJO0FBQ0osY0FBSTtBQUVKLGNBQUksUUFBUSxJQUFJLEtBQUssRUFBRztBQUV4QixjQUFJLFVBQVU7QUFDWixrQkFBTSxPQUFPLE1BQU07QUFFbkIsZ0JBQUk7QUFDRixvQkFBTUEsUUFBTyxTQUFTLE9BQU8sT0FBTztBQUVwQyxrQkFBSUEsVUFBUyxNQUFPLFFBQU87QUFDM0Isa0JBQUksT0FBT0EsU0FBUSxXQUFZLFVBQVNBO0FBQUEsWUFDMUMsVUFBRTtBQUNBLHNCQUFRLEtBQUs7QUFBQSxZQUNmO0FBQUEsVUFDRjtBQUVBLGtCQUFRLElBQUksS0FBSztBQUNqQixnQkFBTTtBQUVOLGdCQUFNLE9BQU8sTUFBTTtBQUNqQixnQkFBSSxNQUFPLE9BQU07QUFDakIsbUJBQU87QUFFUCxvQkFBUSxPQUFPLEtBQUs7QUFDcEIsa0JBQU07QUFFTixnQkFBSSxPQUFPLFVBQVUsV0FBWSxRQUFPO0FBRXhDLHFCQUFTO0FBQUEsVUFDWDtBQUVBLGdCQUFNLFNBQVMsTUFBTSxJQUFJLE1BQU0sSUFBSTtBQUVuQyxpQkFBTztBQUFBLFFBQ1QsQ0FBQztBQUFBLE1BQ0gsQ0FBQztBQUVELGFBQU87QUFBQSxRQUNMLE9BQU8sQ0FBQztBQUFBLFFBQ1IsWUFBWTtBQUFBLE1BQ2Q7QUFBQSxJQUNGO0FBR0EsVUFBTSxZQUFZLE9BQU8sSUFBSSxPQUFPO0FBRXBDLGFBQVMsT0FBTyxPQUFVO0FBRXhCLFVBQUksT0FBTyxTQUFTLFlBQVk7QUFDOUIsY0FBTSxXQUFXO0FBQ2pCLGNBQU0sU0FBUyxTQUFTLE9BQU8sT0FBTztBQUd0QyxZQUFJLE9BQU8sV0FBVyxZQUFZO0FBQ2hDLGtCQUFRLElBQUksUUFBUSxJQUFJO0FBQUEsUUFDMUI7QUFBQSxNQUNGO0FBRUEsYUFBTyxTQUFTLEtBQUssS0FBSztBQUFBLElBQzVCO0FBR0EsUUFBSSxhQUFhLHFCQUFxQixNQUFNO0FBQzFDLGFBQU8sU0FBUztBQUNoQixhQUFPLENBQUM7QUFBQSxJQUNWO0FBR0EsWUFBUSxJQUFJLFNBQVMsQ0FBQyxZQUFZO0FBQ2hDLFlBQU0sT0FBTyxRQUFRLElBQUksSUFBSTtBQUU3QixVQUFJLEtBQU0sUUFBTyxJQUFJO0FBQUEsZUFDWixDQUFDO0FBQ1IsY0FBTSxJQUFJO0FBQUEsVUFDUixZQUFZLElBQUksNkJBQTZCLE9BQU87QUFBQSxRQUN0RDtBQUFBLElBQ0osQ0FBQztBQUVELFdBQU87QUFBQSxNQUNMLEtBQUssQ0FBQztBQUFBLE1BQ04sWUFBWTtBQUFBLElBQ2Q7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsiZG9uZSJdCn0K
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,69 +1,68 @@
1
- import { addListener, enter } from "../control";
2
- import { update } from "../state";
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(
11
- subject,
12
- () => {
13
- for (const key2 in subject)
14
- if (typeof arg2 == "function")
15
- defineProperty(value, key2, {
16
- configurable: true,
17
- get() {
18
- const out = arg2(key2);
19
- defineProperty(value, key2, { value: out });
20
- return out;
21
- }
22
- });
23
- else {
24
- const get = method(key2, subject);
25
- const set = (x) => subject[key2] = x;
26
- defineProperties(set, {
27
- current: { get, set },
28
- get: { value: get },
29
- is: { value: subject },
30
- key: { value: key2 }
31
- });
32
- defineProperty(value, key2, { value: set });
33
- }
34
- return null;
35
- },
36
- true
37
- );
38
- else if (typeof arg == "object")
39
- throw new Error(
40
- "ref instruction does not support object which is not 'this'"
41
- );
42
- else {
43
- let unset;
44
- const get = method(key, state);
45
- const set = (value2) => {
46
- if (!update(subject, key, value2) || !arg) return;
47
- if (unset) unset = void unset(value2);
48
- if (value2 === null && arg2 !== false) return;
49
- const exit = enter();
50
- const out = arg.call(subject, value2);
51
- const flush = exit();
52
- unset = (key2) => {
53
- if (typeof out == "function") out(key2);
54
- flush();
55
- };
56
- };
57
- state[key] = null;
58
- value = defineProperty({ get, key, is: subject }, "current", {
59
- get,
60
- set
61
- });
62
- }
63
- defineProperty(subject, key, { value });
64
- });
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
+ });
65
64
  }
66
- export {
67
- ref
68
- };
69
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyIH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBTdGF0ZSwgdXBkYXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0aWVzIH0gPSBPYmplY3Q7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHJlZiB7XG4gIHR5cGUgQ2FsbGJhY2s8VD4gPSAoXG4gICAgYXJndW1lbnQ6IFRcbiAgKSA9PiAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAvKiogQ3VycmVudCB2YWx1ZSBoZWxkIGJ5IHRoaXMgcmVmZXJlbmNlLiAqL1xuICAgIGN1cnJlbnQ6IFQ7XG5cbiAgICAvKiogU3RhdGUgaW5zdGFuY2UgdGhpcyByZWZlcmVuY2UgYmVsb25ncyB0by4gKi9cbiAgICBpczogU3RhdGU7XG5cbiAgICAvKiogS2V5IG9mIHByb3BlcnR5IG9uIHN0YXRlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gY2hhbmdlcyBvZiB0aGlzIHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIHRoZSBjdXJyZW50IHZhbHVlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICAgKiBAcmV0dXJucyBVbnN1YnNjcmliZSBmdW5jdGlvbiB0byBzdG9wIGxpc3RlbmluZyB0byBjaGFuZ2VzLlxuICAgICAqL1xuICAgIGdldChjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgIGdldCgpOiBUIHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG5cbiAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgdHlwZSBQcm94eTxUIGV4dGVuZHMgU3RhdGU+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogT2JqZWN0PFRbUF0+IH0gJiB7XG4gICAgZ2V0KCk6IFQ7XG4gIH07XG5cbiAgdHlwZSBDdXN0b21Qcm94eTxUIGV4dGVuZHMgU3RhdGUsIFI+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogUiB9ICYge1xuICAgIGdldCgpOiBUO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5mdW5jdGlvbiByZWY8VCBleHRlbmRzIFN0YXRlPih0YXJnZXQ6IFQpOiByZWYuUHJveHk8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcmVmPE8gZXh0ZW5kcyBTdGF0ZSwgUj4oXG4gIHRhcmdldDogTyxcbiAgbWFwcGVyOiAoa2V5OiBTdGF0ZS5GaWVsZDxPPikgPT4gUlxuKTogcmVmLkN1c3RvbVByb3h5PE8sIFI+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihjYWxsYmFjaz86IHJlZi5DYWxsYmFjazxUPik6IHJlZi5PYmplY3Q8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihcbiAgY2FsbGJhY2s6IHJlZi5DYWxsYmFjazxUIHwgbnVsbD4sXG4gIGlnbm9yZU51bGw6IGJvb2xlYW5cbik6IHJlZi5PYmplY3Q8VD47XG5cbmZ1bmN0aW9uIHJlZjxUPihcbiAgYXJnPzogcmVmLkNhbGxiYWNrPFQ+IHwgU3RhdGUsXG4gIGFyZzI/OiAoKGtleTogc3RyaW5nKSA9PiBhbnkpIHwgYm9vbGVhblxuKSB7XG4gIHJldHVybiB1c2U8VD4oKGtleSwgc3ViamVjdCwgc3RhdGUpID0+IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBjb25zdCBtZXRob2QgPVxuICAgICAgKGtleTogc3RyaW5nLCBmcm9tOiBSZWNvcmQ8c3RyaW5nLCBUPikgPT5cbiAgICAgIChjYWxsYmFjaz86ICh2YWx1ZTogVCkgPT4gdm9pZCkgPT5cbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICA/IGFkZExpc3RlbmVyKHN1YmplY3QsICgpID0+IGNhbGxiYWNrKGZyb21ba2V5XSksIGtleSlcbiAgICAgICAgICA6IGZyb21ba2V5XTtcblxuICAgIGlmIChhcmcgPT09IHN1YmplY3QpXG4gICAgICBhZGRMaXN0ZW5lcihcbiAgICAgICAgc3ViamVjdCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHN1YmplY3QpXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvdXQgPSBhcmcyKGtleSk7XG4gICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBvdXQgfSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ2V0ID0gbWV0aG9kKGtleSwgc3ViamVjdCk7XG4gICAgICAgICAgICAgIGNvbnN0IHNldCA9ICh4OiBhbnkpID0+IChzdWJqZWN0W2tleV0gPSB4KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0aWVzKHNldCwge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHsgZ2V0LCBzZXQgfSxcbiAgICAgICAgICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9LFxuICAgICAgICAgICAgICAgIGlzOiB7IHZhbHVlOiBzdWJqZWN0IH0sXG4gICAgICAgICAgICAgICAga2V5OiB7IHZhbHVlOiBrZXkgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBzZXQgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBlbHNlIGlmICh0eXBlb2YgYXJnID09ICdvYmplY3QnKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInJlZiBpbnN0cnVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9iamVjdCB3aGljaCBpcyBub3QgJ3RoaXMnXCJcbiAgICAgICk7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdW5zZXQ6ICgobmV4dDogVCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBnZXQgPSBtZXRob2Qoa2V5LCBzdGF0ZSk7XG4gICAgICBjb25zdCBzZXQgPSAodmFsdWU/OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSkgfHwgIWFyZykgcmV0dXJuO1xuXG4gICAgICAgIGlmICh1bnNldCkgdW5zZXQgPSB2b2lkIHVuc2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgYXJnMiAhPT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICB1bnNldCA9IChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nKSBvdXQoa2V5KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICBzdGF0ZVtrZXldID0gbnVsbDtcbiAgICAgIHZhbHVlID0gZGVmaW5lUHJvcGVydHkoeyBnZXQsIGtleSwgaXM6IHN1YmplY3QgfSwgJ2N1cnJlbnQnLCB7XG4gICAgICAgIGdldCxcbiAgICAgICAgc2V0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShzdWJqZWN0LCBrZXksIHsgdmFsdWUgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyByZWYgfTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsYUFBYSxhQUFhO0FBQ25DLFNBQWdCLGNBQWM7QUFDOUIsU0FBUyxXQUFXO0FBRXBCLE1BQU0sRUFBRSxnQkFBZ0IsaUJBQWlCLElBQUk7QUF3RjdDLFNBQVMsSUFDUCxLQUNBLE1BQ0E7QUFDQSxTQUFPLElBQU8sQ0FBQyxLQUFLLFNBQVMsVUFBVTtBQUNyQyxRQUFJLFFBQVEsQ0FBQztBQUNiLFVBQU0sU0FDSixDQUFDQSxNQUFhLFNBQ2QsQ0FBQyxhQUNDLFdBQ0ksWUFBWSxTQUFTLE1BQU0sU0FBUyxLQUFLQSxJQUFHLENBQUMsR0FBR0EsSUFBRyxJQUNuRCxLQUFLQSxJQUFHO0FBRWhCLFFBQUksUUFBUTtBQUNWO0FBQUEsUUFDRTtBQUFBLFFBQ0EsTUFBTTtBQUNKLHFCQUFXQSxRQUFPO0FBQ2hCLGdCQUFJLE9BQU8sUUFBUTtBQUNqQiw2QkFBZSxPQUFPQSxNQUFLO0FBQUEsZ0JBQ3pCLGNBQWM7QUFBQSxnQkFDZCxNQUFNO0FBQ0osd0JBQU0sTUFBTSxLQUFLQSxJQUFHO0FBQ3BCLGlDQUFlLE9BQU9BLE1BQUssRUFBRSxPQUFPLElBQUksQ0FBQztBQUN6Qyx5QkFBTztBQUFBLGdCQUNUO0FBQUEsY0FDRixDQUFDO0FBQUEsaUJBQ0U7QUFDSCxvQkFBTSxNQUFNLE9BQU9BLE1BQUssT0FBTztBQUMvQixvQkFBTSxNQUFNLENBQUMsTUFBWSxRQUFRQSxJQUFHLElBQUk7QUFFeEMsK0JBQWlCLEtBQUs7QUFBQSxnQkFDcEIsU0FBUyxFQUFFLEtBQUssSUFBSTtBQUFBLGdCQUNwQixLQUFLLEVBQUUsT0FBTyxJQUFJO0FBQUEsZ0JBQ2xCLElBQUksRUFBRSxPQUFPLFFBQVE7QUFBQSxnQkFDckIsS0FBSyxFQUFFLE9BQU9BLEtBQUk7QUFBQSxjQUNwQixDQUFDO0FBRUQsNkJBQWUsT0FBT0EsTUFBSyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQUEsWUFDM0M7QUFFRixpQkFBTztBQUFBLFFBQ1Q7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLGFBQ08sT0FBTyxPQUFPO0FBQ3JCLFlBQU0sSUFBSTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBQUEsU0FDRztBQUNILFVBQUk7QUFDSixZQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUs7QUFDN0IsWUFBTSxNQUFNLENBQUNDLFdBQWdCO0FBQzNCLFlBQUksQ0FBQyxPQUFPLFNBQVMsS0FBS0EsTUFBSyxLQUFLLENBQUMsSUFBSztBQUUxQyxZQUFJLE1BQU8sU0FBUSxLQUFLLE1BQU1BLE1BQUs7QUFFbkMsWUFBSUEsV0FBVSxRQUFRLFNBQVMsTUFBTztBQUV0QyxjQUFNLE9BQU8sTUFBTTtBQUNuQixjQUFNLE1BQU0sSUFBSSxLQUFLLFNBQVNBLE1BQUs7QUFDbkMsY0FBTSxRQUFRLEtBQUs7QUFFbkIsZ0JBQVEsQ0FBQ0QsU0FBUTtBQUNmLGNBQUksT0FBTyxPQUFPLFdBQVksS0FBSUEsSUFBRztBQUVyQyxnQkFBTTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBRUEsWUFBTSxHQUFHLElBQUk7QUFDYixjQUFRLGVBQWUsRUFBRSxLQUFLLEtBQUssSUFBSSxRQUFRLEdBQUcsV0FBVztBQUFBLFFBQzNEO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFFQSxtQkFBZSxTQUFTLEtBQUssRUFBRSxNQUFNLENBQUM7QUFBQSxFQUN4QyxDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbImtleSIsICJ2YWx1ZSJdCn0K
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=