react-elmish 10.2.0 → 10.3.0-beta.2

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.
Files changed (34) hide show
  1. package/README.md +32 -1
  2. package/dist/Common.d.ts +10 -2
  3. package/dist/Common.js +142 -1
  4. package/dist/ElmComponent.js +3 -2
  5. package/dist/immutable/ElmComponent.js +2 -1
  6. package/dist/immutable/createCallBase.js +1 -1
  7. package/dist/immutable/index.d.ts +3 -3
  8. package/dist/immutable/index.js +1 -1
  9. package/dist/immutable/testing/execSubscription.js +1 -1
  10. package/dist/immutable/testing/getConsecutiveUpdate.d.ts +5 -0
  11. package/dist/immutable/testing/getConsecutiveUpdate.js +96 -0
  12. package/dist/immutable/testing/getConsecutiveUpdate.spec.d.ts +1 -0
  13. package/dist/immutable/testing/getUpdateFn.js +2 -2
  14. package/dist/immutable/testing/index.d.ts +1 -0
  15. package/dist/immutable/testing/index.js +8 -1
  16. package/dist/immutable/useElmish.d.ts +1 -1
  17. package/dist/immutable/useElmish.js +24 -111
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.js +1 -1
  20. package/dist/mergeSubscriptions.js +1 -1
  21. package/dist/testing/execCmd.js +2 -2
  22. package/dist/testing/execSubscription.js +1 -1
  23. package/dist/testing/getConsecutiveUpdate.d.ts +3 -0
  24. package/dist/testing/getConsecutiveUpdate.js +96 -0
  25. package/dist/testing/getConsecutiveUpdate.spec.d.ts +1 -0
  26. package/dist/testing/getUpdateFn.js +2 -2
  27. package/dist/testing/index.d.ts +1 -0
  28. package/dist/testing/index.js +8 -1
  29. package/dist/testing/initAndExecCmd.js +2 -2
  30. package/dist/testing/renderWithModel.d.ts +1 -1
  31. package/dist/testing/renderWithModel.js +1 -1
  32. package/dist/useElmish.d.ts +1 -1
  33. package/dist/useElmish.js +29 -117
  34. package/package.json +13 -13
package/dist/useElmish.js CHANGED
@@ -13,9 +13,6 @@ var _createCallBase = require("./createCallBase");
13
13
  var _createDefer3 = require("./createDefer");
14
14
  var _fakeOptions = require("./fakeOptions");
15
15
  var _Init = require("./Init");
16
- var _reduxDevTools = require("./reduxDevTools");
17
- var _Types = require("./Types");
18
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
19
16
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
20
17
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
18
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
@@ -31,7 +28,7 @@ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructur
31
28
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
32
29
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
33
30
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
34
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /* eslint-disable react-hooks/exhaustive-deps */
31
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
35
32
  /**
36
33
  * Options for the `useElmish` hook.
37
34
  * @interface UseElmishOptions
@@ -48,142 +45,57 @@ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /* eslint-disabl
48
45
  * const [model, dispatch] = useElmish({ props, init, update, name: "MyComponent" });
49
46
  */
