@expressive/mvc 0.71.0 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/context.js +111 -90
- package/dist/esm/control.js +31 -42
- package/dist/esm/index.js +10 -11
- package/dist/esm/instruction/get.js +64 -73
- package/dist/esm/instruction/ref.js +40 -37
- package/dist/esm/instruction/set.js +78 -27
- package/dist/esm/instruction/use.js +19 -21
- package/dist/esm/state.js +324 -0
- package/dist/index.d.ts +225 -190
- package/dist/index.js +502 -531
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/esm/instruction/has.js +0 -86
- package/dist/esm/model.js +0 -318
|
@@ -1,90 +1,81 @@
|
|
|
1
|
+
import { enter } from "../control";
|
|
1
2
|
import { Context } from "../context";
|
|
2
|
-
import {
|
|
3
|
-
import { fetch, METHOD, Model, PARENT, event, update } from "../model";
|
|
3
|
+
import { PARENT, update } from "../state";
|
|
4
4
|
import { use } from "./use";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
update(subject, key, value);
|
|
5
|
+
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)));
|
|
15
14
|
};
|
|
16
|
-
var assign = assign2;
|
|
17
|
-
const hasParent = PARENT.get(subject);
|
|
18
|
-
if (!hasParent && arg1 === true)
|
|
19
|
-
throw new Error(`${subject} may only exist as a child of type ${arg0}.`);
|
|
20
|
-
else if (hasParent) {
|
|
21
|
-
if (hasParent instanceof arg0) {
|
|
22
|
-
assign2(hasParent);
|
|
23
|
-
return {};
|
|
24
|
-
} else if (arg1 === true)
|
|
25
|
-
throw new Error(`New ${subject} created as child of ${hasParent}, but must be instanceof ${arg0}.`);
|
|
26
|
-
}
|
|
27
15
|
Context.get(subject, (context) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
+
});
|
|
33
43
|
});
|
|
34
44
|
return {
|
|
35
|
-
|
|
45
|
+
value: [],
|
|
36
46
|
enumerable: false
|
|
37
47
|
};
|
|
38
48
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const getter = arg1;
|
|
48
|
-
let reset;
|
|
49
|
-
let isAsync;
|
|
50
|
-
let proxy;
|
|
51
|
-
function connect(model) {
|
|
52
|
-
reset = createEffect(model, (current) => {
|
|
53
|
-
proxy = current;
|
|
54
|
-
if (!(key in state) || STALE.delete(compute))
|
|
55
|
-
compute(!reset);
|
|
56
|
-
return (didUpdate) => {
|
|
57
|
-
if (didUpdate) {
|
|
58
|
-
STALE.add(compute);
|
|
59
|
-
event(subject, key, true);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}, false);
|
|
63
|
-
}
|
|
64
|
-
function compute(initial) {
|
|
65
|
-
let next;
|
|
66
|
-
try {
|
|
67
|
-
next = getter.call(proxy, proxy, key);
|
|
68
|
-
} catch (err) {
|
|
69
|
-
console.warn(`An exception was thrown while ${initial ? "initializing" : "refreshing"} ${subject}.${key}.`);
|
|
70
|
-
if (initial)
|
|
71
|
-
throw err;
|
|
72
|
-
console.error(err);
|
|
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
|
+
}
|
|
73
57
|
}
|
|
74
|
-
update(subject, key,
|
|
58
|
+
update(subject, key, value);
|
|
75
59
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
|
84
75
|
};
|
|
85
76
|
});
|
|
86
77
|
}
|
|
87
78
|
export {
|
|
88
79
|
get
|
|
89
80
|
};
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2dldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZW50ZXIgfSBmcm9tICcuLi9jb250cm9sJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IFN0YXRlLCBQQVJFTlQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxudHlwZSBUeXBlPFQgZXh0ZW5kcyBTdGF0ZT4gPSBTdGF0ZS5FeHRlbmRzPFQ+ICYgdHlwZW9mIFN0YXRlO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBnZXQge1xuICB0eXBlIENhbGxiYWNrPFQgPSBhbnk+ID0gKFxuICAgIHN0YXRlOiBULFxuICAgIHN1YmplY3Q6IFN0YXRlXG4gICkgPT4gdm9pZCB8IGJvb2xlYW4gfCAoKCkgPT4gdm9pZCk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB1cHN0cmVhbSBTdGF0ZSBmcm9tIGNvbnRleHQgd2l0aCBvcHRpb25hbCBsaWZlY3ljbGUgY2FsbGJhY2suXG4gKiBDYWxsYmFjayBydW5zIG9uIG1vdW50IGFuZCBjYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24gZm9yIHVubW91bnQuXG4gKlxuICogQHBhcmFtIFR5cGUgLSBUeXBlIG9mIFN0YXRlIHRvIGZldGNoLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrLCByZWNlaXZlcyAoc3RhdGUsIHN1YmplY3QpLiBDYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5FeHRlbmRzPFQ+LFxuICBjYWxsYmFjaz86IGdldC5DYWxsYmFjazxUPlxuKTogVDtcblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgZmFsc2UsIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQuIE90aGVyd2lzZSB3aWxsIHRocm93IHN1c3BlbnNlLlxuICovXG5mdW5jdGlvbiBnZXQ8VCBleHRlbmRzIFN0YXRlPihcbiAgVHlwZTogU3RhdGUuRXh0ZW5kczxUPixcbiAgcmVxdWlyZWQ6IGZhbHNlXG4pOiBUIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENvbGxlY3RzIGRvd25zdHJlYW0gU3RhdGVzLCB0aGlzIHdpbGwgYWNjdW11bGF0ZSBhbGwgaW5zdGFuY2VzIG9mIHNwZWNpZmllZCB0eXBlIGZvciB3aGljaCB0aGlzIGlzIGFuIGFuY2VzdG9yLlxuICogUmV0dXJucyBhIGZyb3plbiBhcnJheSB0aGF0IHVwZGF0ZXMgYXMgU3RhdGVzIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICogQ2FsbGJhY2sgcnVucyBvbiBlYWNoIFN0YXRlIHJlZ2lzdHJhdGlvbiBhbmQgY2FuIHJldHVybiBjbGVhbnVwIG9yIGZhbHNlIHRvIHByZXZlbnQgcmVnaXN0cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBTdGF0ZSB0byBjb2xsZWN0LlxuICogQHBhcmFtIGRvd25zdHJlYW0gLSBNdXN0IGJlIHRydWUgdG8gZW5hYmxlIGRvd25zdHJlYW0gbW9kZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGxpZmVjeWNsZSBjYWxsYmFjaywgcmVjZWl2ZXMgKHN0YXRlLCBzdWJqZWN0KS4gTWF5IHJldHVybiBmYWxzZSB0byBwcmV2ZW50IHJlZ2lzdHJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gIFR5cGU6IFN0YXRlLkV4dGVuZHM8VD4sXG4gIGRvd25zdHJlYW06IHRydWUsXG4gIGNhbGxiYWNrPzogZ2V0LkNhbGxiYWNrPFQ+XG4pOiByZWFkb25seSBUW107XG5cbmZ1bmN0aW9uIGdldDxSLCBUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBUeXBlPFQ+LFxuICBhcmcxPzogRnVuY3Rpb24gfCBib29sZWFuLFxuICBhcmcyPzogRnVuY3Rpb25cbikge1xuICBjb25zdCBpc0Rvd25zdHJlYW0gPSBhcmcxID09PSB0cnVlO1xuICBjb25zdCBpc09wdGlvbmFsID0gYXJnMSA9PT0gZmFsc2U7XG5cbiAgcmV0dXJuIHVzZTxUW10gfCBUPigoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgLy8gRG93bnN0cmVhbSBjb2xsZWN0aW9uIG1vZGVcbiAgICBpZiAoaXNEb3duc3RyZWFtKSB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9XG4gICAgICAgIHR5cGVvZiBhcmcyID09PSAnZnVuY3Rpb24nID8gKGFyZzIgYXMgZ2V0LkNhbGxiYWNrPFQ+KSA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgYXBwbGllZCA9IG5ldyBTZXQ8U3RhdGU+KCk7XG4gICAgICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGFwcGxpZWQpKSk7XG4gICAgICB9O1xuXG4gICAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb250ZXh0LmdldChUeXBlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICBsZXQgcmVtb3ZlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoYXBwbGllZC5oYXMoc3RhdGUpKSByZXR1cm47XG5cbiAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXQgPSBlbnRlcigpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkb25lID0gY2FsbGJhY2soc3RhdGUsIHN1YmplY3QpO1xuXG4gICAgICAgICAgICAgIGlmIChkb25lID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRvbmUgPT0gJ2Z1bmN0aW9uJykgcmVtb3ZlID0gZG9uZTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGZsdXNoID0gZXhpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFwcGxpZWQuYWRkKHN0YXRlKTtcbiAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgY29uc3QgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChmbHVzaCkgZmx1c2goKTtcbiAgICAgICAgICAgIGlnbm9yZSgpO1xuXG4gICAgICAgICAgICBhcHBsaWVkLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlbW92ZSA9PSAnZnVuY3Rpb24nKSByZW1vdmUoKTtcblxuICAgICAgICAgICAgcmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmUgPSBzdGF0ZS5zZXQoZG9uZSwgbnVsbCk7XG5cbiAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBVcHN0cmVhbSBtb2RlXG4gICAgY29uc3QgaGFzUGFyZW50ID0gUEFSRU5ULmdldChzdWJqZWN0KSBhcyBUO1xuXG4gICAgZnVuY3Rpb24gYXNzaWduKHZhbHVlOiBUKSB7XG4gICAgICAvLyBJZiBjYWxsYmFjayBwcm92aWRlZCwgcnVuIGl0IGFzIGxpZmVjeWNsZSBob29rXG4gICAgICBpZiAodHlwZW9mIGFyZzEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBhcmcxIGFzIGdldC5DYWxsYmFjazxUPjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2sodmFsdWUsIHN1YmplY3QpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGNsZWFudXAgaWYgcmV0dXJuZWRcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBzdWJqZWN0LnNldChyZXN1bHQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBwYXJlbnRcbiAgICBpZiAoaGFzUGFyZW50ICYmIGhhc1BhcmVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIGFzc2lnbihoYXNQYXJlbnQpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGNvbnRleHRcbiAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZiA9IGNvbnRleHQuZ2V0KFR5cGUpO1xuXG4gICAgICBpZiAoc2VsZikgYXNzaWduKHNlbGYpO1xuICAgICAgZWxzZSBpZiAoIWlzT3B0aW9uYWwpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmVxdWlyZWQgJHtUeXBlfSBub3QgZm91bmQgaW4gY29udGV4dCBmb3IgJHtzdWJqZWN0fS5gXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAhaXNPcHRpb25hbCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldCB9O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsZUFBZTtBQUN4QixTQUFnQixRQUFRLGNBQWM7QUFDdEMsU0FBUyxXQUFXO0FBbURwQixTQUFTLElBQ1AsTUFDQSxNQUNBLE1BQ0E7QUFDQSxRQUFNLGVBQWUsU0FBUztBQUM5QixRQUFNLGFBQWEsU0FBUztBQUU1QixTQUFPLElBQWEsQ0FBQyxLQUFLLFlBQVk7QUFFcEMsUUFBSSxjQUFjO0FBQ2hCLFlBQU0sV0FDSixPQUFPLFNBQVMsYUFBYyxPQUEyQjtBQUUzRCxZQUFNLFVBQVUsb0JBQUksSUFBVztBQUMvQixZQUFNLFFBQVEsTUFBTTtBQUNsQixlQUFPLFNBQVMsS0FBSyxPQUFPLE9BQU8sTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQUEsTUFDekQ7QUFFQSxjQUFRLElBQUksU0FBUyxDQUFDLFlBQVk7QUFDaEMsZ0JBQVEsSUFBSSxNQUFNLENBQUMsVUFBVTtBQUMzQixjQUFJO0FBQ0osY0FBSTtBQUVKLGNBQUksUUFBUSxJQUFJLEtBQUssRUFBRztBQUV4QixjQUFJLFVBQVU7QUFDWixrQkFBTSxPQUFPLE1BQU07QUFFbkIsZ0JBQUk7QUFDRixvQkFBTUEsUUFBTyxTQUFTLE9BQU8sT0FBTztBQUVwQyxrQkFBSUEsVUFBUyxNQUFPLFFBQU87QUFDM0Isa0JBQUksT0FBT0EsU0FBUSxXQUFZLFVBQVNBO0FBQUEsWUFDMUMsVUFBRTtBQUNBLHNCQUFRLEtBQUs7QUFBQSxZQUNmO0FBQUEsVUFDRjtBQUVBLGtCQUFRLElBQUksS0FBSztBQUNqQixnQkFBTTtBQUVOLGdCQUFNLE9BQU8sTUFBTTtBQUNqQixnQkFBSSxNQUFPLE9BQU07QUFDakIsbUJBQU87QUFFUCxvQkFBUSxPQUFPLEtBQUs7QUFDcEIsa0JBQU07QUFFTixnQkFBSSxPQUFPLFVBQVUsV0FBWSxRQUFPO0FBRXhDLHFCQUFTO0FBQUEsVUFDWDtBQUVBLGdCQUFNLFNBQVMsTUFBTSxJQUFJLE1BQU0sSUFBSTtBQUVuQyxpQkFBTztBQUFBLFFBQ1QsQ0FBQztBQUFBLE1BQ0gsQ0FBQztBQUVELGFBQU87QUFBQSxRQUNMLE9BQU8sQ0FBQztBQUFBLFFBQ1IsWUFBWTtBQUFBLE1BQ2Q7QUFBQSxJQUNGO0FBR0EsVUFBTSxZQUFZLE9BQU8sSUFBSSxPQUFPO0FBRXBDLGFBQVMsT0FBTyxPQUFVO0FBRXhCLFVBQUksT0FBTyxTQUFTLFlBQVk7QUFDOUIsY0FBTSxXQUFXO0FBQ2pCLGNBQU0sU0FBUyxTQUFTLE9BQU8sT0FBTztBQUd0QyxZQUFJLE9BQU8sV0FBVyxZQUFZO0FBQ2hDLGtCQUFRLElBQUksUUFBUSxJQUFJO0FBQUEsUUFDMUI7QUFBQSxNQUNGO0FBRUEsYUFBTyxTQUFTLEtBQUssS0FBSztBQUFBLElBQzVCO0FBR0EsUUFBSSxhQUFhLHFCQUFxQixNQUFNO0FBQzFDLGFBQU8sU0FBUztBQUNoQixhQUFPLENBQUM7QUFBQSxJQUNWO0FBR0EsWUFBUSxJQUFJLFNBQVMsQ0FBQyxZQUFZO0FBQ2hDLFlBQU0sT0FBTyxRQUFRLElBQUksSUFBSTtBQUU3QixVQUFJLEtBQU0sUUFBTyxJQUFJO0FBQUEsZUFDWixDQUFDO0FBQ1IsY0FBTSxJQUFJO0FBQUEsVUFDUixZQUFZLElBQUksNkJBQTZCLE9BQU87QUFBQSxRQUN0RDtBQUFBLElBQ0osQ0FBQztBQUVELFdBQU87QUFBQSxNQUNMLEtBQUssQ0FBQztBQUFBLE1BQ04sWUFBWTtBQUFBLElBQ2Q7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsiZG9uZSJdCn0K
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { addListener, enter } from "../control";
|
|
2
|
-
import { update } from "../
|
|
2
|
+
import { update } from "../state";
|
|
3
3
|
import { use } from "./use";
|
|
4
4
|
const { defineProperty, defineProperties } = Object;
|
|
5
5
|
function ref(arg, arg2) {
|
|
@@ -7,54 +7,57 @@ function ref(arg, arg2) {
|
|
|
7
7
|
let value = {};
|
|
8
8
|
const method = (key2, from) => (callback) => callback ? addListener(subject, () => callback(from[key2]), key2) : from[key2];
|
|
9
9
|
if (arg === subject)
|
|
10
|
-
addListener(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
+
);
|
|
34
38
|
else if (typeof arg == "object")
|
|
35
|
-
throw new Error(
|
|
39
|
+
throw new Error(
|
|
40
|
+
"ref instruction does not support object which is not 'this'"
|
|
41
|
+
);
|
|
36
42
|
else {
|
|
37
43
|
let unset;
|
|
38
44
|
const get = method(key, state);
|
|
39
45
|
const set = (value2) => {
|
|
40
|
-
if (!update(subject, key, value2) || !arg)
|
|
41
|
-
|
|
42
|
-
if (
|
|
43
|
-
unset = void unset(value2);
|
|
44
|
-
if (value2 === null && arg2 !== false)
|
|
45
|
-
return;
|
|
46
|
+
if (!update(subject, key, value2) || !arg) return;
|
|
47
|
+
if (unset) unset = void unset(value2);
|
|
48
|
+
if (value2 === null && arg2 !== false) return;
|
|
46
49
|
const exit = enter();
|
|
47
50
|
const out = arg.call(subject, value2);
|
|
48
51
|
const flush = exit();
|
|
49
52
|
unset = (key2) => {
|
|
50
|
-
if (typeof out == "function")
|
|
51
|
-
out(key2);
|
|
53
|
+
if (typeof out == "function") out(key2);
|
|
52
54
|
flush();
|
|
53
55
|
};
|
|
54
56
|
};
|
|
55
57
|
state[key] = null;
|
|
56
|
-
value =
|
|
57
|
-
|
|
58
|
+
value = defineProperty({ get, key, is: subject }, "current", {
|
|
59
|
+
get,
|
|
60
|
+
set
|
|
58
61
|
});
|
|
59
62
|
}
|
|
60
63
|
defineProperty(subject, key, { value });
|
|
@@ -63,4 +66,4 @@ function ref(arg, arg2) {
|
|
|
63
66
|
export {
|
|
64
67
|
ref
|
|
65
68
|
};
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyIH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBTdGF0ZSwgdXBkYXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0aWVzIH0gPSBPYmplY3Q7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHJlZiB7XG4gIHR5cGUgQ2FsbGJhY2s8VD4gPSAoXG4gICAgYXJndW1lbnQ6IFRcbiAgKSA9PiAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAvKiogQ3VycmVudCB2YWx1ZSBoZWxkIGJ5IHRoaXMgcmVmZXJlbmNlLiAqL1xuICAgIGN1cnJlbnQ6IFQ7XG5cbiAgICAvKiogU3RhdGUgaW5zdGFuY2UgdGhpcyByZWZlcmVuY2UgYmVsb25ncyB0by4gKi9cbiAgICBpczogU3RhdGU7XG5cbiAgICAvKiogS2V5IG9mIHByb3BlcnR5IG9uIHN0YXRlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gY2hhbmdlcyBvZiB0aGlzIHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIHRoZSBjdXJyZW50IHZhbHVlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICAgKiBAcmV0dXJucyBVbnN1YnNjcmliZSBmdW5jdGlvbiB0byBzdG9wIGxpc3RlbmluZyB0byBjaGFuZ2VzLlxuICAgICAqL1xuICAgIGdldChjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgIGdldCgpOiBUIHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG5cbiAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgdHlwZSBQcm94eTxUIGV4dGVuZHMgU3RhdGU+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogT2JqZWN0PFRbUF0+IH0gJiB7XG4gICAgZ2V0KCk6IFQ7XG4gIH07XG5cbiAgdHlwZSBDdXN0b21Qcm94eTxUIGV4dGVuZHMgU3RhdGUsIFI+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogUiB9ICYge1xuICAgIGdldCgpOiBUO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5mdW5jdGlvbiByZWY8VCBleHRlbmRzIFN0YXRlPih0YXJnZXQ6IFQpOiByZWYuUHJveHk8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcmVmPE8gZXh0ZW5kcyBTdGF0ZSwgUj4oXG4gIHRhcmdldDogTyxcbiAgbWFwcGVyOiAoa2V5OiBTdGF0ZS5GaWVsZDxPPikgPT4gUlxuKTogcmVmLkN1c3RvbVByb3h5PE8sIFI+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihjYWxsYmFjaz86IHJlZi5DYWxsYmFjazxUPik6IHJlZi5PYmplY3Q8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihcbiAgY2FsbGJhY2s6IHJlZi5DYWxsYmFjazxUIHwgbnVsbD4sXG4gIGlnbm9yZU51bGw6IGJvb2xlYW5cbik6IHJlZi5PYmplY3Q8VD47XG5cbmZ1bmN0aW9uIHJlZjxUPihcbiAgYXJnPzogcmVmLkNhbGxiYWNrPFQ+IHwgU3RhdGUsXG4gIGFyZzI/OiAoKGtleTogc3RyaW5nKSA9PiBhbnkpIHwgYm9vbGVhblxuKSB7XG4gIHJldHVybiB1c2U8VD4oKGtleSwgc3ViamVjdCwgc3RhdGUpID0+IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBjb25zdCBtZXRob2QgPVxuICAgICAgKGtleTogc3RyaW5nLCBmcm9tOiBSZWNvcmQ8c3RyaW5nLCBUPikgPT5cbiAgICAgIChjYWxsYmFjaz86ICh2YWx1ZTogVCkgPT4gdm9pZCkgPT5cbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICA/IGFkZExpc3RlbmVyKHN1YmplY3QsICgpID0+IGNhbGxiYWNrKGZyb21ba2V5XSksIGtleSlcbiAgICAgICAgICA6IGZyb21ba2V5XTtcblxuICAgIGlmIChhcmcgPT09IHN1YmplY3QpXG4gICAgICBhZGRMaXN0ZW5lcihcbiAgICAgICAgc3ViamVjdCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHN1YmplY3QpXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvdXQgPSBhcmcyKGtleSk7XG4gICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBvdXQgfSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ2V0ID0gbWV0aG9kKGtleSwgc3ViamVjdCk7XG4gICAgICAgICAgICAgIGNvbnN0IHNldCA9ICh4OiBhbnkpID0+IChzdWJqZWN0W2tleV0gPSB4KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0aWVzKHNldCwge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHsgZ2V0LCBzZXQgfSxcbiAgICAgICAgICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9LFxuICAgICAgICAgICAgICAgIGlzOiB7IHZhbHVlOiBzdWJqZWN0IH0sXG4gICAgICAgICAgICAgICAga2V5OiB7IHZhbHVlOiBrZXkgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBzZXQgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBlbHNlIGlmICh0eXBlb2YgYXJnID09ICdvYmplY3QnKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInJlZiBpbnN0cnVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9iamVjdCB3aGljaCBpcyBub3QgJ3RoaXMnXCJcbiAgICAgICk7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdW5zZXQ6ICgobmV4dDogVCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBnZXQgPSBtZXRob2Qoa2V5LCBzdGF0ZSk7XG4gICAgICBjb25zdCBzZXQgPSAodmFsdWU/OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSkgfHwgIWFyZykgcmV0dXJuO1xuXG4gICAgICAgIGlmICh1bnNldCkgdW5zZXQgPSB2b2lkIHVuc2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgYXJnMiAhPT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICB1bnNldCA9IChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nKSBvdXQoa2V5KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICBzdGF0ZVtrZXldID0gbnVsbDtcbiAgICAgIHZhbHVlID0gZGVmaW5lUHJvcGVydHkoeyBnZXQsIGtleSwgaXM6IHN1YmplY3QgfSwgJ2N1cnJlbnQnLCB7XG4gICAgICAgIGdldCxcbiAgICAgICAgc2V0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShzdWJqZWN0LCBrZXksIHsgdmFsdWUgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyByZWYgfTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsYUFBYSxhQUFhO0FBQ25DLFNBQWdCLGNBQWM7QUFDOUIsU0FBUyxXQUFXO0FBRXBCLE1BQU0sRUFBRSxnQkFBZ0IsaUJBQWlCLElBQUk7QUF3RjdDLFNBQVMsSUFDUCxLQUNBLE1BQ0E7QUFDQSxTQUFPLElBQU8sQ0FBQyxLQUFLLFNBQVMsVUFBVTtBQUNyQyxRQUFJLFFBQVEsQ0FBQztBQUNiLFVBQU0sU0FDSixDQUFDQSxNQUFhLFNBQ2QsQ0FBQyxhQUNDLFdBQ0ksWUFBWSxTQUFTLE1BQU0sU0FBUyxLQUFLQSxJQUFHLENBQUMsR0FBR0EsSUFBRyxJQUNuRCxLQUFLQSxJQUFHO0FBRWhCLFFBQUksUUFBUTtBQUNWO0FBQUEsUUFDRTtBQUFBLFFBQ0EsTUFBTTtBQUNKLHFCQUFXQSxRQUFPO0FBQ2hCLGdCQUFJLE9BQU8sUUFBUTtBQUNqQiw2QkFBZSxPQUFPQSxNQUFLO0FBQUEsZ0JBQ3pCLGNBQWM7QUFBQSxnQkFDZCxNQUFNO0FBQ0osd0JBQU0sTUFBTSxLQUFLQSxJQUFHO0FBQ3BCLGlDQUFlLE9BQU9BLE1BQUssRUFBRSxPQUFPLElBQUksQ0FBQztBQUN6Qyx5QkFBTztBQUFBLGdCQUNUO0FBQUEsY0FDRixDQUFDO0FBQUEsaUJBQ0U7QUFDSCxvQkFBTSxNQUFNLE9BQU9BLE1BQUssT0FBTztBQUMvQixvQkFBTSxNQUFNLENBQUMsTUFBWSxRQUFRQSxJQUFHLElBQUk7QUFFeEMsK0JBQWlCLEtBQUs7QUFBQSxnQkFDcEIsU0FBUyxFQUFFLEtBQUssSUFBSTtBQUFBLGdCQUNwQixLQUFLLEVBQUUsT0FBTyxJQUFJO0FBQUEsZ0JBQ2xCLElBQUksRUFBRSxPQUFPLFFBQVE7QUFBQSxnQkFDckIsS0FBSyxFQUFFLE9BQU9BLEtBQUk7QUFBQSxjQUNwQixDQUFDO0FBRUQsNkJBQWUsT0FBT0EsTUFBSyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQUEsWUFDM0M7QUFFRixpQkFBTztBQUFBLFFBQ1Q7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLGFBQ08sT0FBTyxPQUFPO0FBQ3JCLFlBQU0sSUFBSTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBQUEsU0FDRztBQUNILFVBQUk7QUFDSixZQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUs7QUFDN0IsWUFBTSxNQUFNLENBQUNDLFdBQWdCO0FBQzNCLFlBQUksQ0FBQyxPQUFPLFNBQVMsS0FBS0EsTUFBSyxLQUFLLENBQUMsSUFBSztBQUUxQyxZQUFJLE1BQU8sU0FBUSxLQUFLLE1BQU1BLE1BQUs7QUFFbkMsWUFBSUEsV0FBVSxRQUFRLFNBQVMsTUFBTztBQUV0QyxjQUFNLE9BQU8sTUFBTTtBQUNuQixjQUFNLE1BQU0sSUFBSSxLQUFLLFNBQVNBLE1BQUs7QUFDbkMsY0FBTSxRQUFRLEtBQUs7QUFFbkIsZ0JBQVEsQ0FBQ0QsU0FBUTtBQUNmLGNBQUksT0FBTyxPQUFPLFdBQVksS0FBSUEsSUFBRztBQUVyQyxnQkFBTTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBRUEsWUFBTSxHQUFHLElBQUk7QUFDYixjQUFRLGVBQWUsRUFBRSxLQUFLLEtBQUssSUFBSSxRQUFRLEdBQUcsV0FBVztBQUFBLFFBQzNEO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFFQSxtQkFBZSxTQUFTLEtBQUssRUFBRSxNQUFNLENBQUM7QUFBQSxFQUN4QyxDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbImtleSIsICJ2YWx1ZSJdCn0K
|
|
@@ -1,53 +1,109 @@
|
|
|
1
|
-
import { addListener, enter } from "../control";
|
|
2
|
-
import { event, update } from "../
|
|
1
|
+
import { addListener, enter, watch } from "../control";
|
|
2
|
+
import { access, event, METHOD, State, update } from "../state";
|
|
3
3
|
import { use } from "./use";
|
|
4
|
+
const STALE = /* @__PURE__ */ new WeakSet();
|
|
4
5
|
function set(value, argument) {
|
|
5
|
-
return use((key, subject) => {
|
|
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
|
+
);
|
|
6
11
|
const property = {};
|
|
7
|
-
if (
|
|
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) {
|
|
8
65
|
let init2 = function() {
|
|
9
66
|
if (typeof value == "function")
|
|
10
67
|
try {
|
|
11
68
|
value = attempt(value.bind(subject, key));
|
|
12
69
|
} catch (err) {
|
|
13
|
-
console.warn(
|
|
70
|
+
console.warn(
|
|
71
|
+
`Generating initial value for ${subject}.${key} failed.`
|
|
72
|
+
);
|
|
14
73
|
throw err;
|
|
15
74
|
}
|
|
16
75
|
property.get = argument !== false;
|
|
17
76
|
const set2 = (value2) => subject[key] = value2;
|
|
18
|
-
if (
|
|
77
|
+
if (value instanceof Promise)
|
|
19
78
|
value.then(set2, (error) => {
|
|
20
79
|
event(subject, key);
|
|
21
80
|
property.get = () => {
|
|
22
81
|
throw error;
|
|
23
82
|
};
|
|
24
83
|
});
|
|
25
|
-
else
|
|
26
|
-
|
|
27
|
-
if (argument)
|
|
28
|
-
return null;
|
|
84
|
+
else set2(value);
|
|
85
|
+
if (argument) return null;
|
|
29
86
|
return subject[key];
|
|
30
87
|
};
|
|
31
88
|
var init = init2;
|
|
32
|
-
if (argument)
|
|
89
|
+
if (argument) {
|
|
33
90
|
addListener(subject, init2, true);
|
|
34
|
-
else
|
|
91
|
+
} else {
|
|
35
92
|
property.get = init2;
|
|
36
|
-
|
|
93
|
+
}
|
|
94
|
+
} else if (value !== void 0) {
|
|
37
95
|
property.value = value;
|
|
96
|
+
}
|
|
38
97
|
if (typeof argument == "function") {
|
|
39
98
|
let unset;
|
|
40
99
|
property.set = function(value2, previous) {
|
|
41
100
|
const exit = enter();
|
|
42
101
|
const returns = argument.call(this, value2, previous);
|
|
43
102
|
const flush = exit();
|
|
44
|
-
if (returns === false)
|
|
45
|
-
|
|
46
|
-
if (typeof unset == "function")
|
|
47
|
-
unset(value2);
|
|
103
|
+
if (returns === false) return false;
|
|
104
|
+
if (typeof unset == "function") unset(value2);
|
|
48
105
|
unset = (next) => {
|
|
49
|
-
if (typeof returns == "function")
|
|
50
|
-
returns(next);
|
|
106
|
+
if (typeof returns == "function") returns(next);
|
|
51
107
|
flush();
|
|
52
108
|
};
|
|
53
109
|
};
|
|
@@ -61,10 +117,8 @@ function set(value, argument) {
|
|
|
61
117
|
}
|
|
62
118
|
function attempt(fn) {
|
|
63
119
|
function retry(err) {
|
|
64
|
-
if (err instanceof Promise)
|
|
65
|
-
|
|
66
|
-
else
|
|
67
|
-
throw err;
|
|
120
|
+
if (err instanceof Promise) return err.then(compute);
|
|
121
|
+
else throw err;
|
|
68
122
|
}
|
|
69
123
|
function compute() {
|
|
70
124
|
try {
|
|
@@ -76,10 +130,7 @@ function attempt(fn) {
|
|
|
76
130
|
}
|
|
77
131
|
return compute();
|
|
78
132
|
}
|
|
79
|
-
function isThenable(value) {
|
|
80
|
-
return value && typeof value == "object" && typeof value.then == "function";
|
|
81
|
-
}
|
|
82
133
|
export {
|
|
83
134
|
set
|
|
84
135
|
};
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyIH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBNb2RlbCwgZXZlbnQsIHVwZGF0ZSB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxuZGVjbGFyZSBuYW1lc3BhY2Ugc2V0IHtcbiAgdHlwZSBDYWxsYmFjazxULCBTID0gYW55PiA9ICh0aGlzOiBTLCBuZXh0OiBULCBwcmV2aW91czogVCkgPT5cbiAgICAoKG5leHQ6IFQpID0+IHZvaWQpIHwgUHJvbWlzZTxhbnk+IHwgdm9pZCB8IGJvb2xlYW47XG5cbiAgdHlwZSBGYWN0b3J5PFQsIFMgPSBhbnk+ID0gKHRoaXM6IFMsIGtleTogc3RyaW5nKSA9PiBUaGVuYWJsZTxUPiB8IFQ7XG5cbiAgdHlwZSBUaGVuYWJsZTxUPiA9IHtcbiAgICB0aGVuOiAob25GdWxmaWxsZWQ/OiAodmFsdWU6IFQpID0+IGFueSwgb25SZWplY3RlZD86IChyZWFzb246IGFueSkgPT4gYW55KSA9PiBhbnk7XG4gIH07XG59XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IGFzIGB1bmRlZmluZWRgIGJ1dCByZXF1aXJlZC5cbiAqIFxuICogUHJvcGVydHkgY2Fubm90IGJlIGFjY2Vzc2VkIHVudGlsIGl0IGlzIGRlZmluZWQuIElmIGFjY2Vzc2VkIHdoaWxlIHVuZGVmaW5lZCwgYSBoeWJyaWRcbiAqIGBQcm9taXNlYC9gRXJyb3JgIChha2E6IFtTdXNwZW5zZV0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2NvbmN1cnJlbnQtbW9kZS1zdXNwZW5zZS5odG1sKSkgd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIHNldCA8VCA9IGFueT4oKTogVDtcblxuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKiBcbiAqICoqTm90ZSoqIEZhY3RvcnkgaXMgbGF6eSEgSXQgd2lsbCBvbmx5IHJ1biBpZi93aGVuIHByb3BlcnR5IGlzIGFjY2Vzc2VkLlxuICogVmFsdWUgd2lsbCBiZSB1bmRlZmluZWQgdW50aWwgZmFjdG9yeSByZXNvbHZlcywgd2hpY2ggd2lsbCBhbHNvIGRpc3BhdGNoIGFuIHVwZGF0ZSBmb3IgdGhlIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBzZXQgPFQ+IChmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiB8IHNldC5UaGVuYWJsZTxUPiwgcmVxdWlyZWQ6IGZhbHNlKTogVCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogSWYgYXN5bmMsIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCByZXNvbHZlcywgeWVpbGRpbmcgYSByZXN1bHQuXG4gKiBJZiBhY2Nlc3NlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLCBSZWFjdCBTdXNwZW5zZSB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIENhbGxiYWNrIHJ1biB0byBkZXJyaXZlIHByb3BlcnR5IHZhbHVlLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgdHJ1ZSBydW4gZmFjdG9yeSBpbW1lZGlhdGVseSBvbiBjcmVhdGlvbiwgb3RoZXJ3aXNlIG9uIGFjY2Vzcy5cbiAqL1xuZnVuY3Rpb24gc2V0IDxUPiAoZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4gfCBzZXQuVGhlbmFibGU8VD4sIHJlcXVpcmVkPzogYm9vbGVhbik6IFQ7XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IHdpdGggYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICpcbiAqIElmIGFzeW5jLCBwcm9wZXJ0eSBjYW5ub3QgYmUgYWNjZXNzZWQgdW50aWwgcmVzb2x2ZXMsIHllaWxkaW5nIGEgcmVzdWx0LlxuICogSWYgYWNjZXNzZWQgd2hpbGUgc3RpbGwgcHJvY2Vzc2luZywgUmVhY3QgU3VzcGVuc2Ugd2lsbCBiZSB0aHJvd24uXG4gKlxuICogQHBhcmFtIGZhY3RvcnkgLSBDYWxsYmFjayBydW4gdG8gZGVycml2ZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEBwYXJhbSBvblVwZGF0ZSAtIENhbGxiYWNrIHJ1biB3aGVuIHByb3BlcnR5IGlzIGZpbmlzaGVkIGNvbXB1dGluZyBvciBpcyBzZXQuIFxuICovXG5mdW5jdGlvbiBzZXQgPFQ+IChmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiB8IHNldC5UaGVuYWJsZTxUPiwgb25VcGRhdGU/OiBzZXQuQ2FsbGJhY2s8VD4pOiBUO1xuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IHdpdGggZW1wdHkgcGxhY2Vob2xkZXIgYW5kL29yIHVwZGF0ZSBjYWxsYmFjay5cbiAqIFxuICogQHBhcmFtIHZhbHVlIC0gU3RhcnRpbmcgdmFsdWUgZm9yIHByb3BlcnR5LiBJZiB1bmRlZmluZWQsIHN1c3BlbnNlIHdpbGwgYmUgdGhyb3duIG9uIGFjY2VzcywgdW50aWwgdmFsdWUgaXMgc2V0IGFuZCBhY2NlcHRlZCBieSBjYWxsYmFjay5cbiAqIEBwYXJhbSBvblVwZGF0ZSAtIENhbGxiYWNrIHJ1biB3aGVuIHByb3BlcnR5IGlzIHNldC4gSWYgcmV0dXJucyBmYWxzZSwgdXBkYXRlIGlzIG5vdCBhY2NlcHRlZCBhbmQgcHJvcGVydHkgd2lsbCBrZWVwIHByZXZpb3VzIHZhbHVlLlxuICovXG5mdW5jdGlvbiBzZXQgPFQ+ICh2YWx1ZTogVCB8IHVuZGVmaW5lZCwgb25VcGRhdGU/OiBzZXQuQ2FsbGJhY2s8VD4pOiBUO1xuXG5mdW5jdGlvbiBzZXQgPFQ+IChcbiAgdmFsdWU/OiBzZXQuRmFjdG9yeTxUPiB8IHNldC5UaGVuYWJsZTxUPiB8IFQsXG4gIGFyZ3VtZW50Pzogc2V0LkNhbGxiYWNrPGFueT4gfCBib29sZWFuKXtcblxuICByZXR1cm4gdXNlPFQ+KChrZXksIHN1YmplY3QpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eTogTW9kZWwuRGVzY3JpcHRvciA9IHt9O1xuXG4gICAgaWYodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIiB8fCBpc1RoZW5hYmxlKHZhbHVlKSl7XG4gICAgICBmdW5jdGlvbiBpbml0KCl7XG4gICAgICAgIGlmKHR5cGVvZiB2YWx1ZSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbHVlID0gYXR0ZW1wdCh2YWx1ZS5iaW5kKHN1YmplY3QsIGtleSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXRjaChlcnIpe1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBHZW5lcmF0aW5nIGluaXRpYWwgdmFsdWUgZm9yICR7c3ViamVjdH0uJHtrZXl9IGZhaWxlZC5gKTtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgcHJvcGVydHkuZ2V0ID0gYXJndW1lbnQgIT09IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHNldCA9ICh2YWx1ZTogYW55KSA9PiBzdWJqZWN0W2tleV0gPSB2YWx1ZTtcblxuICAgICAgICBpZihpc1RoZW5hYmxlKHZhbHVlKSlcbiAgICAgICAgICB2YWx1ZS50aGVuKHNldCwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgZXZlbnQoc3ViamVjdCwga2V5KTtcbiAgICAgICAgICAgIHByb3BlcnR5LmdldCA9ICgpID0+IHsgdGhyb3cgZXJyb3IgfTtcbiAgICAgICAgICB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc2V0KHZhbHVlKTtcblxuICAgICAgICBpZihhcmd1bWVudClcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBzdWJqZWN0W2tleV07XG4gICAgICB9XG5cbiAgICAgIGlmKGFyZ3VtZW50KVxuICAgICAgICBhZGRMaXN0ZW5lcihzdWJqZWN0LCBpbml0LCB0cnVlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcHJvcGVydHkuZ2V0ID0gaW5pdDtcbiAgICB9XG4gICAgZWxzZSBpZih2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgcHJvcGVydHkudmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmKHR5cGVvZiBhcmd1bWVudCA9PSBcImZ1bmN0aW9uXCIpe1xuICAgICAgbGV0IHVuc2V0OiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgICBwcm9wZXJ0eS5zZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnksIHByZXZpb3VzOiBhbnkpe1xuICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcbiAgICAgICAgY29uc3QgcmV0dXJucyA9IGFyZ3VtZW50LmNhbGwodGhpcywgdmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgY29uc3QgZmx1c2ggPSBleGl0KCk7XG5cbiAgICAgICAgaWYocmV0dXJucyA9PT0gZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmKHR5cGVvZiB1bnNldCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgdW5zZXQodmFsdWUpO1xuXG4gICAgICAgIHVuc2V0ID0gKG5leHQ6IFQpID0+IHtcbiAgICAgICAgICBpZih0eXBlb2YgcmV0dXJucyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICByZXR1cm5zKG5leHQpO1xuXG4gICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlXG4gICAgICBwcm9wZXJ0eS5zZXQgPSB2YWx1ZSA9PiB7XG4gICAgICAgIHByb3BlcnR5LmdldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KVxufVxuXG5mdW5jdGlvbiBhdHRlbXB0KGZuOiAoKSA9PiBhbnkpOiBhbnkge1xuICBmdW5jdGlvbiByZXRyeShlcnI6IHVua25vd24pe1xuICAgIGlmKGVyciBpbnN0YW5jZW9mIFByb21pc2UpXG4gICAgICByZXR1cm4gZXJyLnRoZW4oY29tcHV0ZSk7XG4gICAgZWxzZVxuICAgICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcHV0ZSgpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBmbigpO1xuXG4gICAgICByZXR1cm4gb3V0cHV0IGluc3RhbmNlb2YgUHJvbWlzZVxuICAgICAgICA/IG91dHB1dC5jYXRjaChyZXRyeSlcbiAgICAgICAgOiBvdXRwdXQ7XG4gICAgfVxuICAgIGNhdGNoKGVycil7XG4gICAgICByZXR1cm4gcmV0cnkoZXJyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tcHV0ZSgpO1xufVxuXG5mdW5jdGlvbiBpc1RoZW5hYmxlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzZXQuVGhlbmFibGU8YW55PiB7XG4gIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PSBcImZ1bmN0aW9uXCI7XG59XG5cbmV4cG9ydCB7IHNldCB9Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxhQUFhLGFBQWE7QUFDbkMsU0FBZ0IsT0FBTyxjQUFjO0FBQ3JDLFNBQVMsV0FBVztBQTJEcEIsU0FBUyxJQUNQLE9BQ0EsVUFBdUM7QUFFdkMsU0FBTyxJQUFPLENBQUMsS0FBSyxZQUFZO0FBQzlCLFVBQU0sV0FBNkIsQ0FBQztBQUVwQyxRQUFHLE9BQU8sU0FBUyxjQUFjLFdBQVcsS0FBSyxHQUFFO0FBQ2pELFVBQVNBLFFBQVQsV0FBZTtBQUNiLFlBQUcsT0FBTyxTQUFTO0FBQ2pCLGNBQUk7QUFDRixvQkFBUSxRQUFRLE1BQU0sS0FBSyxTQUFTLEdBQUcsQ0FBQztBQUFBLFVBQzFDLFNBQ00sS0FBSTtBQUNSLG9CQUFRLEtBQUssZ0NBQWdDLE9BQU8sSUFBSSxHQUFHLFVBQVU7QUFDckUsa0JBQU07QUFBQSxVQUNSO0FBRUYsaUJBQVMsTUFBTSxhQUFhO0FBRTVCLGNBQU1DLE9BQU0sQ0FBQ0MsV0FBZSxRQUFRLEdBQUcsSUFBSUE7QUFFM0MsWUFBRyxXQUFXLEtBQUs7QUFDakIsZ0JBQU0sS0FBS0QsTUFBSyxXQUFTO0FBQ3ZCLGtCQUFNLFNBQVMsR0FBRztBQUNsQixxQkFBUyxNQUFNLE1BQU07QUFBRSxvQkFBTTtBQUFBLFlBQU07QUFBQSxVQUNyQyxDQUFDO0FBQUE7QUFFRCxVQUFBQSxLQUFJLEtBQUs7QUFFWCxZQUFHO0FBQ0QsaUJBQU87QUFFVCxlQUFPLFFBQVEsR0FBRztBQUFBLE1BQ3BCO0FBMUJTLGlCQUFBRDtBQTRCVCxVQUFHO0FBQ0Qsb0JBQVksU0FBU0EsT0FBTSxJQUFJO0FBQUE7QUFFL0IsaUJBQVMsTUFBTUE7QUFBQSxJQUNuQixXQUNRLFVBQVU7QUFDaEIsZUFBUyxRQUFRO0FBRW5CLFFBQUcsT0FBTyxZQUFZLFlBQVc7QUFDL0IsVUFBSTtBQUVKLGVBQVMsTUFBTSxTQUFvQkUsUUFBWSxVQUFjO0FBQzNELGNBQU0sT0FBTyxNQUFNO0FBQ25CLGNBQU0sVUFBVSxTQUFTLEtBQUssTUFBTUEsUUFBTyxRQUFRO0FBQ25ELGNBQU0sUUFBUSxLQUFLO0FBRW5CLFlBQUcsWUFBWTtBQUNiLGlCQUFPO0FBRVQsWUFBRyxPQUFPLFNBQVM7QUFDakIsZ0JBQU1BLE1BQUs7QUFFYixnQkFBUSxDQUFDLFNBQVk7QUFDbkIsY0FBRyxPQUFPLFdBQVc7QUFDbkIsb0JBQVEsSUFBSTtBQUVkLGdCQUFNO0FBQUEsUUFDUjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUUsZUFBUyxNQUFNLENBQUFBLFdBQVM7QUFDdEIsaUJBQVMsTUFBTTtBQUNmLGVBQU8sU0FBUyxLQUFLQSxNQUFLO0FBQUEsTUFDNUI7QUFFRixXQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0g7QUFFQSxTQUFTLFFBQVEsSUFBb0I7QUFDbkMsV0FBUyxNQUFNLEtBQWE7QUFDMUIsUUFBRyxlQUFlO0FBQ2hCLGFBQU8sSUFBSSxLQUFLLE9BQU87QUFBQTtBQUV2QixZQUFNO0FBQUEsRUFDVjtBQUVBLFdBQVMsVUFBZTtBQUN0QixRQUFJO0FBQ0YsWUFBTSxTQUFTLEdBQUc7QUFFbEIsYUFBTyxrQkFBa0IsVUFDckIsT0FBTyxNQUFNLEtBQUssSUFDbEI7QUFBQSxJQUNOLFNBQ00sS0FBSTtBQUNSLGFBQU8sTUFBTSxHQUFHO0FBQUEsSUFDbEI7QUFBQSxFQUNGO0FBRUEsU0FBTyxRQUFRO0FBQ2pCO0FBRUEsU0FBUyxXQUFXLE9BQXdDO0FBQzFELFNBQU8sU0FBUyxPQUFPLFNBQVMsWUFBWSxPQUFPLE1BQU0sUUFBUTtBQUNuRTsiLAogICJuYW1lcyI6IFsiaW5pdCIsICJzZXQiLCAidmFsdWUiXQp9Cg==
|
|
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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
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { access, follow, State, PARENT, STATE, uid, update } from "../state";
|
|
2
2
|
const INSTRUCTION = /* @__PURE__ */ new Map();
|
|
3
3
|
function use(arg1, arg2) {
|
|
4
|
-
if (
|
|
5
|
-
arg1 = childInstruction(arg1, arg2);
|
|
4
|
+
if (State.is(arg1)) arg1 = childInstruction(arg1, arg2);
|
|
6
5
|
const token = Symbol("instruction-" + uid());
|
|
7
6
|
INSTRUCTION.set(token, arg1);
|
|
8
7
|
return token;
|
|
@@ -11,10 +10,11 @@ function childInstruction(type, arg2) {
|
|
|
11
10
|
return (key, subject) => {
|
|
12
11
|
function set(next) {
|
|
13
12
|
if (next ? !(next instanceof type) : arg2 !== false)
|
|
14
|
-
throw new Error(
|
|
13
|
+
throw new Error(
|
|
14
|
+
`${subject}.${key} expected State of type ${type} but got ${next && next.constructor}.`
|
|
15
|
+
);
|
|
15
16
|
update(subject, key, next);
|
|
16
|
-
if (next && typeof arg2 == "function")
|
|
17
|
-
arg2(next);
|
|
17
|
+
if (next && typeof arg2 == "function") arg2(next);
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
const value = new type();
|
|
@@ -29,37 +29,35 @@ function init() {
|
|
|
29
29
|
for (const key in this) {
|
|
30
30
|
const { value } = Object.getOwnPropertyDescriptor(this, key);
|
|
31
31
|
const instruction = INSTRUCTION.get(value);
|
|
32
|
-
if (!instruction)
|
|
33
|
-
continue;
|
|
32
|
+
if (!instruction) continue;
|
|
34
33
|
INSTRUCTION.delete(value);
|
|
35
34
|
delete this[key];
|
|
36
35
|
const output = instruction.call(this, key, this, state);
|
|
37
|
-
if (!output)
|
|
38
|
-
continue;
|
|
36
|
+
if (!output) continue;
|
|
39
37
|
const desc = typeof output == "object" ? output : { get: output };
|
|
40
|
-
if ("value" in desc)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Object.defineProperty(model, key, {
|
|
38
|
+
if ("value" in desc) state[key] = desc.value;
|
|
39
|
+
const self = this;
|
|
40
|
+
Object.defineProperty(self, key, {
|
|
44
41
|
enumerable: desc.enumerable !== false,
|
|
45
42
|
get() {
|
|
46
|
-
return
|
|
43
|
+
return follow(
|
|
47
44
|
this,
|
|
48
45
|
key,
|
|
49
|
-
typeof desc.get == "function" ? desc.get(this) :
|
|
46
|
+
typeof desc.get == "function" ? desc.get(this) : access(self, key, desc.get)
|
|
50
47
|
);
|
|
51
48
|
},
|
|
52
49
|
set(next) {
|
|
53
|
-
if (desc.set === false)
|
|
54
|
-
throw new Error(`${
|
|
55
|
-
|
|
50
|
+
if (desc.set === false) {
|
|
51
|
+
throw new Error(`${self}.${key} is read-only.`);
|
|
52
|
+
}
|
|
53
|
+
update(self, key, next, desc.set);
|
|
56
54
|
}
|
|
57
55
|
});
|
|
58
56
|
}
|
|
59
57
|
return null;
|
|
60
58
|
}
|
|
61
|
-
|
|
59
|
+
State.on(init);
|
|
62
60
|
export {
|
|
63
61
|
use
|
|
64
62
|
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3VzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWNjZXNzLCBmb2xsb3csIFN0YXRlLCBQQVJFTlQsIFNUQVRFLCB1aWQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuLyoqXG4gKiBQcm9wZXJ0eSBpbml0aWFsaXplciwgd2lsbCBydW4gdXBvbiBpbnN0YW5jZSBjcmVhdGlvbi5cbiAqIE9wdGlvbmFsIHJldHVybmVkIGNhbGxiYWNrIHdpbGwgcnVuIHdoZW4gb25jZSB1cG9uIGZpcnN0IGFjY2Vzcy5cbiAqL1xudHlwZSBJbnN0cnVjdGlvbjxUID0gYW55LCBNIGV4dGVuZHMgU3RhdGUgPSBhbnk+ID1cbiAgLy8gVE9ETzogU2hvdWxkIHRoaXMgYWxsb3cgZm9yIG51bWJlcnMvc3ltYm9sIHByb3BlcnRpZXM/XG4gIChcbiAgICB0aGlzOiBNLFxuICAgIGtleTogRXh0cmFjdDxTdGF0ZS5GaWVsZDxNPiwgc3RyaW5nPixcbiAgICB0aGlzQXJnOiBNLFxuICAgIHN0YXRlOiBTdGF0ZS5WYWx1ZXM8TT5cbiAgKSA9PiBJbnN0cnVjdGlvbi5EZXNjcmlwdG9yPFQ+IHwgKChzb3VyY2U6IE0pID0+IFQpIHwgdm9pZDtcblxuZGVjbGFyZSBuYW1lc3BhY2UgSW5zdHJ1Y3Rpb24ge1xuICB0eXBlIEdldHRlcjxUPiA9IChzb3VyY2U6IFN0YXRlKSA9PiBUO1xuXG4gIHR5cGUgRGVzY3JpcHRvcjxUID0gYW55PiA9IHtcbiAgICBnZXQ/OiBHZXR0ZXI8VD4gfCBib29sZWFuO1xuICAgIHNldD86IFN0YXRlLlNldHRlcjxUPiB8IGJvb2xlYW47XG4gICAgZW51bWVyYWJsZT86IGJvb2xlYW47XG4gICAgdmFsdWU/OiBUO1xuICB9O1xufVxuXG5jb25zdCBJTlNUUlVDVElPTiA9IG5ldyBNYXA8c3ltYm9sLCBJbnN0cnVjdGlvbj4oKTtcblxuZnVuY3Rpb24gdXNlPFQ+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUPik6IFQgZXh0ZW5kcyB2b2lkID8gdW5rbm93biA6IFQ7XG5cbmZ1bmN0aW9uIHVzZTxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5OZXc8VD4sXG4gIHJlcXVpcmVkOiBmYWxzZVxuKTogVCB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gdXNlPFQgZXh0ZW5kcyBTdGF0ZT4oVHlwZTogU3RhdGUuTmV3PFQ+LCByZWFkeT86IChpOiBUKSA9PiB2b2lkKTogVDtcblxuZnVuY3Rpb24gdXNlKFxuICBhcmcxOiBTdGF0ZS5DbGFzcyB8IEluc3RydWN0aW9uLFxuICBhcmcyPzogKChpOiBTdGF0ZSkgPT4gdm9pZCkgfCBib29sZWFuXG4pIHtcbiAgaWYgKFN0YXRlLmlzKGFyZzEpKSBhcmcxID0gY2hpbGRJbnN0cnVjdGlvbihhcmcxLCBhcmcyKTtcblxuICBjb25zdCB0b2tlbiA9IFN5bWJvbCgnaW5zdHJ1Y3Rpb24tJyArIHVpZCgpKTtcbiAgSU5TVFJVQ1RJT04uc2V0KHRva2VuLCBhcmcxKTtcbiAgcmV0dXJuIHRva2VuO1xufVxuXG5mdW5jdGlvbiBjaGlsZEluc3RydWN0aW9uKFxuICB0eXBlOiBTdGF0ZS5DbGFzczxTdGF0ZT4sXG4gIGFyZzI/OiAoKGk6IFN0YXRlKSA9PiB2b2lkKSB8IGJvb2xlYW5cbik6IEluc3RydWN0aW9uPGFueSwgYW55PiB7XG4gIHJldHVybiAoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0KG5leHQ6IFN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobmV4dCA/ICEobmV4dCBpbnN0YW5jZW9mIHR5cGUpIDogYXJnMiAhPT0gZmFsc2UpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtzdWJqZWN0fS4ke2tleX0gZXhwZWN0ZWQgU3RhdGUgb2YgdHlwZSAke3R5cGV9IGJ1dCBnb3QgJHtcbiAgICAgICAgICAgIG5leHQgJiYgbmV4dC5jb25zdHJ1Y3RvclxuICAgICAgICAgIH0uYFxuICAgICAgICApO1xuXG4gICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCBuZXh0KTtcblxuICAgICAgaWYgKG5leHQgJiYgdHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJykgYXJnMihuZXh0KTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IHR5cGUoKTtcblxuICAgIHNldCh2YWx1ZSk7XG4gICAgUEFSRU5ULnNldCh2YWx1ZSwgc3ViamVjdCk7XG4gICAgdmFsdWUuc2V0KCk7XG5cbiAgICByZXR1cm4geyBzZXQgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdCh0aGlzOiBTdGF0ZSkge1xuICBjb25zdCBzdGF0ZSA9IFNUQVRFLmdldCh0aGlzKSE7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gdGhpcykge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywga2V5KSE7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBJTlNUUlVDVElPTi5nZXQodmFsdWUpO1xuXG4gICAgaWYgKCFpbnN0cnVjdGlvbikgY29udGludWU7XG5cbiAgICBJTlNUUlVDVElPTi5kZWxldGUodmFsdWUpO1xuICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpW2tleV07XG5cbiAgICBjb25zdCBvdXRwdXQgPSBpbnN0cnVjdGlvbi5jYWxsKHRoaXMsIGtleSwgdGhpcywgc3RhdGUpO1xuXG4gICAgaWYgKCFvdXRwdXQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZGVzYyA9IHR5cGVvZiBvdXRwdXQgPT0gJ29iamVjdCcgPyBvdXRwdXQgOiB7IGdldDogb3V0cHV0IH07XG5cbiAgICBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSBzdGF0ZVtrZXldID0gZGVzYy52YWx1ZTtcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlICE9PSBmYWxzZSxcbiAgICAgIGdldCh0aGlzOiBTdGF0ZSkge1xuICAgICAgICByZXR1cm4gZm9sbG93KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHR5cGVvZiBkZXNjLmdldCA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGRlc2MuZ2V0KHRoaXMpXG4gICAgICAgICAgICA6IGFjY2VzcyhzZWxmLCBrZXksIGRlc2MuZ2V0KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHNldChuZXh0KSB7XG4gICAgICAgIGlmIChkZXNjLnNldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c2VsZn0uJHtrZXl9IGlzIHJlYWQtb25seS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZShzZWxmLCBrZXksIG5leHQsIGRlc2Muc2V0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5TdGF0ZS5vbihpbml0KTtcblxuZXhwb3J0IHsgdXNlLCBJbnN0cnVjdGlvbiB9O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxRQUFRLFFBQVEsT0FBTyxRQUFRLE9BQU8sS0FBSyxjQUFjO0FBMEJsRSxNQUFNLGNBQWMsb0JBQUksSUFBeUI7QUFXakQsU0FBUyxJQUNQLE1BQ0EsTUFDQTtBQUNBLE1BQUksTUFBTSxHQUFHLElBQUksRUFBRyxRQUFPLGlCQUFpQixNQUFNLElBQUk7QUFFdEQsUUFBTSxRQUFRLE9BQU8saUJBQWlCLElBQUksQ0FBQztBQUMzQyxjQUFZLElBQUksT0FBTyxJQUFJO0FBQzNCLFNBQU87QUFDVDtBQUVBLFNBQVMsaUJBQ1AsTUFDQSxNQUN1QjtBQUN2QixTQUFPLENBQUMsS0FBSyxZQUFZO0FBQ3ZCLGFBQVMsSUFBSSxNQUF5QjtBQUNwQyxVQUFJLE9BQU8sRUFBRSxnQkFBZ0IsUUFBUSxTQUFTO0FBQzVDLGNBQU0sSUFBSTtBQUFBLFVBQ1IsR0FBRyxPQUFPLElBQUksR0FBRywyQkFBMkIsSUFBSSxZQUM5QyxRQUFRLEtBQUssV0FDZjtBQUFBLFFBQ0Y7QUFFRixhQUFPLFNBQVMsS0FBSyxJQUFJO0FBRXpCLFVBQUksUUFBUSxPQUFPLFFBQVEsV0FBWSxNQUFLLElBQUk7QUFFaEQsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFFBQVEsSUFBSSxLQUFLO0FBRXZCLFFBQUksS0FBSztBQUNULFdBQU8sSUFBSSxPQUFPLE9BQU87QUFDekIsVUFBTSxJQUFJO0FBRVYsV0FBTyxFQUFFLElBQUk7QUFBQSxFQUNmO0FBQ0Y7QUFFQSxTQUFTLE9BQWtCO0FBQ3pCLFFBQU0sUUFBUSxNQUFNLElBQUksSUFBSTtBQUU1QixhQUFXLE9BQU8sTUFBTTtBQUN0QixVQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8seUJBQXlCLE1BQU0sR0FBRztBQUMzRCxVQUFNLGNBQWMsWUFBWSxJQUFJLEtBQUs7QUFFekMsUUFBSSxDQUFDLFlBQWE7QUFFbEIsZ0JBQVksT0FBTyxLQUFLO0FBQ3hCLFdBQVEsS0FBYSxHQUFHO0FBRXhCLFVBQU0sU0FBUyxZQUFZLEtBQUssTUFBTSxLQUFLLE1BQU0sS0FBSztBQUV0RCxRQUFJLENBQUMsT0FBUTtBQUViLFVBQU0sT0FBTyxPQUFPLFVBQVUsV0FBVyxTQUFTLEVBQUUsS0FBSyxPQUFPO0FBRWhFLFFBQUksV0FBVyxLQUFNLE9BQU0sR0FBRyxJQUFJLEtBQUs7QUFFdkMsVUFBTSxPQUFPO0FBRWIsV0FBTyxlQUFlLE1BQU0sS0FBSztBQUFBLE1BQy9CLFlBQVksS0FBSyxlQUFlO0FBQUEsTUFDaEMsTUFBaUI7QUFDZixlQUFPO0FBQUEsVUFDTDtBQUFBLFVBQ0E7QUFBQSxVQUNBLE9BQU8sS0FBSyxPQUFPLGFBQ2YsS0FBSyxJQUFJLElBQUksSUFDYixPQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUc7QUFBQSxRQUNoQztBQUFBLE1BQ0Y7QUFBQSxNQUNBLElBQUksTUFBTTtBQUNSLFlBQUksS0FBSyxRQUFRLE9BQU87QUFDdEIsZ0JBQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCO0FBQUEsUUFDaEQ7QUFFQSxlQUFPLE1BQU0sS0FBSyxNQUFNLEtBQUssR0FBRztBQUFBLE1BQ2xDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU87QUFDVDtBQUVBLE1BQU0sR0FBRyxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=
|