@expressive/mvc 0.53.6 → 0.54.1

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,182 +1,189 @@
1
- /** Placeholder event determines if model is initialized or not. */
2
1
  const onReady = () => null;
3
- const LISTENERS = new WeakMap();
4
- /** Events pending for a given object. */
5
- const PENDING = new WeakMap();
6
- /** Update register. */
7
- const PENDING_KEYS = new WeakMap();
8
- /** Central event dispatch. Bunches all updates to occur at same time. */
9
- const DISPATCH = new Set();
10
- const OBSERVER = new WeakMap();
2
+ const LISTENERS = /* @__PURE__ */ new WeakMap();
3
+ const PENDING = /* @__PURE__ */ new WeakMap();
4
+ const PENDING_KEYS = /* @__PURE__ */ new WeakMap();
5
+ const DISPATCH = /* @__PURE__ */ new Set();
6
+ const OBSERVER = /* @__PURE__ */ new WeakMap();
11
7
  function addListener(subject, callback, select) {
12
- let listeners = LISTENERS.get(subject);
13
- if (!listeners)
14
- LISTENERS.set(subject, listeners = new Map([[onReady, undefined]]));
15
- const filter = select === undefined ? undefined : new Set([select]);
16
- if (!listeners.has(onReady) && !filter)
17
- callback.call(subject, true, subject);
18
- listeners.set(callback, filter);
19
- return () => listeners.delete(callback);
8
+ let listeners = LISTENERS.get(subject);
9
+ if (!listeners)
10
+ LISTENERS.set(subject, listeners = /* @__PURE__ */ new Map([[onReady, void 0]]));
11
+ const filter = select === void 0 ? void 0 : /* @__PURE__ */ new Set([select]);
12
+ if (!listeners.has(onReady) && !filter)
13
+ callback.call(subject, true, subject);
14
+ listeners.set(callback, filter);
15
+ return () => listeners.delete(callback);
20
16
  }
21
17
  function emit(model, key) {
22
- const listeners = LISTENERS.get(model);
23
- const notReady = listeners.has(onReady);
24
- if (key === true && !notReady)
25
- return;
26
- let pending = PENDING.get(model);
27
- if (pending) {
28
- pending.add(key);
29
- return;
30
- }
31
- PENDING.set(model, pending = new Set(notReady ? [true, key] : [key]));
32
- for (const key of pending)
33
- for (const [callback, filter] of listeners)
34
- if (!filter || filter.has(key)) {
35
- const after = callback.call(model, key, model);
36
- if (after)
37
- enqueue(after);
38
- else if (after === null)
39
- listeners.delete(callback);
40
- }
41
- if (key === null)
42
- listeners.clear();
43
- PENDING.delete(model);
18
+ const listeners = LISTENERS.get(model);
19
+ const notReady = listeners.has(onReady);
20
+ if (key === true && !notReady)
21
+ return;
22
+ let pending2 = PENDING.get(model);
23
+ if (pending2) {
24
+ pending2.add(key);
25
+ return;
26
+ }
27
+ PENDING.set(model, pending2 = new Set(notReady ? [true, key] : [key]));
28
+ for (const key2 of pending2)
29
+ for (const [callback, filter] of listeners)
30
+ if (!filter || filter.has(key2)) {
31
+ const after = callback.call(model, key2, model);
32
+ if (after)
33
+ enqueue(after);
34
+ else if (after === null)
35
+ listeners.delete(callback);
36
+ }
37
+ if (key === null)
38
+ listeners.clear();
39
+ PENDING.delete(model);
44
40
  }
45
41
  function event(subject, key, silent) {
46
- if (key === null)
47
- return emit(subject, key);
48
- if (!key)
49
- return emit(subject, true);
50
- let pending = PENDING_KEYS.get(subject);
51
- if (!pending) {
52
- PENDING_KEYS.set(subject, pending = new Set());
53
- if (!silent)
54
- enqueue(() => {
55
- emit(subject, false);
56
- PENDING_KEYS.delete(subject);
57
- });
58
- }
59
- pending.add(key);
42
+ if (key === null)
43
+ return emit(subject, key);
44
+ if (!key)
45
+ return emit(subject, true);
46
+ let pending2 = PENDING_KEYS.get(subject);
47
+ if (!pending2) {
48
+ PENDING_KEYS.set(subject, pending2 = /* @__PURE__ */ new Set());
60
49
  if (!silent)
61
- emit(subject, key);
50
+ enqueue(() => {
51
+ emit(subject, false);
52
+ PENDING_KEYS.delete(subject);
53
+ });
54
+ }
55
+ pending2.add(key);
56
+ if (!silent)
57
+ emit(subject, key);
62
58
  }
63
59
  function pending(subject) {
64
- if (PENDING_KEYS.has(subject))
65
- return {
66
- then: (res) => new Promise(res => {
67
- const remove = addListener(subject, key => {
68
- if (key !== true) {
69
- remove();
70
- return res.bind(null, Array.from(PENDING_KEYS.get(subject)));
71
- }
72
- });
73
- }).then(res)
74
- };
60
+ if (PENDING_KEYS.has(subject))
61
+ return {
62
+ then: (res) => new Promise((res2) => {
63
+ const remove = addListener(subject, (key) => {
64
+ if (key !== true) {
65
+ remove();
66
+ return res2.bind(null, Array.from(PENDING_KEYS.get(subject)));
67
+ }
68
+ });
69
+ }).then(res)
70
+ };
75
71
  }
76
72
  function enqueue(eventHandler) {
77
- if (!DISPATCH.size)
78
- setTimeout(() => {
79
- DISPATCH.forEach(event => {
80
- try {
81
- event();
82
- }
83
- catch (err) {
84
- console.error(err);
85
- }
86
- });
87
- DISPATCH.clear();
88
- }, 0);
89
- DISPATCH.add(eventHandler);
73
+ if (!DISPATCH.size)
74
+ setTimeout(() => {
75
+ DISPATCH.forEach((event2) => {
76
+ try {
77
+ event2();
78
+ } catch (err) {
79
+ console.error(err);
80
+ }
81
+ });
82
+ DISPATCH.clear();
83
+ }, 0);
84
+ DISPATCH.add(eventHandler);
90
85
  }
91
86
  function createProxy(from, observer) {
92
- const proxy = Object.create(from);
93
- OBSERVER.set(proxy, observer);
94
- return proxy;
87
+ const proxy = Object.create(from);
88
+ OBSERVER.set(proxy, observer);
89
+ return proxy;
95
90
  }
96
91
  function watch(from, key, value) {
97
- const access = OBSERVER.get(from);
98
- return access ? access(from, key, value) : value;
92
+ const access = OBSERVER.get(from);
93
+ return access ? access(from, key, value) : value;
99
94
  }