50
47
  function useElmish(_ref) {
51
- var _fakeOptions$dispatch;
52
48
  var name = _ref.name,
53
49
  props = _ref.props,
54
50
  reInitOn = _ref.reInitOn,
55
51
  init = _ref.init,
56
52
  update = _ref.update,
57
53
  subscription = _ref.subscription;
58
- var running = false;
59
- var buffer = [];
60
- var currentModel = {};
61
- var firstCallRef = (0, _react.useRef)(true);
62
54
  var _useState = (0, _react.useState)(null),
63
55
  _useState2 = _slicedToArray(_useState, 2),
64
56
  model = _useState2[0],
65
57
  setModel = _useState2[1];
66
58
  var propsRef = (0, _react.useRef)(props);
67
- var isMountedRef = (0, _react.useRef)(true);
68
- var devTools = (0, _react.useRef)(null);
69
- (0, _react.useEffect)(function () {
70
- var reduxUnsubscribe;
71
- if (_Init.Services.enableDevTools === true && (0, _reduxDevTools.isReduxDevToolsEnabled)(window)) {
72
- // eslint-disable-next-line no-underscore-dangle
73
- devTools.current = window.__REDUX_DEVTOOLS_EXTENSION__.connect({
74
- name: name,
75
- serialize: {
76
- options: true
77
- }
78
- });
79
- reduxUnsubscribe = devTools.current.subscribe(function (message) {
80
- if (message.type === "DISPATCH" && message.payload.type === "JUMP_TO_ACTION") {
81
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
82
- setModel(JSON.parse(message.state));
83
- }
84
- });
85
- }
86
- isMountedRef.current = true;
87
- return function () {
88
- var _reduxUnsubscribe;
89
- isMountedRef.current = false;
90
- (_reduxUnsubscribe = reduxUnsubscribe) === null || _reduxUnsubscribe === void 0 || _reduxUnsubscribe();
91
- };
92
- }, [name]);
93
- var initializedModel = model;
59
+ var devToolsRef = (0, _Common.useRedux)(name, setModel);
60
+ var isMountedRef = (0, _Common.useIsMounted)();
61
+ var currentModel = model;
94
62
  if (propsRef.current !== props) {
95
63
  propsRef.current = props;
96
64
  }
97
65
  var fakeOptions = (0, _fakeOptions.getFakeOptionsOnce)();
98
- var dispatch = (0, _react.useCallback)((_fakeOptions$dispatch = fakeOptions === null || fakeOptions === void 0 ? void 0 : fakeOptions.dispatch) !== null && _fakeOptions$dispatch !== void 0 ? _fakeOptions$dispatch : function (msg) {
99
- if (running) {
100
- buffer.push(msg);
101
- return;
102
- }
103
- running = true;
104
- var nextMsg = msg;
105
- var modified = false;
106
- do {
107
- if (handleMessage(nextMsg)) {
108
- modified = true;
109
- }
110
- if (devTools.current) {
111
- devTools.current.send(nextMsg.name, _objectSpread(_objectSpread({}, initializedModel), currentModel));
112
- }
113
- nextMsg = buffer.shift();
114
- } while (nextMsg);
115
- running = false;
116
- if (isMountedRef.current && modified) {
117
- setModel(function (prevModel) {
118
- var _Services$logger;
119
- var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
120
- (_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 || _Services$logger.debug("Update model for", name, updatedModel);
121
66
 
122
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- We always have a full model here
123
- return updatedModel;
124
- });
125
- }
126
- }, []);
127
- if (!initializedModel) {
128
- var _devTools$current, _Services$logger2;
129
- var _ref2 = fakeOptions !== null && fakeOptions !== void 0 && fakeOptions.model ? [fakeOptions.model] : init(props),
130
- _ref3 = _toArray(_ref2),
131
- initModel = _ref3[0],
132
- initCommands = _ref3.slice(1);
133
- initializedModel = initModel;
134
- setModel(initializedModel);
135
- (_devTools$current = devTools.current) === null || _devTools$current === void 0 || _devTools$current.init(initializedModel);
136
- (_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 || _Services$logger2.debug("Initial model for", name, initializedModel);
137
- _Common.execCmd.apply(void 0, [dispatch].concat(_toConsumableArray(initCommands)));
138
- }
139
- (0, _react.useEffect)(function () {
140
- if (firstCallRef.current) {
141
- firstCallRef.current = false;
67
+ // eslint-disable-next-line react-hooks/exhaustive-deps
68
+ var dispatch = (0, _react.useCallback)((0, _Common.getDispatch)(handleMessage, function () {
69
+ if (!isMountedRef.current) {
142
70
  return;
143
71
  }
144
- setModel(null);
145
- // biome-ignore lint/correctness/useExhaustiveDependencies: We only want to reinitialize when the reInitOn dependencies change
146
- }, reInitOn !== null && reInitOn !== void 0 ? reInitOn : []);
147
- (0, _react.useEffect)(function () {
148
- if (subscription) {
149
- var subscriptionResult = subscription(initializedModel, props);
150
- if ((0, _Types.subscriptionIsFunctionArray)(subscriptionResult)) {
151
- var destructors = subscriptionResult.map(function (sub) {
152
- return sub(dispatch);
153
- }).filter(function (destructor) {
154
- return destructor !== undefined;
155
- });
156
- return function combinedDestructor() {
157
- var _iterator = _createForOfIteratorHelper(destructors),
158
- _step;
159
- try {
160
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
161
- var _destructor = _step.value;
162
- _destructor();
163
- }
164
- } catch (err) {
165
- _iterator.e(err);
166
- } finally {
167
- _iterator.f();
168
- }
169
- };
170
- }
171
- var _subscriptionResult = _slicedToArray(subscriptionResult, 2),
172
- subCmd = _subscriptionResult[0],
173
- destructor = _subscriptionResult[1];
174
- (0, _Common.execCmd)(dispatch, subCmd);
175
- return destructor;
176
- }
177
- // biome-ignore lint/correctness/useExhaustiveDependencies: We only want to reinitialize when the reInitOn dependencies change
178
- }, reInitOn !== null && reInitOn !== void 0 ? reInitOn : []);
72
+ setModel(function (prevModel) {
73
+ var _Services$logger;
74
+ var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
75
+ (_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 || _Services$logger.debug("Update model for", name, updatedModel);
76
+
77
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- We always have a full model here
78
+ return updatedModel;
79
+ });
80
+ }, function (msg) {
81
+ var _devToolsRef$current;
82
+ (_devToolsRef$current = devToolsRef.current) === null || _devToolsRef$current === void 0 || _devToolsRef$current.send(msg.name, _objectSpread({}, currentModel));
83
+ }, fakeOptions === null || fakeOptions === void 0 ? void 0 : fakeOptions.dispatch), []);
84
+ var initializedModel = currentModel;
85
+ initializedModel !== null && initializedModel !== void 0 ? initializedModel : initializedModel = (0, _Common.runInit)(name, init, props, function (initModel) {
86
+ currentModel = initModel;
87
+ setModel(currentModel);
88
+ }, dispatch, devToolsRef.current, fakeOptions === null || fakeOptions === void 0 ? void 0 : fakeOptions.model);
89
+ (0, _Common.useReInit)(setModel, reInitOn);
90
+ (0, _Common.useSubscription)(subscription, initializedModel, props, dispatch, reInitOn);
179
91
  return [initializedModel, dispatch];
180
92
  function handleMessage(nextMsg) {
181
- if (!initializedModel) {
93
+ if (!currentModel) {
182
94
  return false;
183
95
  }
184
96
  var modified = false;
185
97
  (0, _Common.logMessage)(name, nextMsg);
186
- var updatedModel = _objectSpread(_objectSpread({}, initializedModel), currentModel);
98
+ var updatedModel = _objectSpread({}, currentModel);
187
99
  var _createDefer = (0, _createDefer3.createDefer)(),
188
100
  _createDefer2 = _slicedToArray(_createDefer, 2),
189
101
  defer = _createDefer2[0],
@@ -220,4 +132,4 @@ function callUpdateMap(updateMap, msg, model, props, options) {
220
132
  var msgName = msg.name;
221
133
  return updateMap[msgName](msg, model, props, options);
222
134
  }
223
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX0NvbW1vbiIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJfZmFrZU9wdGlvbnMiLCJfSW5pdCIsIl9yZWR1eERldlRvb2xzIiwiX1R5cGVzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9hcnJheUxpa2VUb0FycmF5IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiZnJvbSIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImwiLCJ1c2VFbG1pc2giLCJfcmVmIiwiX2Zha2VPcHRpb25zJGRpc3BhdGNoIiwicHJvcHMiLCJyZUluaXRPbiIsImluaXQiLCJ1cGRhdGUiLCJzdWJzY3JpcHRpb24iLCJydW5uaW5nIiwiYnVmZmVyIiwiY3VycmVudE1vZGVsIiwiZmlyc3RDYWxsUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwibW9kZWwiLCJzZXRNb2RlbCIsInByb3BzUmVmIiwiaXNNb3VudGVkUmVmIiwiZGV2VG9vbHMiLCJ1c2VFZmZlY3QiLCJyZWR1eFVuc3Vic2NyaWJlIiwiU2VydmljZXMiLCJlbmFibGVEZXZUb29scyIsImlzUmVkdXhEZXZUb29sc0VuYWJsZWQiLCJ3aW5kb3ciLCJjdXJyZW50IiwiX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyIsImNvbm5lY3QiLCJzZXJpYWxpemUiLCJvcHRpb25zIiwic3Vic2NyaWJlIiwibWVzc2FnZSIsInR5cGUiLCJwYXlsb2FkIiwiSlNPTiIsInBhcnNlIiwic3RhdGUiLCJfcmVkdXhVbnN1YnNjcmliZSIsImluaXRpYWxpemVkTW9kZWwiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsImRpc3BhdGNoIiwidXNlQ2FsbGJhY2siLCJtc2ciLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJoYW5kbGVNZXNzYWdlIiwic2VuZCIsInNoaWZ0IiwicHJldk1vZGVsIiwiX1NlcnZpY2VzJGxvZ2dlciIsInVwZGF0ZWRNb2RlbCIsImxvZ2dlciIsImRlYnVnIiwiX2RldlRvb2xzJGN1cnJlbnQiLCJfU2VydmljZXMkbG9nZ2VyMiIsIl9yZWYyIiwiX3JlZjMiLCJpbml0TW9kZWwiLCJpbml0Q29tbWFuZHMiLCJleGVjQ21kIiwiY29uY2F0Iiwic3Vic2NyaXB0aW9uUmVzdWx0Iiwic3Vic2NyaXB0aW9uSXNGdW5jdGlvbkFycmF5IiwiZGVzdHJ1Y3RvcnMiLCJtYXAiLCJzdWIiLCJkZXN0cnVjdG9yIiwidW5kZWZpbmVkIiwiY29tYmluZWREZXN0cnVjdG9yIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJlcnIiLCJfc3Vic2NyaXB0aW9uUmVzdWx0Iiwic3ViQ21kIiwibG9nTWVzc2FnZSIsIl9jcmVhdGVEZWZlciIsImNyZWF0ZURlZmVyIiwiX2NyZWF0ZURlZmVyMiIsImRlZmVyIiwiZ2V0RGVmZXJyZWQiLCJjYWxsQmFzZSIsImNyZWF0ZUNhbGxCYXNlIiwiX2NhbGxVcGRhdGUiLCJjYWxsVXBkYXRlIiwiX2NhbGxVcGRhdGUyIiwibmV3TW9kZWwiLCJjb21tYW5kcyIsIl9nZXREZWZlcnJlZCIsIl9nZXREZWZlcnJlZDIiLCJkZWZlcnJlZE1vZGVsIiwiZGVmZXJyZWRDb21tYW5kcyIsIm1vZGVsSGFzQ2hhbmdlZCIsImNhbGxVcGRhdGVNYXAiLCJ1cGRhdGVNYXAiLCJtc2dOYW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZUVsbWlzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGV4ZWNDbWQsIGxvZ01lc3NhZ2UsIG1vZGVsSGFzQ2hhbmdlZCB9IGZyb20gXCIuL0NvbW1vblwiO1xuaW1wb3J0IHsgY3JlYXRlQ2FsbEJhc2UgfSBmcm9tIFwiLi9jcmVhdGVDYWxsQmFzZVwiO1xuaW1wb3J0IHsgY3JlYXRlRGVmZXIgfSBmcm9tIFwiLi9jcmVhdGVEZWZlclwiO1xuaW1wb3J0IHsgZ2V0RmFrZU9wdGlvbnNPbmNlIH0gZnJvbSBcIi4vZmFrZU9wdGlvbnNcIjtcbmltcG9ydCB7IFNlcnZpY2VzIH0gZnJvbSBcIi4vSW5pdFwiO1xuaW1wb3J0IHsgaXNSZWR1eERldlRvb2xzRW5hYmxlZCwgdHlwZSBSZWR1eERldlRvb2xzIH0gZnJvbSBcIi4vcmVkdXhEZXZUb29sc1wiO1xuaW1wb3J0IHtcblx0dHlwZSBEaXNwYXRjaCxcblx0dHlwZSBJbml0RnVuY3Rpb24sXG5cdHR5cGUgTWVzc2FnZSxcblx0dHlwZSBOdWxsYWJsZSxcblx0dHlwZSBTdWJzY3JpcHRpb24sXG5cdHN1YnNjcmlwdGlvbklzRnVuY3Rpb25BcnJheSxcblx0dHlwZSBVcGRhdGVGdW5jdGlvbixcblx0dHlwZSBVcGRhdGVGdW5jdGlvbk9wdGlvbnMsXG5cdHR5cGUgVXBkYXRlTWFwLFxuXHR0eXBlIFVwZGF0ZVJldHVyblR5cGUsXG59IGZyb20gXCIuL1R5cGVzXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGB1c2VFbG1pc2hgIGhvb2suXG4gKiBAaW50ZXJmYWNlIFVzZUVsbWlzaE9wdGlvbnNcbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgVGhlIHR5cGUgb2YgdGhlIHByb3BzLlxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbmludGVyZmFjZSBVc2VFbG1pc2hPcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+IHtcblx0LyoqXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuIFRoaXMgaXMgdXNlZCBmb3IgbG9nZ2luZyBvbmx5LlxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHByb3BzIHBhc3NlZCB0byB0aGUgY29tcG9uZW50LlxuXHQgKiBAdHlwZSB7VFByb3BzfVxuXHQgKi9cblx0cHJvcHM6IFRQcm9wcztcblx0LyoqXG5cdCAqIEFycmF5IG9mIHZhbHVlcyB0aGF0IHRyaWdnZXIgYSByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuXHQgKi9cblx0cmVJbml0T24/OiB1bmtub3duW107XG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50cyBtb2RlbC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBvbmNlLlxuXHQgKiBAdHlwZSB7SW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT59XG5cdCAqL1xuXHRpbml0OiBJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPjtcblx0LyoqXG5cdCAqIFRoZSBgdXBkYXRlYCBmdW5jdGlvbiBvciB1cGRhdGUgbWFwIG9iamVjdC5cblx0ICogQHR5cGUgeyhVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4pfVxuXHQgKi9cblx0dXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG5cdC8qKlxuXHQgKiBUaGUgb3B0aW9uYWwgYHN1YnNjcmlwdGlvbmAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgb25jZS5cblx0ICogQHR5cGUgeyhVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4pfVxuXHQgKi9cblx0c3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG59XG5cbi8qKlxuICogSG9vayB0byB1c2UgdGhlIEVsbSBhcmNoaXRlY3R1cmUgcGF0dGVybiBpbiBhIGZ1bmN0aW9uIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7VXNlRWxtaXNoT3B0aW9uc30gb3B0aW9ucyBUaGUgb3B0aW9ucyBwYXNzZWQgdGhlIHRoZSBob29rLlxuICogQHJldHVybnMgQSB0dXBsZSBjb250YWluaW5nIHRoZSBjdXJyZW50IG1vZGVsIGFuZCB0aGUgZGlzcGF0Y2hlci5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBbbW9kZWwsIGRpc3BhdGNoXSA9IHVzZUVsbWlzaCh7IHByb3BzLCBpbml0LCB1cGRhdGUsIG5hbWU6IFwiTXlDb21wb25lbnRcIiB9KTtcbiAqL1xuZnVuY3Rpb24gdXNlRWxtaXNoPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KHtcblx0bmFtZSxcblx0cHJvcHMsXG5cdHJlSW5pdE9uLFxuXHRpbml0LFxuXHR1cGRhdGUsXG5cdHN1YnNjcmlwdGlvbixcbn06IFVzZUVsbWlzaE9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPik6IFtUTW9kZWwsIERpc3BhdGNoPFRNZXNzYWdlPl0ge1xuXHRsZXQgcnVubmluZyA9IGZhbHNlO1xuXHRjb25zdCBidWZmZXI6IFRNZXNzYWdlW10gPSBbXTtcblx0bGV0IGN1cnJlbnRNb2RlbDogUGFydGlhbDxUTW9kZWw+ID0ge307XG5cblx0Y29uc3QgZmlyc3RDYWxsUmVmID0gdXNlUmVmKHRydWUpO1xuXHRjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IHVzZVN0YXRlPE51bGxhYmxlPFRNb2RlbD4+KG51bGwpO1xuXHRjb25zdCBwcm9wc1JlZiA9IHVzZVJlZihwcm9wcyk7XG5cdGNvbnN0IGlzTW91bnRlZFJlZiA9IHVzZVJlZih0cnVlKTtcblxuXHRjb25zdCBkZXZUb29scyA9IHVzZVJlZjxSZWR1eERldlRvb2xzIHwgbnVsbD4obnVsbCk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRsZXQgcmVkdXhVbnN1YnNjcmliZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKFNlcnZpY2VzLmVuYWJsZURldlRvb2xzID09PSB0cnVlICYmIGlzUmVkdXhEZXZUb29sc0VuYWJsZWQod2luZG93KSkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5cdFx0XHRkZXZUb29scy5jdXJyZW50ID0gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18uY29ubmVjdCh7IG5hbWUsIHNlcmlhbGl6ZTogeyBvcHRpb25zOiB0cnVlIH0gfSk7XG5cblx0XHRcdHJlZHV4VW5zdWJzY3JpYmUgPSBkZXZUb29scy5jdXJyZW50LnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xuXHRcdFx0XHRpZiAobWVzc2FnZS50eXBlID09PSBcIkRJU1BBVENIXCIgJiYgbWVzc2FnZS5wYXlsb2FkLnR5cGUgPT09IFwiSlVNUF9UT19BQ1RJT05cIikge1xuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXR5cGUtYXNzZXJ0aW9uXG5cdFx0XHRcdFx0c2V0TW9kZWwoSlNPTi5wYXJzZShtZXNzYWdlLnN0YXRlKSBhcyBUTW9kZWwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuXHRcdFx0cmVkdXhVbnN1YnNjcmliZT8uKCk7XG5cdFx0fTtcblx0fSwgW25hbWVdKTtcblxuXHRsZXQgaW5pdGlhbGl6ZWRNb2RlbCA9IG1vZGVsO1xuXG5cdGlmIChwcm9wc1JlZi5jdXJyZW50ICE9PSBwcm9wcykge1xuXHRcdHByb3BzUmVmLmN1cnJlbnQgPSBwcm9wcztcblx0fVxuXG5cdGNvbnN0IGZha2VPcHRpb25zID0gZ2V0RmFrZU9wdGlvbnNPbmNlPFRNb2RlbCwgVE1lc3NhZ2U+KCk7XG5cdGNvbnN0IGRpc3BhdGNoID0gdXNlQ2FsbGJhY2soXG5cdFx0ZmFrZU9wdGlvbnM/LmRpc3BhdGNoID8/XG5cdFx0XHQoKG1zZzogVE1lc3NhZ2UpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHJ1bm5pbmcpIHtcblx0XHRcdFx0XHRidWZmZXIucHVzaChtc2cpO1xuXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cnVubmluZyA9IHRydWU7XG5cblx0XHRcdFx0bGV0IG5leHRNc2c6IFRNZXNzYWdlIHwgdW5kZWZpbmVkID0gbXNnO1xuXHRcdFx0XHRsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKGhhbmRsZU1lc3NhZ2UobmV4dE1zZykpIHtcblx0XHRcdFx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoZGV2VG9vbHMuY3VycmVudCkge1xuXHRcdFx0XHRcdFx0ZGV2VG9vbHMuY3VycmVudC5zZW5kKG5leHRNc2cubmFtZSwgeyAuLi5pbml0aWFsaXplZE1vZGVsLCAuLi5jdXJyZW50TW9kZWwgfSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bmV4dE1zZyA9IGJ1ZmZlci5zaGlmdCgpO1xuXHRcdFx0XHR9IHdoaWxlIChuZXh0TXNnKTtcblxuXHRcdFx0XHRydW5uaW5nID0gZmFsc2U7XG5cblx0XHRcdFx0aWYgKGlzTW91bnRlZFJlZi5jdXJyZW50ICYmIG1vZGlmaWVkKSB7XG5cdFx0XHRcdFx0c2V0TW9kZWwoKHByZXZNb2RlbCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgdXBkYXRlZE1vZGVsID0geyAuLi5wcmV2TW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9O1xuXG5cdFx0XHRcdFx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiVXBkYXRlIG1vZGVsIGZvclwiLCBuYW1lLCB1cGRhdGVkTW9kZWwpO1xuXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS10eXBlLWFzc2VydGlvbiAtLSBXZSBhbHdheXMgaGF2ZSBhIGZ1bGwgbW9kZWwgaGVyZVxuXHRcdFx0XHRcdFx0cmV0dXJuIHVwZGF0ZWRNb2RlbCBhcyBUTW9kZWw7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFtdLFxuXHQpO1xuXG5cdGlmICghaW5pdGlhbGl6ZWRNb2RlbCkge1xuXHRcdGNvbnN0IFtpbml0TW9kZWwsIC4uLmluaXRDb21tYW5kc10gPSBmYWtlT3B0aW9ucz8ubW9kZWwgPyBbZmFrZU9wdGlvbnMubW9kZWxdIDogaW5pdChwcm9wcyk7XG5cblx0XHRpbml0aWFsaXplZE1vZGVsID0gaW5pdE1vZGVsO1xuXHRcdHNldE1vZGVsKGluaXRpYWxpemVkTW9kZWwpO1xuXG5cdFx0ZGV2VG9vbHMuY3VycmVudD8uaW5pdChpbml0aWFsaXplZE1vZGVsKTtcblxuXHRcdFNlcnZpY2VzLmxvZ2dlcj8uZGVidWcoXCJJbml0aWFsIG1vZGVsIGZvclwiLCBuYW1lLCBpbml0aWFsaXplZE1vZGVsKTtcblxuXHRcdGV4ZWNDbWQoZGlzcGF0Y2gsIC4uLmluaXRDb21tYW5kcyk7XG5cdH1cblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChmaXJzdENhbGxSZWYuY3VycmVudCkge1xuXHRcdFx0Zmlyc3RDYWxsUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHNldE1vZGVsKG51bGwpO1xuXHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIG9ubHkgd2FudCB0byByZWluaXRpYWxpemUgd2hlbiB0aGUgcmVJbml0T24gZGVwZW5kZW5jaWVzIGNoYW5nZVxuXHR9LCByZUluaXRPbiA/PyBbXSk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoc3Vic2NyaXB0aW9uKSB7XG5cdFx0XHRjb25zdCBzdWJzY3JpcHRpb25SZXN1bHQgPSBzdWJzY3JpcHRpb24oaW5pdGlhbGl6ZWRNb2RlbCwgcHJvcHMpO1xuXG5cdFx0XHRpZiAoc3Vic2NyaXB0aW9uSXNGdW5jdGlvbkFycmF5KHN1YnNjcmlwdGlvblJlc3VsdCkpIHtcblx0XHRcdFx0Y29uc3QgZGVzdHJ1Y3RvcnMgPSBzdWJzY3JpcHRpb25SZXN1bHQubWFwKChzdWIpID0+IHN1YihkaXNwYXRjaCkpLmZpbHRlcigoZGVzdHJ1Y3RvcikgPT4gZGVzdHJ1Y3RvciAhPT0gdW5kZWZpbmVkKTtcblxuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gY29tYmluZWREZXN0cnVjdG9yKCkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgZGVzdHJ1Y3RvciBvZiBkZXN0cnVjdG9ycykge1xuXHRcdFx0XHRcdFx0ZGVzdHJ1Y3RvcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgW3N1YkNtZCwgZGVzdHJ1Y3Rvcl0gPSBzdWJzY3JpcHRpb25SZXN1bHQ7XG5cblx0XHRcdGV4ZWNDbWQoZGlzcGF0Y2gsIHN1YkNtZCk7XG5cblx0XHRcdHJldHVybiBkZXN0cnVjdG9yO1xuXHRcdH1cblx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9jb3JyZWN0bmVzcy91c2VFeGhhdXN0aXZlRGVwZW5kZW5jaWVzOiBXZSBvbmx5IHdhbnQgdG8gcmVpbml0aWFsaXplIHdoZW4gdGhlIHJlSW5pdE9uIGRlcGVuZGVuY2llcyBjaGFuZ2Vcblx0fSwgcmVJbml0T24gPz8gW10pO1xuXG5cdHJldHVybiBbaW5pdGlhbGl6ZWRNb2RlbCwgZGlzcGF0Y2hdO1xuXG5cdGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UobmV4dE1zZzogVE1lc3NhZ2UpOiBib29sZWFuIHtcblx0XHRpZiAoIWluaXRpYWxpemVkTW9kZWwpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuXHRcdGxvZ01lc3NhZ2UobmFtZSwgbmV4dE1zZyk7XG5cblx0XHRjb25zdCB1cGRhdGVkTW9kZWwgPSB7IC4uLmluaXRpYWxpemVkTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9O1xuXG5cdFx0Y29uc3QgW2RlZmVyLCBnZXREZWZlcnJlZF0gPSBjcmVhdGVEZWZlcjxUTW9kZWwsIFRNZXNzYWdlPigpO1xuXHRcdGNvbnN0IGNhbGxCYXNlID0gY3JlYXRlQ2FsbEJhc2UobmV4dE1zZywgdXBkYXRlZE1vZGVsLCBwcm9wc1JlZi5jdXJyZW50LCB7IGRlZmVyIH0pO1xuXG5cdFx0Y29uc3QgW25ld01vZGVsLCAuLi5jb21tYW5kc10gPSBjYWxsVXBkYXRlKHVwZGF0ZSwgbmV4dE1zZywgdXBkYXRlZE1vZGVsLCBwcm9wc1JlZi5jdXJyZW50LCB7IGRlZmVyLCBjYWxsQmFzZSB9KTtcblxuXHRcdGNvbnN0IFtkZWZlcnJlZE1vZGVsLCBkZWZlcnJlZENvbW1hbmRzXSA9IGdldERlZmVycmVkKCk7XG5cblx0XHRpZiAobW9kZWxIYXNDaGFuZ2VkKGN1cnJlbnRNb2RlbCwgeyAuLi5kZWZlcnJlZE1vZGVsLCAuLi5uZXdNb2RlbCB9KSkge1xuXHRcdFx0Y3VycmVudE1vZGVsID0geyAuLi5jdXJyZW50TW9kZWwsIC4uLmRlZmVycmVkTW9kZWwsIC4uLm5ld01vZGVsIH07XG5cblx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRleGVjQ21kKGRpc3BhdGNoLCAuLi5jb21tYW5kcywgLi4uZGVmZXJyZWRDb21tYW5kcyk7XG5cblx0XHRyZXR1cm4gbW9kaWZpZWQ7XG5cdH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZTxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPihcblx0dXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG5cdG1zZzogVE1lc3NhZ2UsXG5cdG1vZGVsOiBUTW9kZWwsXG5cdHByb3BzOiBUUHJvcHMsXG5cdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG5cdGlmICh0eXBlb2YgdXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gdXBkYXRlKG1vZGVsLCBtc2csIHByb3BzLCBvcHRpb25zKTtcblx0fVxuXG5cdHJldHVybiBjYWxsVXBkYXRlTWFwKHVwZGF0ZSwgbXNnLCBtb2RlbCwgcHJvcHMsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KFxuXHR1cGRhdGVNYXA6IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuXHRtc2c6IFRNZXNzYWdlLFxuXHRtb2RlbDogVE1vZGVsLFxuXHRwcm9wczogVFByb3BzLFxuXHRvcHRpb25zOiBVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbik6IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT4ge1xuXHRjb25zdCBtc2dOYW1lOiBUTWVzc2FnZVtcIm5hbWVcIl0gPSBtc2cubmFtZTtcblxuXHRyZXR1cm4gdXBkYXRlTWFwW21zZ05hbWVdKG1zZywgbW9kZWwsIHByb3BzLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHR5cGUgeyBVc2VFbG1pc2hPcHRpb25zIH07XG5cbmV4cG9ydCB7IGNhbGxVcGRhdGUsIGNhbGxVcGRhdGVNYXAsIHVzZUVsbWlzaCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFQLE9BQUE7QUFXaUIsU0FBQVEsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxR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
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX0NvbW1vbiIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJfZmFrZU9wdGlvbnMiLCJfSW5pdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfdG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9ub25JdGVyYWJsZVJlc3QiLCJTeW1ib2wiLCJpdGVyYXRvciIsImZyb20iLCJvd25LZXlzIiwiZSIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiYSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibiIsImwiLCJ1IiwiZiIsIm5leHQiLCJkb25lIiwidXNlRWxtaXNoIiwiX3JlZiIsInByb3BzIiwicmVJbml0T24iLCJpbml0IiwidXBkYXRlIiwic3Vic2NyaXB0aW9uIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwibW9kZWwiLCJzZXRNb2RlbCIsInByb3BzUmVmIiwidXNlUmVmIiwiZGV2VG9vbHNSZWYiLCJ1c2VSZWR1eCIsImlzTW91bnRlZFJlZiIsInVzZUlzTW91bnRlZCIsImN1cnJlbnRNb2RlbCIsImN1cnJlbnQiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsImRpc3BhdGNoIiwidXNlQ2FsbGJhY2siLCJnZXREaXNwYXRjaCIsImhhbmRsZU1lc3NhZ2UiLCJwcmV2TW9kZWwiLCJfU2VydmljZXMkbG9nZ2VyIiwidXBkYXRlZE1vZGVsIiwiU2VydmljZXMiLCJsb2dnZXIiLCJkZWJ1ZyIsIm1zZyIsIl9kZXZUb29sc1JlZiRjdXJyZW50Iiwic2VuZCIsImluaXRpYWxpemVkTW9kZWwiLCJydW5Jbml0IiwiaW5pdE1vZGVsIiwidXNlUmVJbml0IiwidXNlU3Vic2NyaXB0aW9uIiwibmV4dE1zZyIsIm1vZGlmaWVkIiwibG9nTWVzc2FnZSIsIl9jcmVhdGVEZWZlciIsImNyZWF0ZURlZmVyIiwiX2NyZWF0ZURlZmVyMiIsImRlZmVyIiwiZ2V0RGVmZXJyZWQiLCJjYWxsQmFzZSIsImNyZWF0ZUNhbGxCYXNlIiwiX2NhbGxVcGRhdGUiLCJjYWxsVXBkYXRlIiwiX2NhbGxVcGRhdGUyIiwibmV3TW9kZWwiLCJjb21tYW5kcyIsIl9nZXREZWZlcnJlZCIsIl9nZXREZWZlcnJlZDIiLCJkZWZlcnJlZE1vZGVsIiwiZGVmZXJyZWRDb21tYW5kcyIsIm1vZGVsSGFzQ2hhbmdlZCIsImV4ZWNDbWQiLCJjb25jYXQiLCJvcHRpb25zIiwiY2FsbFVwZGF0ZU1hcCIsInVwZGF0ZU1hcCIsIm1zZ05hbWUiXSwic291cmNlcyI6WyIuLi9zcmMvdXNlRWxtaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuXHRleGVjQ21kLFxuXHRnZXREaXNwYXRjaCxcblx0bG9nTWVzc2FnZSxcblx0bW9kZWxIYXNDaGFuZ2VkLFxuXHRydW5Jbml0LFxuXHR1c2VJc01vdW50ZWQsXG5cdHVzZVJlZHV4LFxuXHR1c2VSZUluaXQsXG5cdHVzZVN1YnNjcmlwdGlvbixcbn0gZnJvbSBcIi4vQ29tbW9uXCI7XG5pbXBvcnQgeyBjcmVhdGVDYWxsQmFzZSB9IGZyb20gXCIuL2NyZWF0ZUNhbGxCYXNlXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWZlciB9IGZyb20gXCIuL2NyZWF0ZURlZmVyXCI7XG5pbXBvcnQgeyBnZXRGYWtlT3B0aW9uc09uY2UgfSBmcm9tIFwiLi9mYWtlT3B0aW9uc1wiO1xuaW1wb3J0IHsgU2VydmljZXMgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdERpc3BhdGNoLFxuXHRJbml0RnVuY3Rpb24sXG5cdE1lc3NhZ2UsXG5cdE51bGxhYmxlLFxuXHRTdWJzY3JpcHRpb24sXG5cdFVwZGF0ZUZ1bmN0aW9uLFxuXHRVcGRhdGVGdW5jdGlvbk9wdGlvbnMsXG5cdFVwZGF0ZU1hcCxcblx0VXBkYXRlUmV0dXJuVHlwZSxcbn0gZnJvbSBcIi4vVHlwZXNcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgYHVzZUVsbWlzaGAgaG9vay5cbiAqIEBpbnRlcmZhY2UgVXNlRWxtaXNoT3B0aW9uc1xuICogQHRlbXBsYXRlIFRQcm9wcyBUaGUgdHlwZSBvZiB0aGUgcHJvcHMuXG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIFVzZUVsbWlzaE9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4ge1xuXHQvKipcblx0ICogVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBpcyB1c2VkIGZvciBsb2dnaW5nIG9ubHkuXG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgcHJvcHMgcGFzc2VkIHRvIHRoZSBjb21wb25lbnQuXG5cdCAqIEB0eXBlIHtUUHJvcHN9XG5cdCAqL1xuXHRwcm9wczogVFByb3BzO1xuXHQvKipcblx0ICogQXJyYXkgb2YgdmFsdWVzIHRoYXQgdHJpZ2dlciBhIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqL1xuXHRyZUluaXRPbj86IHVua25vd25bXTtcblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnRzIG1vZGVsLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIG9uY2UuXG5cdCAqIEB0eXBlIHtJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPn1cblx0ICovXG5cdGluaXQ6IEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+O1xuXHQvKipcblx0ICogVGhlIGB1cGRhdGVgIGZ1bmN0aW9uIG9yIHVwZGF0ZSBtYXAgb2JqZWN0LlxuXHQgKiBAdHlwZSB7KFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPil9XG5cdCAqL1xuXHR1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPjtcblx0LyoqXG5cdCAqIFRoZSBvcHRpb25hbCBgc3Vic2NyaXB0aW9uYCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBvbmNlLlxuXHQgKiBAdHlwZSB7KFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPil9XG5cdCAqL1xuXHRzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPjtcbn1cblxuLyoqXG4gKiBIb29rIHRvIHVzZSB0aGUgRWxtIGFyY2hpdGVjdHVyZSBwYXR0ZXJuIGluIGEgZnVuY3Rpb24gY29tcG9uZW50LlxuICogQHBhcmFtIHtVc2VFbG1pc2hPcHRpb25zfSBvcHRpb25zIFRoZSBvcHRpb25zIHBhc3NlZCB0aGUgdGhlIGhvb2suXG4gKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgbW9kZWwgYW5kIHRoZSBkaXNwYXRjaGVyLlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IFttb2RlbCwgZGlzcGF0Y2hdID0gdXNlRWxtaXNoKHsgcHJvcHMsIGluaXQsIHVwZGF0ZSwgbmFtZTogXCJNeUNvbXBvbmVudFwiIH0pO1xuICovXG5mdW5jdGlvbiB1c2VFbG1pc2g8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oe1xuXHRuYW1lLFxuXHRwcm9wcyxcblx0cmVJbml0T24sXG5cdGluaXQsXG5cdHVwZGF0ZSxcblx0c3Vic2NyaXB0aW9uLFxufTogVXNlRWxtaXNoT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+KTogW1RNb2RlbCwgRGlzcGF0Y2g8VE1lc3NhZ2U+XSB7XG5cdGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gdXNlU3RhdGU8TnVsbGFibGU8VE1vZGVsPj4obnVsbCk7XG5cdGNvbnN0IHByb3BzUmVmID0gdXNlUmVmKHByb3BzKTtcblx0Y29uc3QgZGV2VG9vbHNSZWYgPSB1c2VSZWR1eChuYW1lLCBzZXRNb2RlbCk7XG5cdGNvbnN0IGlzTW91bnRlZFJlZiA9IHVzZUlzTW91bnRlZCgpO1xuXG5cdGxldCBjdXJyZW50TW9kZWwgPSBtb2RlbDtcblxuXHRpZiAocHJvcHNSZWYuY3VycmVudCAhPT0gcHJvcHMpIHtcblx0XHRwcm9wc1JlZi5jdXJyZW50ID0gcHJvcHM7XG5cdH1cblxuXHRjb25zdCBmYWtlT3B0aW9ucyA9IGdldEZha2VPcHRpb25zT25jZTxUTW9kZWwsIFRNZXNzYWdlPigpO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VDYWxsYmFjayhcblx0XHRnZXREaXNwYXRjaChcblx0XHRcdGhhbmRsZU1lc3NhZ2UsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGlmICghaXNNb3VudGVkUmVmLmN1cnJlbnQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzZXRNb2RlbCgocHJldk1vZGVsKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdXBkYXRlZE1vZGVsID0geyAuLi5wcmV2TW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9O1xuXG5cdFx0XHRcdFx0U2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIlVwZGF0ZSBtb2RlbCBmb3JcIiwgbmFtZSwgdXBkYXRlZE1vZGVsKTtcblxuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXR5cGUtYXNzZXJ0aW9uIC0tIFdlIGFsd2F5cyBoYXZlIGEgZnVsbCBtb2RlbCBoZXJlXG5cdFx0XHRcdFx0cmV0dXJuIHVwZGF0ZWRNb2RlbCBhcyBUTW9kZWw7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdChtc2cpID0+IHtcblx0XHRcdFx0ZGV2VG9vbHNSZWYuY3VycmVudD8uc2VuZChtc2cubmFtZSwgeyAuLi5jdXJyZW50TW9kZWwgfSk7XG5cdFx0XHR9LFxuXHRcdFx0ZmFrZU9wdGlvbnM/LmRpc3BhdGNoLFxuXHRcdCksXG5cdFx0W10sXG5cdCk7XG5cblx0bGV0IGluaXRpYWxpemVkTW9kZWwgPSBjdXJyZW50TW9kZWw7XG5cblx0aW5pdGlhbGl6ZWRNb2RlbCA/Pz0gcnVuSW5pdChcblx0XHRuYW1lLFxuXHRcdGluaXQsXG5cdFx0cHJvcHMsXG5cdFx0KGluaXRNb2RlbCkgPT4ge1xuXHRcdFx0Y3VycmVudE1vZGVsID0gaW5pdE1vZGVsO1xuXHRcdFx0c2V0TW9kZWwoY3VycmVudE1vZGVsKTtcblx0XHR9LFxuXHRcdGRpc3BhdGNoLFxuXHRcdGRldlRvb2xzUmVmLmN1cnJlbnQsXG5cdFx0ZmFrZU9wdGlvbnM/Lm1vZGVsLFxuXHQpO1xuXG5cdHVzZVJlSW5pdChzZXRNb2RlbCwgcmVJbml0T24pO1xuXHR1c2VTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uLCBpbml0aWFsaXplZE1vZGVsLCBwcm9wcywgZGlzcGF0Y2gsIHJlSW5pdE9uKTtcblxuXHRyZXR1cm4gW2luaXRpYWxpemVkTW9kZWwsIGRpc3BhdGNoXTtcblxuXHRmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKG5leHRNc2c6IFRNZXNzYWdlKTogYm9vbGVhbiB7XG5cdFx0aWYgKCFjdXJyZW50TW9kZWwpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuXHRcdGxvZ01lc3NhZ2UobmFtZSwgbmV4dE1zZyk7XG5cblx0XHRjb25zdCB1cGRhdGVkTW9kZWwgPSB7IC4uLmN1cnJlbnRNb2RlbCB9IGFzIFRNb2RlbDtcblxuXHRcdGNvbnN0IFtkZWZlciwgZ2V0RGVmZXJyZWRdID0gY3JlYXRlRGVmZXI8VE1vZGVsLCBUTWVzc2FnZT4oKTtcblx0XHRjb25zdCBjYWxsQmFzZSA9IGNyZWF0ZUNhbGxCYXNlKG5leHRNc2csIHVwZGF0ZWRNb2RlbCwgcHJvcHNSZWYuY3VycmVudCwgeyBkZWZlciB9KTtcblxuXHRcdGNvbnN0IFtuZXdNb2RlbCwgLi4uY29tbWFuZHNdID0gY2FsbFVwZGF0ZSh1cGRhdGUsIG5leHRNc2csIHVwZGF0ZWRNb2RlbCwgcHJvcHNSZWYuY3VycmVudCwgeyBkZWZlciwgY2FsbEJhc2UgfSk7XG5cblx0XHRjb25zdCBbZGVmZXJyZWRNb2RlbCwgZGVmZXJyZWRDb21tYW5kc10gPSBnZXREZWZlcnJlZCgpO1xuXG5cdFx0aWYgKG1vZGVsSGFzQ2hhbmdlZChjdXJyZW50TW9kZWwsIHsgLi4uZGVmZXJyZWRNb2RlbCwgLi4ubmV3TW9kZWwgfSkpIHtcblx0XHRcdGN1cnJlbnRNb2RlbCA9IHsgLi4uY3VycmVudE1vZGVsLCAuLi5kZWZlcnJlZE1vZGVsLCAuLi5uZXdNb2RlbCB9O1xuXG5cdFx0XHRtb2RpZmllZCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0ZXhlY0NtZChkaXNwYXRjaCwgLi4uY29tbWFuZHMsIC4uLmRlZmVycmVkQ29tbWFuZHMpO1xuXG5cdFx0cmV0dXJuIG1vZGlmaWVkO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRhdGU8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oXG5cdHVwZGF0ZTogVXBkYXRlRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiB8IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuXHRtc2c6IFRNZXNzYWdlLFxuXHRtb2RlbDogVE1vZGVsLFxuXHRwcm9wczogVFByb3BzLFxuXHRvcHRpb25zOiBVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbik6IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT4ge1xuXHRpZiAodHlwZW9mIHVwZGF0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0cmV0dXJuIHVwZGF0ZShtb2RlbCwgbXNnLCBwcm9wcywgb3B0aW9ucyk7XG5cdH1cblxuXHRyZXR1cm4gY2FsbFVwZGF0ZU1hcCh1cGRhdGUsIG1zZywgbW9kZWwsIHByb3BzLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPihcblx0dXBkYXRlTWFwOiBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcblx0bXNnOiBUTWVzc2FnZSxcblx0bW9kZWw6IFRNb2RlbCxcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4pOiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+IHtcblx0Y29uc3QgbXNnTmFtZTogVE1lc3NhZ2VbXCJuYW1lXCJdID0gbXNnLm5hbWU7XG5cblx0cmV0dXJuIHVwZGF0ZU1hcFttc2dOYW1lXShtc2csIG1vZGVsLCBwcm9wcywgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB0eXBlIHsgVXNlRWxtaXNoT3B0aW9ucyB9O1xuXG5leHBvcnQgeyBjYWxsVXBkYXRlLCBjYWxsVXBkYXRlTWFwLCB1c2VFbG1pc2ggfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBV0EsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBQWtDLFNBQUFNLG1CQUFBQyxDQUFBLFdBQUFDLGtCQUFBLENBQUFELENBQUEsS0FBQUUsZ0JBQUEsQ0FBQUYsQ0FBQSxLQUFBRywyQkFBQSxDQUFBSCxDQUFBLEtBQUFJLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFKLG1CQUFBRCxDQUFBLFFBQUFNLEtBQUEsQ0FBQUMsT0FBQSxDQUFBUCxDQUFBLFVBQUFRLGlCQUFBLENBQUFSLENBQUE7QUFBQSxTQUFBUyxTQUFBVCxDQUFBLFdBQUFVLGVBQUEsQ0FBQVYsQ0FBQSxLQUFBRSxnQkFBQSxDQUFBRixDQUFBLEtBQUFHLDJCQUFBLENBQUFILENBQUEsS0FBQVcsZ0JBQUE7QUFBQSxTQUFBVCxpQkFBQUYsQ0FBQSw4QkFBQVksTUFBQSxZQUFBWixD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-elmish",
3
- "version": "10.2.0",
3
+ "version": "10.3.0-beta.2",
4
4
  "description": "Elmish for React using Typescript",
5
5
  "author": "atheck",
6
6
  "license": "MIT",
@@ -11,7 +11,7 @@
11
11
  "test": "jest --coverage",
12
12
  "test:watch": "jest --watch --coverage",
13
13
  "lint": "biome lint src --max-diagnostics 200 && npx eslint src",
14
- "update": "npx -y npm-check-updates -i --install never && npx -y npm-check-updates -i --target minor --install never && npx -y npm-check-updates -i --target patch --install never && npm update",
14
+ "update": "npx -y npm-check-updates -i --install never && npx -y npm-check-updates -i --target minor --install never && npx -y npm-check-updates -i --target patch --install never && npm update && npm audit signatures",
15
15
  "semantic-release": "semantic-release"
16
16
  },
17
17
  "dependencies": {
@@ -27,20 +27,20 @@
27
27
  "@babel/preset-env": "7.28.0",
28
28
  "@babel/preset-react": "7.27.1",
29
29
  "@babel/preset-typescript": "7.27.1",
30
- "@biomejs/biome": "2.1.1",
31
- "@testing-library/dom": "10.4.0",
30
+ "@biomejs/biome": "2.1.4",
31
+ "@testing-library/dom": "10.4.1",
32
32
  "@testing-library/react": "16.3.0",
33
33
  "@types/jest": "30.0.0",
34
- "@types/react": "19.1.8",
35
- "@types/react-dom": "19.1.6",
36
- "eslint": "9.30.1",
37
- "eslint-config-heck": "7.1.1",
38
- "jest": "30.0.4",
39
- "jest-environment-jsdom": "30.0.4",
40
- "semantic-release": "24.2.6",
41
- "ts-jest": "29.4.0",
34
+ "@types/react": "19.1.10",
35
+ "@types/react-dom": "19.1.7",
36
+ "eslint": "9.33.0",
37
+ "eslint-config-heck": "7.3.3",
38
+ "jest": "30.0.5",
39
+ "jest-environment-jsdom": "30.0.5",
40
+ "semantic-release": "24.2.7",
41
+ "ts-jest": "29.4.1",
42
42
  "tslib": "2.8.1",
43
- "typescript": "5.8.3"
43
+ "typescript": "5.9.2"
44
44
  },
45
45
  "homepage": "https://github.com/atheck/react-elmish",
46
46
  "repository": {