100
95
  function createEffect(target, callback, argument) {
101
- const listeners = LISTENERS.get(target);
102
- let unset;
103
- let reset;
104
- function invoke() {
105
- let stale;
106
- const subscriber = createProxy(target, access);
107
- LISTENERS.set(subscriber, listeners);
108
- function onUpdate() {
109
- if (stale)
110
- return null;
111
- stale = true;
112
- if (reset && unset) {
113
- unset(true);
114
- unset = undefined;
115
- }
116
- return reset;
117
- }
118
- function access(from, key, value) {
119
- if (value === undefined && argument)
120
- throw new Error(`${from}.${key} is required in this context.`);
121
- const listeners = LISTENERS.get(from);
122
- let listener = listeners.get(onUpdate);
123
- if (!listener)
124
- listeners.set(onUpdate, listener = new Set);
125
- listener.add(key);
126
- const nested = LISTENERS.get(value);
127
- if (nested)
128
- LISTENERS.set(value = createProxy(value, access), nested);
129
- return value;
130
- }
131
- try {
132
- const ctx = context(argument === false);
133
- const ret = callback.call(subscriber, subscriber);
134
- const flush = ctx();
135
- reset = ret === null ? null : invoke;
136
- unset = key => {
137
- if (typeof ret == "function")
138
- ret(key);
139
- flush();
140
- };
141
- }
142
- catch (err) {
143
- if (err instanceof Promise) {
144
- reset = undefined;
145
- err.then(invoke);
146
- }
147
- else
148
- throw err;
149
- }
96
+ const listeners = LISTENERS.get(target);
97
+ let unset;
98
+ let reset;
99
+ function invoke() {
100
+ let stale;
101
+ const subscriber = createProxy(target, access);
102
+ LISTENERS.set(subscriber, listeners);
103
+ function onUpdate() {
104
+ if (stale)
105
+ return null;
106
+ stale = true;
107
+ if (reset && unset) {
108
+ unset(true);
109
+ unset = void 0;
110
+ }
111
+ return reset;
112
+ }
113
+ function access(from, key, value) {
114
+ if (value === void 0 && argument)
115
+ throw new Error(`${from}.${key} is required in this context.`);
116
+ const listeners2 = LISTENERS.get(from);
117
+ let listener = listeners2.get(onUpdate);
118
+ if (!listener)
119
+ listeners2.set(onUpdate, listener = /* @__PURE__ */ new Set());
120
+ listener.add(key);
121
+ const nested = LISTENERS.get(value);
122
+ if (nested)
123
+ LISTENERS.set(
124
+ value = createProxy(value, access),
125
+ nested
126
+ );
127
+ return value;
150
128
  }
151
- function cleanup() {
152
- if (unset)
153
- unset(false);
154
- reset = null;
129
+ try {
130
+ const ctx = context(argument === false);
131
+ const ret = callback.call(subscriber, subscriber);
132
+ const flush = ctx();
133
+ reset = ret === null ? null : invoke;
134
+ unset = (key) => {
135
+ if (typeof ret == "function")
136
+ ret(key);
137
+ flush();
138
+ };
139
+ } catch (err) {
140
+ if (err instanceof Promise) {
141
+ reset = void 0;
142
+ err.then(invoke);
143
+ } else
144
+ throw err;
155
145
  }
156
- ;
157
- if (EffectContext && argument !== false)
158
- EffectContext.add(cleanup);
159
- addListener(target, key => {
160
- if (key === true)
161
- invoke();
162
- else if (!reset)
163
- return reset;
164
- if (key === null && unset)
165
- unset(null);
166
- });
167
- return cleanup;
146
+ }
147
+ function cleanup() {
148
+ if (unset)
149
+ unset(false);
150
+ reset = null;
151
+ }
152
+ ;
153
+ if (EffectContext && argument !== false)
154
+ EffectContext.add(cleanup);
155
+ addListener(target, (key) => {
156
+ if (key === true)
157
+ invoke();
158
+ else if (!reset)
159
+ return reset;
160
+ if (key === null && unset)
161
+ unset(null);
162
+ });
163
+ return cleanup;
168
164
  }
169
165
  let EffectContext;
170
- export function context(ignore) {
171
- if (ignore)
172
- return () => () => { };
173
- const current = EffectContext;
174
- const ctx = EffectContext = new Set;
166
+ function context(ignore) {
167
+ if (ignore)
168
+ return () => () => {
169
+ };
170
+ const current = EffectContext;
171
+ const ctx = EffectContext = /* @__PURE__ */ new Set();
172
+ return () => {
173
+ EffectContext = current;
175
174
  return () => {
176
- EffectContext = current;
177
- return () => {
178
- ctx.forEach(fn => fn());
179
- };
175
+ ctx.forEach((fn) => fn());
180
176
  };
177
+ };
181
178
  }
182
- export { addListener, createEffect, createProxy, event, PENDING_KEYS, pending, watch };
179
+ export {
180
+ PENDING_KEYS,
181
+ addListener,
182
+ context,
183
+ createEffect,
184
+ createProxy,
185
+ event,
186
+ pending,
187
+ watch
188
+ };
189
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbnRyb2wudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTW9kZWwgfSBmcm9tIFwiLi9tb2RlbFwiO1xuXG4vKipcbiAqIFVwZGF0ZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqIFxuICogQHBhcmFtIGtleSAtXG4gKiAgIC0gYHN0cmluZ2AgLSBwcm9wZXJ0eSB3aGljaCBoYXMgdXBkYXRlZC5cbiAqICAgLSBgZmFsc2VgIC0gYSBub3JtYWwgdXBkYXRlIGhhcyBjb21wbGV0ZWQuXG4gKiAgIC0gYHRydWVgIC0gaW5pdGlhbCBldmVudDsgaW5zdGFuY2UgaXMgcmVhZHkuXG4gKiAgIC0gYG51bGxgIC0gdGVybWluYWwgZXZlbnQ7IGluc3RhbmNlIGlzIGV4cGlyZWQuXG4gKiBAcGFyYW0gc291cmNlIC0gSW5zdGFuY2Ugb2YgTW9kZWwgZm9yIHdoaWNoIHVwZGF0ZSBoYXMgb2NjdXJlZC5cbiAqL1xudHlwZSBPblVwZGF0ZTxUIGV4dGVuZHMgTW9kZWwgPSBhbnk+ID0gXG4gICh0aGlzOiBULCBrZXk6IHVua25vd24sIHNvdXJjZTogVCkgPT4gKCgpID0+IHZvaWQpIHwgbnVsbCB8IHZvaWQ7XG5cbnR5cGUgT25BY2Nlc3M8VCBleHRlbmRzIE1vZGVsID0gYW55LCBSID0gdW5rbm93bj4gPVxuICAoZnJvbTogVCwga2V5OiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBSKSA9PiB1bmtub3duO1xuXG50eXBlIEVmZmVjdDxUIGV4dGVuZHMgTW9kZWw+ID0gKHRoaXM6IFQsIHByb3h5OiBUKSA9PlxuICAoKHVwZGF0ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQpIHwgUHJvbWlzZTx2b2lkPiB8IG51bGwgfCB2b2lkO1xuXG50eXBlIEV2ZW50ID0gbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IGJvb2xlYW4gfCBzeW1ib2w7XG5cbi8qKiBQbGFjZWhvbGRlciBldmVudCBkZXRlcm1pbmVzIGlmIG1vZGVsIGlzIGluaXRpYWxpemVkIG9yIG5vdC4gKi9cbmNvbnN0IG9uUmVhZHkgPSAoKSA9PiBudWxsO1xuXG5jb25zdCBMSVNURU5FUlMgPSBuZXcgV2Vha01hcDxNb2RlbCwgTWFwPE9uVXBkYXRlLCBTZXQ8RXZlbnQ+IHwgdW5kZWZpbmVkPj4oKTtcblxuLyoqIEV2ZW50cyBwZW5kaW5nIGZvciBhIGdpdmVuIG9iamVjdC4gKi9cbmNvbnN0IFBFTkRJTkcgPSBuZXcgV2Vha01hcDxNb2RlbCwgU2V0PEV2ZW50Pj4oKTtcblxuLyoqIFVwZGF0ZSByZWdpc3Rlci4gKi9cbmNvbnN0IFBFTkRJTkdfS0VZUyA9IG5ldyBXZWFrTWFwPE1vZGVsLCBTZXQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPj4oKTtcblxuLyoqIENlbnRyYWwgZXZlbnQgZGlzcGF0Y2guIEJ1bmNoZXMgYWxsIHVwZGF0ZXMgdG8gb2NjdXIgYXQgc2FtZSB0aW1lLiAqL1xuY29uc3QgRElTUEFUQ0ggPSBuZXcgU2V0PCgpID0+IHZvaWQ+KCk7XG5cbmNvbnN0IE9CU0VSVkVSID0gbmV3IFdlYWtNYXA8TW9kZWwsIE9uQWNjZXNzPigpO1xuXG5mdW5jdGlvbiBhZGRMaXN0ZW5lcjxUIGV4dGVuZHMgTW9kZWw+KHN1YmplY3Q6IFQsIGNhbGxiYWNrOiBPblVwZGF0ZTxUPiwgc2VsZWN0PzogRXZlbnQpe1xuICBsZXQgbGlzdGVuZXJzID0gTElTVEVORVJTLmdldChzdWJqZWN0KSE7XG5cbiAgaWYoIWxpc3RlbmVycylcbiAgICBMSVNURU5FUlMuc2V0KHN1YmplY3QsIGxpc3RlbmVycyA9IG5ldyBNYXAoW1tvblJlYWR5LCB1bmRlZmluZWRdXSkpO1xuXG4gIGNvbnN0IGZpbHRlciA9IHNlbGVjdCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbmV3IFNldChbc2VsZWN0XSk7XG5cbiAgaWYoIWxpc3RlbmVycy5oYXMob25SZWFkeSkgJiYgIWZpbHRlcilcbiAgICBjYWxsYmFjay5jYWxsKHN1YmplY3QsIHRydWUsIHN1YmplY3QpO1xuXG4gIGxpc3RlbmVycy5zZXQoY2FsbGJhY2ssIGZpbHRlcik7XG5cbiAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBlbWl0KG1vZGVsOiBNb2RlbCwga2V5OiBFdmVudCk6IHZvaWQge1xuICBjb25zdCBsaXN0ZW5lcnMgPSBMSVNURU5FUlMuZ2V0KG1vZGVsKSE7XG4gIGNvbnN0IG5vdFJlYWR5ID0gbGlzdGVuZXJzLmhhcyhvblJlYWR5KTtcblxuICBpZihrZXkgPT09IHRydWUgJiYgIW5vdFJlYWR5KVxuICAgIHJldHVybjtcblxuICBsZXQgcGVuZGluZyA9IFBFTkRJTkcuZ2V0KG1vZGVsKTtcblxuICBpZihwZW5kaW5nKXtcbiAgICBwZW5kaW5nLmFkZChrZXkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIFBFTkRJTkcuc2V0KG1vZGVsLCBwZW5kaW5nID0gbmV3IFNldChub3RSZWFkeSA/IFt0cnVlLCBrZXldIDogW2tleV0pKTtcblxuICBmb3IoY29uc3Qga2V5IG9mIHBlbmRpbmcpXG4gICAgZm9yKGNvbnN0IFtjYWxsYmFjaywgZmlsdGVyXSBvZiBsaXN0ZW5lcnMpXG4gICAgICBpZighZmlsdGVyIHx8IGZpbHRlci5oYXMoa2V5KSl7XG4gICAgICAgIGNvbnN0IGFmdGVyID0gY2FsbGJhY2suY2FsbChtb2RlbCwga2V5LCBtb2RlbCk7XG5cbiAgICAgICAgaWYoYWZ0ZXIpXG4gICAgICAgICAgZW5xdWV1ZShhZnRlcik7XG5cbiAgICAgICAgZWxzZSBpZihhZnRlciA9PT0gbnVsbClcbiAgICAgICAgICBsaXN0ZW5lcnMuZGVsZXRlKGNhbGxiYWNrKTtcbiAgICAgIH1cblxuICBpZihrZXkgPT09IG51bGwpXG4gICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gIFxuICBQRU5ESU5HLmRlbGV0ZShtb2RlbCk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50KFxuICBzdWJqZWN0OiBNb2RlbCxcbiAga2V5Pzogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCxcbiAgc2lsZW50PzogYm9vbGVhbil7XG5cbiAgaWYoa2V5ID09PSBudWxsKVxuICAgIHJldHVybiBlbWl0KHN1YmplY3QsIGtleSk7XG5cbiAgaWYoIWtleSlcbiAgICByZXR1cm4gZW1pdChzdWJqZWN0LCB0cnVlKTtcblxuICBsZXQgcGVuZGluZyA9IFBFTkRJTkdfS0VZUy5nZXQoc3ViamVjdCk7XG5cbiAgaWYoIXBlbmRpbmcpe1xuICAgIFBFTkRJTkdfS0VZUy5zZXQoc3ViamVjdCwgcGVuZGluZyA9IG5ldyBTZXQoKSk7XG5cbiAgICBpZighc2lsZW50KVxuICAgICAgZW5xdWV1ZSgoKSA9PiB7XG4gICAgICAgIGVtaXQoc3ViamVjdCwgZmFsc2UpO1xuICAgICAgICBQRU5ESU5HX0tFWVMuZGVsZXRlKHN1YmplY3QpXG4gICAgICB9KVxuICB9XG5cbiAgcGVuZGluZy5hZGQoa2V5KTtcblxuICBpZighc2lsZW50KVxuICAgIGVtaXQoc3ViamVjdCwga2V5KTtcbn1cblxuZnVuY3Rpb24gcGVuZGluZzxUIGV4dGVuZHMgTW9kZWw+KHN1YmplY3Q6IFQpe1xuICBpZihQRU5ESU5HX0tFWVMuaGFzKHN1YmplY3QpKVxuICAgIHJldHVybiA8UHJvbWlzZUxpa2U8TW9kZWwuRXZlbnQ8VD5bXT4+IHtcbiAgICAgIHRoZW46IChyZXMpID0+IG5ldyBQcm9taXNlPGFueT4ocmVzID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gYWRkTGlzdGVuZXIoc3ViamVjdCwga2V5ID0+IHtcbiAgICAgICAgICBpZihrZXkgIT09IHRydWUpe1xuICAgICAgICAgICAgcmVtb3ZlKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmJpbmQobnVsbCwgQXJyYXkuZnJvbShQRU5ESU5HX0tFWVMuZ2V0KHN1YmplY3QpISkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KS50aGVuKHJlcylcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVucXVldWUoZXZlbnRIYW5kbGVyOiAoKCkgPT4gdm9pZCkpe1xuICBpZighRElTUEFUQ0guc2l6ZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIERJU1BBVENILmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGV2ZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2goZXJyKXtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgRElTUEFUQ0guY2xlYXIoKTtcbiAgICB9LCAwKTtcblxuICBESVNQQVRDSC5hZGQoZXZlbnRIYW5kbGVyKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJveHk8VCBleHRlbmRzIE1vZGVsPihmcm9tOiBULCBvYnNlcnZlcjogT25BY2Nlc3M8VD4pe1xuICBjb25zdCBwcm94eSA9IE9iamVjdC5jcmVhdGUoZnJvbSkgYXMgVDtcbiAgT0JTRVJWRVIuc2V0KHByb3h5LCBvYnNlcnZlcik7XG4gIHJldHVybiBwcm94eTtcbn1cblxuZnVuY3Rpb24gd2F0Y2goZnJvbTogYW55LCBrZXk6IHN0cmluZyB8IG51bWJlciwgdmFsdWU/OiBhbnkpe1xuICBjb25zdCBhY2Nlc3MgPSBPQlNFUlZFUi5nZXQoZnJvbSk7XG4gIHJldHVybiBhY2Nlc3MgPyBhY2Nlc3MoZnJvbSwga2V5LCB2YWx1ZSkgOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzaWRlLWVmZmVjdCB3aGljaCB3aWxsIHVwZGF0ZSB3aGVuZXZlciB2YWx1ZXMgYWNjZXNzZWQgY2hhbmdlLlxuICogQ2FsbGJhY2sgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFuZCB3aGVuZXZlciB2YWx1ZXMgYXJlIHN0YWxlLlxuICogXG4gKiBAcGFyYW0gdGFyZ2V0IC0gSW5zdGFuY2Ugb2YgTW9kZWwgdG8gb2JzZXJ2ZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIHZhbHVlcyBjaGFuZ2UuXG4gKiBAcGFyYW0gcmVxdWlyZVZhbHVlcyAtIElmIGB0cnVlYCB3aWxsIHRocm93IGlmIGFjY2Vzc2luZyBhIHZhbHVlIHdoaWNoIGlzIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZmZlY3Q8VCBleHRlbmRzIE1vZGVsPih0YXJnZXQ6IFQsIGNhbGxiYWNrOiBFZmZlY3Q8UmVxdWlyZWQ8VD4+LCByZXF1aXJlVmFsdWVzOiB0cnVlKTogKCkgPT4gdm9pZDtcbmZ1bmN0aW9uIGNyZWF0ZUVmZmVjdDxUIGV4dGVuZHMgTW9kZWw+KHRhcmdldDogVCwgY2FsbGJhY2s6IEVmZmVjdDxUPiwgcmVjdXJzaXZlPzogYm9vbGVhbik6ICgpID0+IHZvaWQ7XG5mdW5jdGlvbiBjcmVhdGVFZmZlY3Q8VCBleHRlbmRzIE1vZGVsPih0YXJnZXQ6IFQsIGNhbGxiYWNrOiBFZmZlY3Q8VD4sIGFyZ3VtZW50PzogYm9vbGVhbil7XG4gIGNvbnN0IGxpc3RlbmVycyA9IExJU1RFTkVSUy5nZXQodGFyZ2V0KSE7XG5cbiAgbGV0IHVuc2V0OiAoKHVwZGF0ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBsZXQgcmVzZXQ6ICgoKSA9PiB2b2lkKSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gaW52b2tlKCl7XG4gICAgbGV0IHN0YWxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc3Vic2NyaWJlciA9IGNyZWF0ZVByb3h5KHRhcmdldCwgYWNjZXNzKTtcblxuICAgIExJU1RFTkVSUy5zZXQoc3Vic2NyaWJlciwgbGlzdGVuZXJzKTtcblxuICAgIGZ1bmN0aW9uIG9uVXBkYXRlKCkge1xuICAgICAgaWYgKHN0YWxlKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgc3RhbGUgPSB0cnVlO1xuXG4gICAgICBpZiAocmVzZXQgJiYgdW5zZXQpIHtcbiAgICAgICAgdW5zZXQodHJ1ZSk7XG4gICAgICAgIHVuc2V0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWNjZXNzKGZyb206IE1vZGVsLCBrZXk6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IGFueSkge1xuICAgICAgaWYodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBhcmd1bWVudClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zyb219LiR7a2V5fSBpcyByZXF1aXJlZCBpbiB0aGlzIGNvbnRleHQuYCk7XG5cbiAgICAgIGNvbnN0IGxpc3RlbmVycyA9IExJU1RFTkVSUy5nZXQoZnJvbSkhO1xuICAgICAgbGV0IGxpc3RlbmVyID0gbGlzdGVuZXJzLmdldChvblVwZGF0ZSk7XG5cbiAgICAgIGlmKCFsaXN0ZW5lcilcbiAgICAgICAgbGlzdGVuZXJzLnNldChvblVwZGF0ZSwgbGlzdGVuZXIgPSBuZXcgU2V0KTtcblxuICAgICAgbGlzdGVuZXIuYWRkKGtleSk7XG5cbiAgICAgIGNvbnN0IG5lc3RlZCA9IExJU1RFTkVSUy5nZXQodmFsdWUpO1xuXG4gICAgICBpZihuZXN0ZWQpXG4gICAgICAgIExJU1RFTkVSUy5zZXQoXG4gICAgICAgICAgdmFsdWUgPSBjcmVhdGVQcm94eSh2YWx1ZSwgYWNjZXNzKSxcbiAgICAgICAgICBuZXN0ZWRcbiAgICAgICAgKTtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjdHggPSBjb250ZXh0KGFyZ3VtZW50ID09PSBmYWxzZSlcbiAgICAgIGNvbnN0IHJldCA9IGNhbGxiYWNrLmNhbGwoc3Vic2NyaWJlciwgc3Vic2NyaWJlcik7XG4gICAgICBjb25zdCBmbHVzaCA9IGN0eCgpO1xuXG4gICAgICByZXNldCA9IHJldCA9PT0gbnVsbCA/IG51bGwgOiBpbnZva2U7XG4gICAgICB1bnNldCA9IGtleSA9PiB7XG4gICAgICAgIGlmKHR5cGVvZiByZXQgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHJldChrZXkpO1xuXG4gICAgICAgIGZsdXNoKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGVycil7XG4gICAgICBpZihlcnIgaW5zdGFuY2VvZiBQcm9taXNlKXtcbiAgICAgICAgcmVzZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGVyci50aGVuKGludm9rZSk7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGVhbnVwKCl7XG4gICAgaWYodW5zZXQpXG4gICAgICB1bnNldChmYWxzZSk7XG5cbiAgICByZXNldCA9IG51bGw7XG4gIH07XG5cbiAgaWYoRWZmZWN0Q29udGV4dCAmJiBhcmd1bWVudCAhPT0gZmFsc2UpXG4gICAgRWZmZWN0Q29udGV4dC5hZGQoY2xlYW51cCk7XG5cbiAgYWRkTGlzdGVuZXIodGFyZ2V0LCBrZXkgPT4ge1xuICAgIGlmKGtleSA9PT0gdHJ1ZSlcbiAgICAgIGludm9rZSgpO1xuXG4gICAgZWxzZSBpZighcmVzZXQpXG4gICAgICByZXR1cm4gcmVzZXQ7XG5cbiAgICBpZihrZXkgPT09IG51bGwgJiYgdW5zZXQpXG4gICAgICB1bnNldChudWxsKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gY2xlYW51cDtcbn1cblxubGV0IEVmZmVjdENvbnRleHQ6IFNldDwoKSA9PiB2b2lkPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHQoaWdub3JlPzogYm9vbGVhbil7XG4gIGlmKGlnbm9yZSlcbiAgICByZXR1cm4gKCkgPT4gKCkgPT4ge307XG5cbiAgY29uc3QgY3VycmVudCA9IEVmZmVjdENvbnRleHQ7XG4gIGNvbnN0IGN0eCA9IEVmZmVjdENvbnRleHQgPSBuZXcgU2V0O1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgRWZmZWN0Q29udGV4dCA9IGN1cnJlbnQ7XG4gICAgXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGN0eC5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge1xuICBhZGRMaXN0ZW5lcixcbiAgY3JlYXRlRWZmZWN0LFxuICBjcmVhdGVQcm94eSxcbiAgZXZlbnQsXG4gIE9uVXBkYXRlLFxuICBQRU5ESU5HX0tFWVMsXG4gIHBlbmRpbmcsXG4gIHdhdGNoXG59Il0sCiAgIm1hcHBpbmdzIjogIkFBd0JBLE1BQU0sVUFBVSxNQUFNO0FBRXRCLE1BQU0sWUFBWSxvQkFBSSxRQUFzRDtBQUc1RSxNQUFNLFVBQVUsb0JBQUksUUFBMkI7QUFHL0MsTUFBTSxlQUFlLG9CQUFJLFFBQThDO0FBR3ZFLE1BQU0sV0FBVyxvQkFBSSxJQUFnQjtBQUVyQyxNQUFNLFdBQVcsb0JBQUksUUFBeUI7QUFFOUMsU0FBUyxZQUE2QixTQUFZLFVBQXVCLFFBQWU7QUFDdEYsTUFBSSxZQUFZLFVBQVUsSUFBSSxPQUFPO0FBRXJDLE1BQUcsQ0FBQztBQUNGLGNBQVUsSUFBSSxTQUFTLFlBQVksb0JBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxNQUFTLENBQUMsQ0FBQyxDQUFDO0FBRXBFLFFBQU0sU0FBUyxXQUFXLFNBQVksU0FBWSxvQkFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0FBRWxFLE1BQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxLQUFLLENBQUM7QUFDN0IsYUFBUyxLQUFLLFNBQVMsTUFBTSxPQUFPO0FBRXRDLFlBQVUsSUFBSSxVQUFVLE1BQU07QUFFOUIsU0FBTyxNQUFNLFVBQVUsT0FBTyxRQUFRO0FBQ3hDO0FBRUEsU0FBUyxLQUFLLE9BQWMsS0FBa0I7QUFDNUMsUUFBTSxZQUFZLFVBQVUsSUFBSSxLQUFLO0FBQ3JDLFFBQU0sV0FBVyxVQUFVLElBQUksT0FBTztBQUV0QyxNQUFHLFFBQVEsUUFBUSxDQUFDO0FBQ2xCO0FBRUYsTUFBSUEsV0FBVSxRQUFRLElBQUksS0FBSztBQUUvQixNQUFHQSxVQUFRO0FBQ1QsSUFBQUEsU0FBUSxJQUFJLEdBQUc7QUFDZjtBQUFBLEVBQ0Y7QUFFQSxVQUFRLElBQUksT0FBT0EsV0FBVSxJQUFJLElBQUksV0FBVyxDQUFDLE1BQU0sR0FB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LCtCQUErQjtBQUUvRCxZQUFNQyxhQUFZLFVBQVUsSUFBSSxJQUFJO0FBQ3BDLFVBQUksV0FBV0EsV0FBVSxJQUFJLFFBQVE7QUFFckMsVUFBRyxDQUFDO0FBQ0YsUUFBQUEsV0FBVSxJQUFJLFVBQVUsV0FBVyxvQkFBSSxLQUFHO0FBRTVDLGVBQVMsSUFBSSxHQUFHO0FBRWhCLFlBQU0sU0FBUyxVQUFVLElBQUksS0FBSztBQUVsQyxVQUFHO0FBQ0Qsa0JBQVU7QUFBQSxVQUNSLFFBQVEsWUFBWSxPQUFPLE1BQU07QUFBQSxVQUNqQztBQUFBLFFBQ0Y7QUFFRixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUk7QUFDRixZQUFNLE1BQU0sUUFBUSxhQUFhLEtBQUs7QUFDdEMsWUFBTSxNQUFNLFNBQVMsS0FBSyxZQUFZLFVBQVU7QUFDaEQsWUFBTSxRQUFRLElBQUk7QUFFbEIsY0FBUSxRQUFRLE9BQU8sT0FBTztBQUM5QixjQUFRLFNBQU87QUFDYixZQUFHLE9BQU8sT0FBTztBQUNmLGNBQUksR0FBRztBQUVULGNBQU07QUFBQSxNQUNSO0FBQUEsSUFDRixTQUNNLEtBQUk7QUFDUixVQUFHLGVBQWUsU0FBUTtBQUN4QixnQkFBUTtBQUNSLFlBQUksS0FBSyxNQUFNO0FBQUEsTUFDakI7QUFFRSxjQUFNO0FBQUEsSUFDVjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLFVBQVM7QUFDaEIsUUFBRztBQUNELFlBQU0sS0FBSztBQUViLFlBQVE7QUFBQSxFQUNWO0FBQUM7QUFFRCxNQUFHLGlCQUFpQixhQUFhO0FBQy9CLGtCQUFjLElBQUksT0FBTztBQUUzQixjQUFZLFFBQVEsU0FBTztBQUN6QixRQUFHLFFBQVE7QUFDVCxhQUFPO0FBQUEsYUFFRCxDQUFDO0FBQ1AsYUFBTztBQUVULFFBQUcsUUFBUSxRQUFRO0FBQ2pCLFlBQU0sSUFBSTtBQUFBLEVBQ2QsQ0FBQztBQUVELFNBQU87QUFDVDtBQUVBLElBQUk7QUFFRyxTQUFTLFFBQVEsUUFBaUI7QUFDdkMsTUFBRztBQUNELFdBQU8sTUFBTSxNQUFNO0FBQUEsSUFBQztBQUV0QixRQUFNLFVBQVU7QUFDaEIsUUFBTSxNQUFNLGdCQUFnQixvQkFBSTtBQUVoQyxTQUFPLE1BQU07QUFDWCxvQkFBZ0I7QUFFaEIsV0FBTyxNQUFNO0FBQ1gsVUFBSSxRQUFRLFFBQU0sR0FBRyxDQUFDO0FBQUEsSUFDeEI7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbInBlbmRpbmciLCAia2V5IiwgInJlcyIsICJldmVudCIsICJsaXN0ZW5lcnMiXQp9Cg==
package/dist/esm/index.js CHANGED
@@ -1,8 +1,22 @@
1
- export { get } from './instruction/get';
2
- export { ref } from './instruction/ref';
3
- export { set } from './instruction/set';
4
- export { use } from './instruction/use';
5
- export { has } from './instruction/has';
6
- export { Model, Model as default } from './model';
7
- export { createEffect, createProxy, addListener } from './control';
8
- export { Context } from './context';
1
+ import { get } from "./instruction/get";
2
+ import { ref } from "./instruction/ref";
3
+ import { set } from "./instruction/set";
4
+ import { use } from "./instruction/use";
5
+ import { has } from "./instruction/has";
6
+ import { Model, Model as Model2 } from "./model";
7
+ import { createEffect, createProxy, addListener } from "./control";
8
+ import { Context } from "./context";
9
+ export {
10
+ Context,
11
+ Model,
12
+ addListener,
13
+ createEffect,
14
+ createProxy,
15
+ Model2 as default,
16
+ get,
17
+ has,
18
+ ref,
19
+ set,
20
+ use
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBnZXQgfSBmcm9tICcuL2luc3RydWN0aW9uL2dldCc7XG5leHBvcnQgeyByZWYgfSBmcm9tICcuL2luc3RydWN0aW9uL3JlZic7XG5leHBvcnQgeyBzZXQgfSBmcm9tICcuL2luc3RydWN0aW9uL3NldCc7XG5leHBvcnQgeyB1c2UgfSBmcm9tICcuL2luc3RydWN0aW9uL3VzZSc7XG5leHBvcnQgeyBoYXMgfSBmcm9tICcuL2luc3RydWN0aW9uL2hhcyc7XG5cbmV4cG9ydCB7IE1vZGVsLCBNb2RlbCBhcyBkZWZhdWx0IH0gZnJvbSAnLi9tb2RlbCc7XG5leHBvcnQgeyBjcmVhdGVFZmZlY3QsIGNyZWF0ZVByb3h5LCBhZGRMaXN0ZW5lciB9IGZyb20gJy4vY29udHJvbCc7XG5leHBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JzsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLFdBQVc7QUFDcEIsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsV0FBVztBQUNwQixTQUFTLFdBQVc7QUFDcEIsU0FBUyxXQUFXO0FBRXBCLFNBQVMsT0FBZ0IsU0FBVEEsY0FBd0I7QUFDeEMsU0FBUyxjQUFjLGFBQWEsbUJBQW1CO0FBQ3ZELFNBQVMsZUFBZTsiLAogICJuYW1lcyI6IFsiTW9kZWwiXQp9Cg==
@@ -1,87 +1,87 @@
1
- import { Context } from '../context';
2
- import { createEffect } from '../control';
3
- import { fetch, METHOD, Model, PARENT, event, update } from '../model';
4
- import { use } from './use';
5
- const STALE = new WeakSet();
1
+ import { Context } from "../context";
2
+ import { createEffect } from "../control";
3
+ import { fetch, METHOD, Model, PARENT, event, update } from "../model";
4
+ import { use } from "./use";
5
+ const STALE = /* @__PURE__ */ new WeakSet();
6
6
  function get(arg0, arg1) {
7
- return use((key, subject, state) => {
8
- if (typeof arg0 == "symbol")
9
- throw new Error(`Attempted to use an instruction result (probably use or get) as computed source for ${subject}.${key}. This is not allowed.`);
10
- if (Model.is(arg0)) {
11
- const hasParent = PARENT.get(subject);
12
- // TODO: notify on discovered context
13
- function assign(value) {
14
- if (typeof arg1 == "function")
15
- value.get(x => arg1(x, key));
16
- update(subject, key, value);
17
- }
18
- if (!hasParent) {
19
- if (arg1 === true)
20
- throw new Error(`${subject} may only exist as a child of type ${arg0}.`);
21
- Context.get(subject, (context) => {
22
- const model = context.get(arg0);
23
- if (model)
24
- assign(model);
25
- else if (arg1 !== false)
26
- throw new Error(`Required ${arg0} not found in context for ${subject}.`);
27
- });
28
- }
29
- else if (!arg0 || hasParent instanceof arg0)
30
- assign(hasParent);
31
- else
32
- throw new Error(`New ${subject} created as child of ${hasParent}, but must be instanceof ${arg0}.`);
33
- return {
34
- get: arg1 !== false
35
- };
36
- }
37
- let from = subject;
38
- if (arg0 instanceof Model) {
39
- from = arg0;
40
- }
41
- else {
42
- const fn = METHOD.get(arg0) || arg0;
43
- arg1 = ((p, k) => fn.call(p, k, p));
44
- }
45
- const source = resolve => resolve(from);
46
- const getter = arg1;
47
- let reset;
48
- let isAsync;
49
- let proxy;
50
- function connect(model) {
51
- reset = createEffect(model, current => {
52
- proxy = current;
53
- if (!(key in state) || STALE.delete(compute))
54
- compute(!reset);
55
- return (didUpdate) => {
56
- if (didUpdate) {
57
- STALE.add(compute);
58
- event(subject, key, true);
59
- }
60
- };
61
- }, false);
62
- }
63
- function compute(initial) {
64
- let next;
65
- try {
66
- next = getter.call(proxy, proxy, key);
67
- }
68
- catch (err) {
69
- console.warn(`An exception was thrown while ${initial ? "initializing" : "refreshing"} ${subject}.${key}.`);
70
- if (initial)
71
- throw err;
72
- console.error(err);
73
- }
74
- update(subject, key, next, !isAsync);
75
- }
76
- return () => {
77
- if (!proxy) {
78
- source(connect);
79
- isAsync = true;
80
- }
81
- if (STALE.delete(compute))
82
- compute();
83
- return fetch(subject, key, !proxy);
7
+ return use((key, subject, state) => {
8
+ if (typeof arg0 == "symbol")
9
+ throw new Error(`Attempted to use an instruction result (probably use or get) as computed source for ${subject}.${key}. This is not allowed.`);
10
+ if (Model.is(arg0)) {
11
+ let assign2 = function(value) {
12
+ if (typeof arg1 == "function")
13
+ value.get((x) => arg1(x, key));
14
+ update(subject, key, value);
15
+ };
16
+ var assign = assign2;
17
+ const hasParent = PARENT.get(subject);
18
+ if (!hasParent) {
19
+ if (arg1 === true)
20
+ throw new Error(`${subject} may only exist as a child of type ${arg0}.`);
21
+ Context.get(subject, (context) => {
22
+ const model = context.get(arg0);
23
+ if (model)
24
+ assign2(model);
25
+ else if (arg1 !== false)
26
+ throw new Error(`Required ${arg0} not found in context for ${subject}.`);
27
+ });
28
+ } else if (!arg0 || hasParent instanceof arg0)
29
+ assign2(hasParent);
30
+ else
31
+ throw new Error(`New ${subject} created as child of ${hasParent}, but must be instanceof ${arg0}.`);
32
+ return {
33
+ get: arg1 !== false
34
+ };
35
+ }
36
+ let from = subject;
37
+ if (arg0 instanceof Model) {
38
+ from = arg0;
39
+ } else {
40
+ const fn = METHOD.get(arg0) || arg0;
41
+ arg1 = (p, k) => fn.call(p, k, p);
42
+ }
43
+ const source = (resolve) => resolve(from);
44
+ const getter = arg1;
45
+ let reset;
46
+ let isAsync;
47
+ let proxy;
48
+ function connect(model) {
49
+ reset = createEffect(model, (current) => {
50
+ proxy = current;
51
+ if (!(key in state) || STALE.delete(compute))
52
+ compute(!reset);
53
+ return (didUpdate) => {
54
+ if (didUpdate) {
55
+ STALE.add(compute);
56
+ event(subject, key, true);
57
+ }
84
58
  };
85
- });
59
+ }, false);
60
+ }
61
+ function compute(initial) {
62
+ let next;
63
+ try {
64
+ next = getter.call(proxy, proxy, key);
65
+ } catch (err) {
66
+ console.warn(`An exception was thrown while ${initial ? "initializing" : "refreshing"} ${subject}.${key}.`);
67
+ if (initial)
68
+ throw err;
69
+ console.error(err);
70
+ }
71
+ update(subject, key, next, !isAsync);
72
+ }
73
+ return () => {
74
+ if (!proxy) {
75
+ source(connect);
76
+ isAsync = true;
77
+ }
78
+ if (STALE.delete(compute))
79
+ compute();
80
+ return fetch(subject, key, !proxy);
81
+ };
82
+ });
86
83
  }
87
- export { get };
84
+ export {
85
+ get
86
+ };
87
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2dldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgY3JlYXRlRWZmZWN0IH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBmZXRjaCwgTUVUSE9ELCBNb2RlbCwgUEFSRU5ULCBldmVudCwgdXBkYXRlIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG50eXBlIFR5cGU8VCBleHRlbmRzIE1vZGVsPiA9IE1vZGVsLlR5cGU8VD4gJiB0eXBlb2YgTW9kZWw7XG5cbmNvbnN0IFNUQUxFID0gbmV3IFdlYWtTZXQ8KCkgPT4gdm9pZD4oKTtcblxuZGVjbGFyZSBuYW1lc3BhY2UgZ2V0IHtcbiAgdHlwZSBDb21wdXRlPFQsIFMgPSBhbnk+ID0gKG9uOiBTLCBrZXk6IHN0cmluZykgPT4gVDtcblxuICB0eXBlIEZhY3Rvcnk8VCwgUyA9IGFueT4gPSAodGhpczogUywga2V5OiBzdHJpbmcsIHRoaXNBcmc6IFMpID0+IFQ7XG5cbiAgdHlwZSBTb3VyY2U8VCBleHRlbmRzIE1vZGVsID0gTW9kZWw+ID0gKHJlc29sdmU6ICh4OiBUKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG4gIHR5cGUgRWZmZWN0PFQ+ID0gKG1vZGVsOiBULCBrZXk6IHN0cmluZykgPT4gKCgpID0+IHZvaWQpIHwgdm9pZDtcbn1cblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLiBcbiAqIEBwYXJhbSBleHBlY3RQYXJlbnQgLSBJZiB0cnVlLCB3aWxsIHRocm93IGlmIE1vZGVsIGlzIGNyZWF0ZWQgd2l0aG91dCBhIHBhcmVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0IDxUIGV4dGVuZHMgTW9kZWw+IChUeXBlOiBNb2RlbC5UeXBlPFQ+LCBhc1BhcmVudD86IHRydWUpOiBUO1xuXG4vKipcbiAqIEZldGNoZXMgYW5kIGFzc2lnbnMgdGhlIGNvbnRyb2xsZXIgd2hpY2ggc3Bhd25lZCB0aGlzIGhvc3QuXG4gKiBXaGVuIHBhcmVudCBhc3NpZ25zIGFuIGluc3RhbmNlIHZpYSBgdXNlKClgIGRpcmVjdGl2ZSwgaXRcbiAqIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgdG8gY2hpbGQgdXBvbiB0aGlzIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIFR5cGUgLSBUeXBlIG9mIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIHRoaXMgY2xhc3MuIFxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgZmFsc2UsIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQuIE90aGVyd2lzZSB3aWxsIHRocm93IHN1c3BlbnNlLlxuICovXG5mdW5jdGlvbiBnZXQgPFQgZXh0ZW5kcyBNb2RlbD4gKFR5cGU6IE1vZGVsLlR5cGU8VD4sIHJlcXVpcmVkPzogZmFsc2UpOiBUIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEltcGxlbWVudCBhIGNvbXB1dGVkIHZhbHVlIGZyb20gYSBmb3JlaWduIG1vZGVsLiBPdXRwdXQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgcHJvdmlkZWQgZnVuY3Rpb24sXG4gKiB3aGVyZSB0aGUgZm9yZWlnbiBtb2RlbCB3aWxsIGJlIHBhc3NlZCB0byB0aGF0IGZ1bmN0aW9uLlxuICogXG4gKiBAcGFyYW0gc291cmNlIC0gVHlwZSBvZiBNb2RlbCB0byBmZXRjaCBmb3IgY29tcHV0YXRpb24uXG4gKiBAcGFyYW0gY29tcHV0ZSAtIENvbXB1dGUgZnVuY3Rpb24uIFdpbGwgdXBkYXRlIGF1dG9tYXRpY2FsbHkgYXMgaW5wdXQgdmFsdWVzIGNoYW5nZS5cbiAqL1xuZnVuY3Rpb24gZ2V0IDxUIGV4dGVuZHMgTW9kZWw+IChUeXBlOiBNb2RlbC5UeXBlPFQ+LCBlZmZlY3Q6IGdldC5FZmZlY3Q8VD4pOiBUO1xuXG4vKipcbiAqIEltcGxlbWVudCBhIGNvbXB1dGVkIHZhbHVlOyBvdXRwdXQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZSAtIFNvdXJjZSBtb2RlbCBmcm9tIHdoaWNoIGNvbXB1dGVkIHZhbHVlIHdpbGwgYmUgYSBzdWJzY3JpYmVyLlxuICogQHBhcmFtIGNvbXB1dGUgLSBDb21wdXRlIGZ1bmN0aW9uLiBCb3VuZCB0byBhIHN1YnNjcmliZXItcHJveHkgb2Ygc291cmNlLCByZXR1cm5zIG91dHB1dCB2YWx1ZS4gV2lsbCB1cGRhdGUgYXV0b21hdGljYWxseSBhcyBpbnB1dCB2YWx1ZXMgY2hhbmdlLlxuICovXG5mdW5jdGlvbiBnZXQgPFIsIFQgZXh0ZW5kcyBNb2RlbD4gKHNvdXJjZTogVCwgY29tcHV0ZTogZ2V0LkNvbXB1dGU8UiwgVD4pOiBSO1xuXG4vKipcbiAqIEltcGxlbWVudCBhIGNvbXB1dGVkIHZhbHVlOyBvdXRwdXQgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb24gZnJvbSBwcm92aWRlZCBmYWN0b3J5LlxuICogXG4gKiBGYWN0b3J5IGlzIGJvdW5kIHRvIG93bmVyIG9mIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBjb21wdXRlIC0gRmFjdG9yeSBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhIGdldHRlciB0byBzdWJzY3JpYmUgZGVwZW5kYW5jaWVzLlxuICovXG5mdW5jdGlvbiBnZXQgPFIsIFQ+IChjb21wdXRlOiBnZXQuRmFjdG9yeTxSLCBUPik6IFI7XG4gXG5mdW5jdGlvbiBnZXQ8UiwgVCBleHRlbmRzIE1vZGVsPihcbiAgYXJnMDogVCB8IGdldC5GYWN0b3J5PFIsIFQ+IHwgVHlwZTxUPixcbiAgYXJnMT86IEZ1bmN0aW9uIHwgYm9vbGVhbil7XG5cbiAgcmV0dXJuIHVzZSgoa2V5LCBzdWJqZWN0LCBzdGF0ZSkgPT4ge1xuICAgIGlmKHR5cGVvZiBhcmcwID09IFwic3ltYm9sXCIpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHRlZCB0byB1c2UgYW4gaW5zdHJ1Y3Rpb24gcmVzdWx0IChwcm9iYWJseSB1c2Ugb3IgZ2V0KSBhcyBjb21wdXRlZCBzb3VyY2UgZm9yICR7c3ViamVjdH0uJHtrZXl9LiBUaGlzIGlzIG5vdCBhbGxvd2VkLmApXG5cbiAgICBpZihNb2RlbC5pcyhhcmcwKSl7XG4gICAgICBjb25zdCBoYXNQYXJlbnQgPSBQQVJFTlQuZ2V0KHN1YmplY3QpIGFzIFQ7XG5cbiAgICAgIC8vIFRPRE86IG5vdGlmeSBvbiBkaXNjb3ZlcmVkIGNvbnRleHQgXG4gICAgICBmdW5jdGlvbiBhc3NpZ24odmFsdWU6IFQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmcxID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICB2YWx1ZS5nZXQoeCA9PiAoYXJnMSBhcyBGdW5jdGlvbikoeCwga2V5KSk7XG5cbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZighaGFzUGFyZW50KXtcbiAgICAgICAgaWYoYXJnMSA9PT0gdHJ1ZSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c3ViamVjdH0gbWF5IG9ubHkgZXhpc3QgYXMgYSBjaGlsZCBvZiB0eXBlICR7YXJnMH0uYCk7XG5cbiAgICAgICAgQ29udGV4dC5nZXQoc3ViamVjdCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbnRleHQuZ2V0KGFyZzApO1xuXG4gICAgICAgICAgaWYobW9kZWwpXG4gICAgICAgICAgICBhc3NpZ24obW9kZWwpO1xuICAgICAgICAgIGVsc2UgaWYoYXJnMSAhPT0gZmFsc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVpcmVkICR7YXJnMH0gbm90IGZvdW5kIGluIGNvbnRleHQgZm9yICR7c3ViamVjdH0uYClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKCFhcmcwIHx8IGhhc1BhcmVudCBpbnN0YW5jZW9mIGFyZzApXG4gICAgICAgIGFzc2lnbihoYXNQYXJlbnQpO1xuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5ldyAke3N1YmplY3R9IGNyZWF0ZWQgYXMgY2hpbGQgb2YgJHtoYXNQYXJlbnR9LCBidXQgbXVzdCBiZSBpbnN0YW5jZW9mICR7YXJnMH0uYCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdldDogYXJnMSAhPT0gZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIGxldCBmcm9tID0gc3ViamVjdDtcbiAgICBcbiAgICBpZihhcmcwIGluc3RhbmNlb2YgTW9kZWwpe1xuICAgICAgZnJvbSA9IGFyZzA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZm4gPSBNRVRIT0QuZ2V0KGFyZzApIHx8IGFyZzA7XG4gICAgICBhcmcxID0gKChwLCBrKSA9PiBmbi5jYWxsKHAsIGssIHApKSBhcyBnZXQuRWZmZWN0PFQ+O1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZTogZ2V0LlNvdXJjZTxUPiA9IHJlc29sdmUgPT4gcmVzb2x2ZShmcm9tKTtcbiAgICBjb25zdCBnZXR0ZXIgPSBhcmcxIGFzIGdldC5Db21wdXRlPFIsIFQ+O1xuXG4gICAgbGV0IHJlc2V0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGlzQXN5bmM6IGJvb2xlYW47XG4gICAgbGV0IHByb3h5OiBhbnk7XG5cbiAgICBmdW5jdGlvbiBjb25uZWN0KG1vZGVsOiBNb2RlbCl7XG4gICAgICByZXNldCA9IGNyZWF0ZUVmZmVjdChtb2RlbCwgY3VycmVudCA9PiB7XG4gICAgICAgIHByb3h5ID0gY3VycmVudDtcblxuICAgICAgICBpZighKGtleSBpbiBzdGF0ZSkgfHwgU1RBTEUuZGVsZXRlKGNvbXB1dGUpKVxuICAgICAgICAgIGNvbXB1dGUoIXJlc2V0KTtcblxuICAgICAgICByZXR1cm4gKGRpZFVwZGF0ZSkgPT4ge1xuICAgICAgICAgIGlmKGRpZFVwZGF0ZSl7XG4gICAgICAgICAgICBTVEFMRS5hZGQoY29tcHV0ZSk7XG4gICAgICAgICAgICBldmVudChzdWJqZWN0LCBrZXksIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0sIGZhbHNlKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGUoaW5pdGlhbD86IGJvb2xlYW4pe1xuICAgICAgbGV0IG5leHQ6IFIgfCB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG5leHQgPSBnZXR0ZXIuY2FsbChwcm94eSwgcHJveHksIGtleSk7XG4gICAgICB9XG4gICAgICBjYXRjaChlcnIpe1xuICAgICAgICBjb25zb2xlLndhcm4oYEFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIHdoaWxlICR7aW5pdGlhbCA/IFwiaW5pdGlhbGl6aW5nXCIgOiBcInJlZnJlc2hpbmdcIn0gJHtzdWJqZWN0fS4ke2tleX0uYClcblxuICAgICAgICBpZihpbml0aWFsKVxuICAgICAgICAgIHRocm93IGVycjtcblxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIG5leHQsICFpc0FzeW5jKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYoIXByb3h5KXtcbiAgICAgICAgc291cmNlKGNvbm5lY3QpO1xuICAgICAgICBpc0FzeW5jID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYoU1RBTEUuZGVsZXRlKGNvbXB1dGUpKVxuICAgICAgICBjb21wdXRlKCk7XG5cbiAgICAgIHJldHVybiBmZXRjaChzdWJqZWN0LCBrZXksICFwcm94eSkgYXMgVDtcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCB7IGdldCB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsZUFBZTtBQUN4QixTQUFTLG9CQUFvQjtBQUM3QixTQUFTLE9BQU8sUUFBUSxPQUFPLFFBQVEsT0FBTyxjQUFjO0FBQzVELFNBQVMsV0FBVztBQUlwQixNQUFNLFFBQVEsb0JBQUksUUFBb0I7QUEwRHRDLFNBQVMsSUFDUCxNQUNBLE1BQTBCO0FBRTFCLFNBQU8sSUFBSSxDQUFDLEtBQUssU0FBUyxVQUFVO0FBQ2xDLFFBQUcsT0FBTyxRQUFRO0FBQ2hCLFlBQU0sSUFBSSxNQUFNLHVGQUF1RixPQUFPLElBQUksR0FBRyx3QkFBd0I7QUFFL0ksUUFBRyxNQUFNLEdBQUcsSUFBSSxHQUFFO0FBSWhCLFVBQVNBLFVBQVQsU0FBZ0IsT0FBVTtBQUN4QixZQUFJLE9BQU8sUUFBUTtBQUNqQixnQkFBTSxJQUFJLE9BQU0sS0FBa0IsR0FBRyxHQUFHLENBQUM7QUFFM0MsZUFBTyxTQUFTLEtBQUssS0FBSztBQUFBLE1BQzVCO0FBTFMsbUJBQUFBO0FBSFQsWUFBTSxZQUFZLE9BQU8sSUFBSSxPQUFPO0FBVXBDLFVBQUcsQ0FBQyxXQUFVO0FBQ1osWUFBRyxTQUFTO0FBQ1YsZ0JBQU0sSUFBSSxNQUFNLEdBQUcsT0FBTyxzQ0FBc0MsSUFBSSxHQUFHO0FBRXpFLGdCQUFRLElBQUksU0FBUyxDQUFDLFlBQVk7QUFDaEMsZ0JBQU0sUUFBUSxRQUFRLElBQUksSUFBSTtBQUU5QixjQUFHO0FBQ0QsWUFBQUEsUUFBTyxLQUFLO0FBQUEsbUJBQ04sU0FBUztBQUNmLGtCQUFNLElBQUksTUFBTSxZQUFZLElBQUksNkJBQTZCLE9BQU8sR0FBRztBQUFBLFFBQzNFLENBQUM7QUFBQSxNQUNILFdBQ1EsQ0FBQyxRQUFRLHFCQUFxQjtBQUNwQyxRQUFBQSxRQUFPLFNBQVM7QUFBQTtBQUVoQixjQUFNLElBQUksTUFBTSxPQUFPLE9BQU8sd0JBQXdCLFNBQVMsNEJBQTRCLElBQUksR0FBRztBQUVwRyxhQUFPO0FBQUEsUUFDTCxLQUFLLFNBQVM7QUFBQSxNQUNoQjtBQUFBLElBQ0Y7QUFFQSxRQUFJLE9BQU87QUFFWCxRQUFHLGdCQUFnQixPQUFNO0FBQ3ZCLGFBQU87QUFBQSxJQUNULE9BQ0s7QUFDSCxZQUFNLEtBQUssT0FBTyxJQUFJLElBQUksS0FBSztBQUMvQixhQUFRLENBQUMsR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUFBLElBQ25DO0FBRUEsVUFBTSxTQUF3QixhQUFXLFFBQVEsSUFBSTtBQUNyRCxVQUFNLFNBQVM7QUFFZixRQUFJO0FBQ0osUUFBSTtBQUNKLFFBQUk7QUFFSixhQUFTLFFBQVEsT0FBYTtBQUM1QixjQUFRLGFBQWEsT0FBTyxhQUFXO0FBQ3JDLGdCQUFRO0FBRVIsWUFBRyxFQUFFLE9BQU8sVUFBVSxNQUFNLE9BQU8sT0FBTztBQUN4QyxrQkFBUSxDQUFDLEtBQUs7QUFFaEIsZUFBTyxDQUFDLGNBQWM7QUFDcEIsY0FBRyxXQUFVO0FBQ1gsa0JBQU0sSUFBSSxPQUFPO0FBQ2pCLGtCQUFNLFNBQVMsS0FBSyxJQUFJO0FBQUEsVUFDMUI7QUFBQSxRQUNGO0FBQUEsTUFDRixHQUFHLEtBQUs7QUFBQSxJQUNWO0FBRUEsYUFBUyxRQUFRLFNBQWtCO0FBQ2pDLFVBQUk7QUFFSixVQUFJO0FBQ0YsZUFBTyxPQUFPLEtBQUssT0FBTyxPQUFPLEdBQUc7QUFBQSxNQUN0QyxTQUNNLEtBQUk7QUFDUixnQkFBUSxLQUFLLGlDQUFpQyxVQUFVLGlCQUFpQixZQUFZLElBQUksT0FBTyxJQUFJLEdBQUcsR0FBRztBQUUxRyxZQUFHO0FBQ0QsZ0JBQU07QUFFUixnQkFBUSxNQUFNLEdBQUc7QUFBQSxNQUNuQjtBQUVBLGFBQU8sU0FBUyxLQUFLLE1BQU0sQ0FBQyxPQUFPO0FBQUEsSUFDckM7QUFFQSxXQUFPLE1BQU07QUFDWCxVQUFHLENBQUMsT0FBTTtBQUNSLGVBQU8sT0FBTztBQUNkLGtCQUFVO0FBQUEsTUFDWjtBQUVBLFVBQUcsTUFBTSxPQUFPLE9BQU87QUFDckIsZ0JBQVE7QUFFVixhQUFPLE1BQU0sU0FBUyxLQUFLLENBQUMsS0FBSztBQUFBLElBQ25DO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbImFzc2lnbiJdCn0K