react-elmish 4.0.1 → 4.2.0-beta.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.
@@ -3,6 +3,8 @@ on:
3
3
  push:
4
4
  branches:
5
5
  - main
6
+ - beta
7
+ - alpha
6
8
 
7
9
  jobs:
8
10
  test:
package/.releaserc.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "branches": ["main"]
2
+ "branches": ["main", { "name": "beta", "prerelease": true}, { "name": "alpha", "prerelease": true }]
3
3
  }
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # react-elmish
2
2
 
3
- ![Build](https://github.com/atheck/react-elmish/actions/workflows/main.yml/badge.svg)
3
+ ![Build](https://github.com/atheck/react-elmish/actions/workflows/release.yml/badge.svg)
4
4
  ![npm](https://img.shields.io/npm/v/react-elmish)
5
5
 
6
6
  This library brings the elmish pattern to react.
@@ -850,19 +850,20 @@ To test your **update** function you can use some helper functions in `react-elm
850
850
  | --- | --- |
851
851
  | `getOfMsgParams` | Extracts the messages out of a command |
852
852
  | `execCmd` | Executes the provided command and returns an array of all messages. |
853
- | `getUpdateFn` | returns an `update` function for your update map object. |
853
+ | `getUpdateFn` | Returns an `update` function for your update map object. |
854
+ | `createUpdateArgsFactory` | Creates a factory function to create a message, a model, and props in a test. |
854
855
 
855
856
  ### Testing the model and simple message commands
856
857
 
857
858
  ```ts
858
859
  import * as Testing from "react-elmish/dist/Testing";
859
860
 
861
+ const createUpdateArgs = Testing.createUpdateArgsFactory(() => ({ /* initial model */ }), () => ({ /* initial props */ }));
862
+
860
863
  ...
861
864
  it("returns the correct model and cmd", () => {
862
865
  // arrange
863
- const model = // create model for test
864
- const props = // create props for test
865
- const msg = Shared.Msg.test();
866
+ const [msg, model, props] = createUpdateArgs(Shared.Msg.test(), { /* optionally override model here */ }, { /* optionally override props here */ });
866
867
 
867
868
  const expectedValue = // what you expect in the model
868
869
  const expectedCmds = [
@@ -892,9 +893,7 @@ import * as Testing from "react-elmish/dist/Testing";
892
893
  ...
893
894
  it("returns the correct cmd", () => {
894
895
  // arrange
895
- const model = { /* create model */ };
896
- const props = { /* create props */ };
897
- const msg = Shared.Msg.asyncTest();
896
+ const [msg, model, props] = createUpdateArgs(Shared.Msg.asyncTest());
898
897
 
899
898
  // mock function which is called when the "AsyncTest" message is handled
900
899
  const functionMock = jest.fn();
@@ -9,6 +9,8 @@ exports.ElmComponent = void 0;
9
9
 
10
10
  var _Init = require("./Init");
11
11
 
12
+ var _fakeInitResult = require("./Testing/fakeInitResult");
13
+
12
14
  var _react = _interopRequireDefault(require("react"));
13
15
 
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -74,6 +76,8 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
74
76
  * @memberof ElmComponent
75
77
  */
76
78
  function ElmComponent(props, init, name) {
79
+ var _getFakeInitResultOnc;
80
+
77
81
  var _this;
78
82
 
79
83
  _classCallCheck(this, ElmComponent);
@@ -97,10 +101,6 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
97
101
  return model !== _this.currentModel && Object.getOwnPropertyNames(model).length > 0;
98
102
  };
99
103
 
100
- if (_Init.Services.dispatchMiddleware) {
101
- _Init.Services.dispatchMiddleware(msg);
102
- }
103
-
104
104
  if (_this.reentered) {
105
105
  _this.buffer.push(msg);
106
106
  } else {
@@ -114,6 +114,10 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
114
114
  (_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 ? void 0 : _Services$logger.info("Elm", "message from", _this.componentName, nextMsg.name);
115
115
  (_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 ? void 0 : _Services$logger2.debug("Elm", "message from", _this.componentName, nextMsg);
116
116
 
117
+ if (_Init.Services.dispatchMiddleware) {
118
+ _Init.Services.dispatchMiddleware(nextMsg);
119
+ }
120
+
117
121
  try {
118
122
  var _this$update = _this.update(_this.currentModel, nextMsg, _this.props),
119
123
  _this$update2 = _slicedToArray(_this$update, 2),
@@ -151,10 +155,10 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
151
155
 
152
156
  _defineProperty(_assertThisInitialized(_this), "update", void 0);
153
157
 
154
- var _init = init(_this.props),
155
- _init2 = _slicedToArray(_init, 2),
156
- _model = _init2[0],
157
- _cmd = _init2[1];
158
+ var _ref = (_getFakeInitResultOnc = (0, _fakeInitResult.getFakeInitResultOnce)()) !== null && _getFakeInitResultOnc !== void 0 ? _getFakeInitResultOnc : init(_this.props),
159
+ _ref2 = _slicedToArray(_ref, 2),
160
+ _model = _ref2[0],
161
+ _cmd = _ref2[1];
158
162
 
159
163
  _this.componentName = name;
160
164
  _this.currentModel = _model;
@@ -228,4 +232,4 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
228
232
  }(_react["default"].Component);
229
233
 
230
234
  exports.ElmComponent = ElmComponent;
231
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbG1Db21wb25lbnQiLCJwcm9wcyIsImluaXQiLCJuYW1lIiwibXNnIiwibW9kZWxIYXNDaGFuZ2VkIiwibW9kZWwiLCJjdXJyZW50TW9kZWwiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibGVuZ3RoIiwiU2VydmljZXMiLCJkaXNwYXRjaE1pZGRsZXdhcmUiLCJyZWVudGVyZWQiLCJidWZmZXIiLCJwdXNoIiwibmV4dE1zZyIsIm1vZGlmaWVkIiwibG9nZ2VyIiwiaW5mbyIsImNvbXBvbmVudE5hbWUiLCJkZWJ1ZyIsInVwZGF0ZSIsImNtZCIsImV4ZWNDbWQiLCJleCIsImVycm9yIiwic2hpZnQiLCJtb3VudGVkIiwiZm9yY2VVcGRhdGUiLCJpbml0Q21kIiwiZm9yRWFjaCIsImNhbGwiLCJkaXNwYXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vc3JjL0VsbUNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbml0RnVuY3Rpb24sIE51bGxhYmxlLCBVcGRhdGVGdW5jdGlvbiB9IGZyb20gXCIuL1R5cGVzXCI7XG5pbXBvcnQgeyBNZXNzYWdlLCBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IENtZCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgZWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1zZyBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRWxtQ29tcG9uZW50PFRNb2RlbCwgVE1zZyBleHRlbmRzIE1lc3NhZ2UsIFRQcm9wcz4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8VFByb3BzPiB7XG4gICAgcHJpdmF0ZSBpbml0Q21kOiBOdWxsYWJsZTxDbWQ8VE1zZz4+IHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBUTXNnIFtdID0gW107XG4gICAgcHJpdmF0ZSByZWVudGVyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1vdW50ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRNb2RlbDogVE1vZGVsO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBFbG1Db21wb25lbnQuXG4gICAgICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0geygpID0+IFRNb2RlbH0gaW5pdCBUaGUgaW5pdGlhbGl6ZXIgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwcm9wczogVFByb3BzLCBpbml0OiBJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNc2c+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IGluaXQodGhpcy5wcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5pbml0Q21kID0gY21kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuICAgICAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRDbWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY0NtZCh0aGlzLmluaXRDbWQpO1xuICAgICAgICAgICAgdGhpcy5pbml0Q21kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY0NtZCAoY21kOiBDbWQ8VE1zZz4pOiB2b2lkIHtcbiAgICAgICAgY21kLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGwodGhpcy5kaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZXJyb3IoZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG1vZGVsLlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEB0eXBlIHtSZWFkb25seTxUTW9kZWw+fVxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1vZGVsICgpOiBSZWFkb25seTxUTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1vZGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BhdGNoZXMgYSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1zZ30gbXNnIFRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoLlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGF0Y2ggPSAobXNnOiBUTXNnKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGVsSGFzQ2hhbmdlZCA9IChtb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiA9PiBtb2RlbCAhPT0gdGhpcy5jdXJyZW50TW9kZWwgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobW9kZWwpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgaWYgKFNlcnZpY2VzLmRpc3BhdGNoTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlKG1zZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZWVudGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyLnB1c2gobXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVlbnRlcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgbGV0IG5leHRNc2c6IFRNc2cgfCB1bmRlZmluZWQgPSBtc2c7XG4gICAgICAgICAgICBsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgd2hpbGUgKG5leHRNc2cpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmluZm8oXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgdGhpcy5jb21wb25lbnROYW1lLCBuZXh0TXNnLm5hbWUpO1xuICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZGVidWcoXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgdGhpcy5jb21wb25lbnROYW1lLCBuZXh0TXNnKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IHRoaXMudXBkYXRlKHRoaXMuY3VycmVudE1vZGVsLCBuZXh0TXNnLCB0aGlzLnByb3BzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWxIYXNDaGFuZ2VkKG1vZGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSB7IC4uLnRoaXMuY3VycmVudE1vZGVsLCAuLi5tb2RlbCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjQ21kKGNtZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmVycm9yKGV4KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXh0TXNnID0gdGhpcy5idWZmZXIuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVlbnRlcmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1vdW50ZWQgJiYgbW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiRWxtXCIsIFwidXBkYXRlIG1vZGVsIGZvclwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIHRoaXMuY3VycmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSBtb2RlbCBiYXNlZCBvbiBhIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTW9kZWx9IG1vZGVsIFRoZSBjdXJyZW50IG1vZGVsLlxuICAgICAqIEBwYXJhbSB7VE1zZ30gbXNnIFRoZSBtZXNzYWdlIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgbW9kZWwgKGNhbiBhbHNvIGJlIGFuIGVtcHR5IG9iamVjdCB7fSkgYW5kIGFuIG9wdGlvbmFsIG5ldyBtZXNzYWdlIHRvIGRpc3BhdGNoLlxuICAgICAqIEBhYnN0cmFjdFxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgdXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1zZz47XG59XG5cbmV4cG9ydCB7XG4gICAgRWxtQ29tcG9uZW50LFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNlQSxZOzs7OztFQVFYO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0ksc0JBQW9CQyxLQUFwQixFQUFtQ0MsSUFBbkMsRUFBNkVDLElBQTdFLEVBQTJGO0lBQUE7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
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbG1Db21wb25lbnQiLCJwcm9wcyIsImluaXQiLCJuYW1lIiwibXNnIiwibW9kZWxIYXNDaGFuZ2VkIiwibW9kZWwiLCJjdXJyZW50TW9kZWwiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibGVuZ3RoIiwicmVlbnRlcmVkIiwiYnVmZmVyIiwicHVzaCIsIm5leHRNc2ciLCJtb2RpZmllZCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiaW5mbyIsImNvbXBvbmVudE5hbWUiLCJkZWJ1ZyIsImRpc3BhdGNoTWlkZGxld2FyZSIsInVwZGF0ZSIsImNtZCIsImV4ZWNDbWQiLCJleCIsImVycm9yIiwic2hpZnQiLCJtb3VudGVkIiwiZm9yY2VVcGRhdGUiLCJnZXRGYWtlSW5pdFJlc3VsdE9uY2UiLCJpbml0Q21kIiwiZm9yRWFjaCIsImNhbGwiLCJkaXNwYXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vc3JjL0VsbUNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbml0RnVuY3Rpb24sIE51bGxhYmxlLCBVcGRhdGVGdW5jdGlvbiB9IGZyb20gXCIuL1R5cGVzXCI7XG5pbXBvcnQgeyBNZXNzYWdlLCBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IENtZCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgZ2V0RmFrZUluaXRSZXN1bHRPbmNlIH0gZnJvbSBcIi4vVGVzdGluZy9mYWtlSW5pdFJlc3VsdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgZWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1zZyBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRWxtQ29tcG9uZW50PFRNb2RlbCwgVE1zZyBleHRlbmRzIE1lc3NhZ2UsIFRQcm9wcz4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8VFByb3BzPiB7XG4gICAgcHJpdmF0ZSBpbml0Q21kOiBOdWxsYWJsZTxDbWQ8VE1zZz4+IHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBUTXNnIFtdID0gW107XG4gICAgcHJpdmF0ZSByZWVudGVyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1vdW50ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRNb2RlbDogVE1vZGVsO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBFbG1Db21wb25lbnQuXG4gICAgICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0geygpID0+IFRNb2RlbH0gaW5pdCBUaGUgaW5pdGlhbGl6ZXIgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwcm9wczogVFByb3BzLCBpbml0OiBJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNc2c+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IGdldEZha2VJbml0UmVzdWx0T25jZTxUTW9kZWwsIFRNc2c+KCkgPz8gaW5pdCh0aGlzLnByb3BzKTtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmluaXRDbWQgPSBjbWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQuXG4gICAgICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5pdENtZCkge1xuICAgICAgICAgICAgdGhpcy5leGVjQ21kKHRoaXMuaW5pdENtZCk7XG4gICAgICAgICAgICB0aGlzLmluaXRDbWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIGJlZm9yZSB1bmxvYWRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBXaGVuIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGNhbGxlZC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGNvbXBvbmVudFdpbGxVbm1vdW50ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleGVjQ21kIChjbWQ6IENtZDxUTXNnPik6IHZvaWQge1xuICAgICAgICBjbWQuZm9yRWFjaChjYWxsID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbCh0aGlzLmRpc3BhdGNoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5lcnJvcihleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgbW9kZWwuXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQHR5cGUge1JlYWRvbmx5PFRNb2RlbD59XG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbW9kZWwgKCk6IFJlYWRvbmx5PFRNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TW9kZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGF0Y2hlcyBhIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTXNnfSBtc2cgVGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBkaXNwYXRjaCA9IChtc2c6IFRNc2cpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW9kZWxIYXNDaGFuZ2VkID0gKG1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4pOiBib29sZWFuID0+IG1vZGVsICE9PSB0aGlzLmN1cnJlbnRNb2RlbCAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtb2RlbCkubGVuZ3RoID4gMDtcblxuICAgICAgICBpZiAodGhpcy5yZWVudGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyLnB1c2gobXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVlbnRlcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgbGV0IG5leHRNc2c6IFRNc2cgfCB1bmRlZmluZWQgPSBtc2c7XG4gICAgICAgICAgICBsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgd2hpbGUgKG5leHRNc2cpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmluZm8oXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgdGhpcy5jb21wb25lbnROYW1lLCBuZXh0TXNnLm5hbWUpO1xuICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZGVidWcoXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgdGhpcy5jb21wb25lbnROYW1lLCBuZXh0TXNnKTtcblxuICAgICAgICAgICAgICAgIGlmIChTZXJ2aWNlcy5kaXNwYXRjaE1pZGRsZXdhcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlKG5leHRNc2cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IHRoaXMudXBkYXRlKHRoaXMuY3VycmVudE1vZGVsLCBuZXh0TXNnLCB0aGlzLnByb3BzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWxIYXNDaGFuZ2VkKG1vZGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSB7IC4uLnRoaXMuY3VycmVudE1vZGVsLCAuLi5tb2RlbCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjQ21kKGNtZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmVycm9yKGV4KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXh0TXNnID0gdGhpcy5idWZmZXIuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVlbnRlcmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1vdW50ZWQgJiYgbW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiRWxtXCIsIFwidXBkYXRlIG1vZGVsIGZvclwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIHRoaXMuY3VycmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSBtb2RlbCBiYXNlZCBvbiBhIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTW9kZWx9IG1vZGVsIFRoZSBjdXJyZW50IG1vZGVsLlxuICAgICAqIEBwYXJhbSB7VE1zZ30gbXNnIFRoZSBtZXNzYWdlIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgbW9kZWwgKGNhbiBhbHNvIGJlIGFuIGVtcHR5IG9iamVjdCB7fSkgYW5kIGFuIG9wdGlvbmFsIG5ldyBtZXNzYWdlIHRvIGRpc3BhdGNoLlxuICAgICAqIEBhYnN0cmFjdFxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgdXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1zZz47XG59XG5cbmV4cG9ydCB7XG4gICAgRWxtQ29tcG9uZW50LFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -0,0 +1,5 @@
1
+ import { InitResult, MessageBase, Nullable } from "../Types";
2
+ declare type FakeInitResult = Nullable<[unknown, unknown?]>;
3
+ declare function setFakeInitResult(model: FakeInitResult): void;
4
+ declare function getFakeInitResultOnce<TModel, TMessage extends MessageBase>(): Nullable<InitResult<TModel, TMessage>>;
5
+ export { setFakeInitResult, getFakeInitResultOnce, };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFakeInitResultOnce = getFakeInitResultOnce;
7
+ exports.setFakeInitResult = setFakeInitResult;
8
+ var initResult;
9
+
10
+ function setFakeInitResult(model) {
11
+ initResult = model;
12
+ }
13
+
14
+ function getFakeInitResultOnce() {
15
+ var temp = initResult;
16
+ initResult = null;
17
+ return temp;
18
+ }
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbml0UmVzdWx0Iiwic2V0RmFrZUluaXRSZXN1bHQiLCJtb2RlbCIsImdldEZha2VJbml0UmVzdWx0T25jZSIsInRlbXAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvVGVzdGluZy9mYWtlSW5pdFJlc3VsdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbml0UmVzdWx0LCBNZXNzYWdlQmFzZSwgTnVsbGFibGUgfSBmcm9tIFwiLi4vVHlwZXNcIjtcblxudHlwZSBGYWtlSW5pdFJlc3VsdCA9IE51bGxhYmxlPFt1bmtub3duLCB1bmtub3duP10+O1xuXG5sZXQgaW5pdFJlc3VsdDogRmFrZUluaXRSZXN1bHQ7XG5cbmZ1bmN0aW9uIHNldEZha2VJbml0UmVzdWx0IChtb2RlbDogRmFrZUluaXRSZXN1bHQpOiB2b2lkIHtcbiAgICBpbml0UmVzdWx0ID0gbW9kZWw7XG59XG5cbmZ1bmN0aW9uIGdldEZha2VJbml0UmVzdWx0T25jZTxUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZUJhc2U+ICgpOiBOdWxsYWJsZTxJbml0UmVzdWx0PFRNb2RlbCwgVE1lc3NhZ2U+PiB7XG4gICAgY29uc3QgdGVtcCA9IGluaXRSZXN1bHQgYXMgTnVsbGFibGU8SW5pdFJlc3VsdDxUTW9kZWwsIFRNZXNzYWdlPj47XG5cbiAgICBpbml0UmVzdWx0ID0gbnVsbDtcblxuICAgIHJldHVybiB0ZW1wO1xufVxuXG5leHBvcnQge1xuICAgIHNldEZha2VJbml0UmVzdWx0LFxuICAgIGdldEZha2VJbml0UmVzdWx0T25jZSxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsSUFBSUEsVUFBSjs7QUFFQSxTQUFTQyxpQkFBVCxDQUE0QkMsS0FBNUIsRUFBeUQ7RUFDckRGLFVBQVUsR0FBR0UsS0FBYjtBQUNIOztBQUVELFNBQVNDLHFCQUFULEdBQWdIO0VBQzVHLElBQU1DLElBQUksR0FBR0osVUFBYjtFQUVBQSxVQUFVLEdBQUcsSUFBYjtFQUVBLE9BQU9JLElBQVA7QUFDSCJ9
@@ -1,5 +1,6 @@
1
- import { MessageBase, Nullable, UpdateMap, UpdateReturnType } from "../Types";
1
+ import { InitResult, MessageBase, Nullable, UpdateMap, UpdateReturnType } from "../Types";
2
2
  import { Cmd } from "../Cmd";
3
+ import React from "react";
3
4
  /**
4
5
  * Extracts the messages out of a command.
5
6
  * @param cmd The command to process.
@@ -12,5 +13,25 @@ declare function getOfMsgParams<TMsg>(cmd?: Cmd<TMsg>): TMsg[];
12
13
  * @returns The array of processed messages.
13
14
  */
14
15
  declare function execCmd<TMsg>(cmd?: Cmd<TMsg>): Promise<Nullable<TMsg>[]>;
16
+ /**
17
+ * Creates an update function out of an UpdateMap.
18
+ * @param {UpdateMap<TProps, TModel, TMessage>} updateMap The UpdateMap.
19
+ * @returns {(msg: TMessage, model: TModel, props: TProps) => UpdateReturnType<TModel, TMessage>} The created update function which can be used in tests.
20
+ */
15
21
  declare function getUpdateFn<TProps, TModel, TMessage extends MessageBase>(updateMap: UpdateMap<TProps, TModel, TMessage>): (msg: TMessage, model: TModel, props: TProps) => UpdateReturnType<TModel, TMessage>;
16
- export { getOfMsgParams, execCmd, getUpdateFn, };
22
+ declare type UpdateArgsFactory<TProps, TModel, TMessage extends MessageBase> = (msg: TMessage, modelTemplate?: Partial<TModel>, propsTemplate?: Partial<TProps>) => [TMessage, TModel, TProps];
23
+ /**
24
+ * Creates a factory function to create a message, a model, and props which can be passed to an update function in tests.
25
+ * @param {() => TModel} initModel A function to create an initial model.
26
+ * @param {() => TProps} initProps A function to create initial props.
27
+ * @returns {UpdateArgsFactory<TProps, TModel, TMessage>} A function to create a message, a model, and props.
28
+ * @example
29
+ * // one time
30
+ * const createUpdateArgs = createUpdateArgsFactory(() => ({ ... }), () => ({ ... }));
31
+ * // in tests
32
+ * const [msg, model, props] = createUpdateArgs(Msg.myMessage(), { ... }, , { ... });
33
+ */
34
+ declare function createUpdateArgsFactory<TProps, TModel, TMessage extends MessageBase>(initModel: () => TModel, initProps: () => TProps): UpdateArgsFactory<TProps, TModel, TMessage>;
35
+ declare function renderWithFakeInit<TModel, TMessage extends MessageBase>(initResult: InitResult<TModel, TMessage>, render: () => React.ReactNode): void;
36
+ export type { UpdateArgsFactory, };
37
+ export { getOfMsgParams, execCmd, getUpdateFn, createUpdateArgsFactory, renderWithFakeInit, };
@@ -1,18 +1,28 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
8
+ exports.createUpdateArgsFactory = createUpdateArgsFactory;
6
9
  exports.execCmd = execCmd;
7
10
  exports.getOfMsgParams = getOfMsgParams;
8
11
  exports.getUpdateFn = getUpdateFn;
12
+ exports.renderWithFakeInit = renderWithFakeInit;
9
13
 
10
14
  var _useElmish = require("../useElmish");
11
15
 
12
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
16
+ var _fakeInitResult = require("./fakeInitResult");
13
17
 
14
18
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
15
19
 
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+
24
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+
16
26
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
17
27
 
18
28
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
@@ -44,6 +54,12 @@ function getOfMsgParams(cmd) {
44
54
  function execCmd(_x) {
45
55
  return _execCmd.apply(this, arguments);
46
56
  }
57
+ /**
58
+ * Creates an update function out of an UpdateMap.
59
+ * @param {UpdateMap<TProps, TModel, TMessage>} updateMap The UpdateMap.
60
+ * @returns {(msg: TMessage, model: TModel, props: TProps) => UpdateReturnType<TModel, TMessage>} The created update function which can be used in tests.
61
+ */
62
+
47
63
 
48
64
  function _execCmd() {
49
65
  _execCmd = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(cmd) {
@@ -114,4 +130,27 @@ function getUpdateFn(updateMap) {
114
130
  return (0, _useElmish.callUpdateMap)(updateMap, msg, model, props);
115
131
  };
116
132
  }
117
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRPZk1zZ1BhcmFtcyIsImNtZCIsIm1zZ05hbWVzIiwiZGlzcGF0Y2giLCJtc2ciLCJwdXNoIiwibWFwIiwiY3VycmVudENtZCIsImV4ZWNDbWQiLCJjYWxsZXJzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlcnJvciIsImFsbCIsInJlc3VsdHMiLCJnZXRVcGRhdGVGbiIsInVwZGF0ZU1hcCIsIm1vZGVsIiwicHJvcHMiLCJjYWxsVXBkYXRlTWFwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1Rlc3RpbmcvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZUJhc2UsIE51bGxhYmxlLCBVcGRhdGVNYXAsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi4vVHlwZXNcIjtcbmltcG9ydCB7IGNhbGxVcGRhdGVNYXAgfSBmcm9tIFwiLi4vdXNlRWxtaXNoXCI7XG5pbXBvcnQgeyBDbWQgfSBmcm9tIFwiLi4vQ21kXCI7XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIG1lc3NhZ2VzIG91dCBvZiBhIGNvbW1hbmQuXG4gKiBAcGFyYW0gY21kIFRoZSBjb21tYW5kIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIGdldE9mTXNnUGFyYW1zPFRNc2c+IChjbWQ/OiBDbWQ8VE1zZz4pOiBUTXNnIFtdIHtcbiAgICBjb25zdCBtc2dOYW1lczogVE1zZyBbXSA9IFtdO1xuXG4gICAgY29uc3QgZGlzcGF0Y2ggPSAobXNnOiBUTXNnKTogdm9pZCA9PiB7XG4gICAgICAgIG1zZ05hbWVzLnB1c2gobXNnKTtcbiAgICB9O1xuXG4gICAgY21kPy5tYXAoY3VycmVudENtZCA9PiBjdXJyZW50Q21kKGRpc3BhdGNoKSk7XG5cbiAgICByZXR1cm4gbXNnTmFtZXM7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYWxsIGNvbW1hbmRzIGFuZCByZXNvbHZlcyB0aGUgbWVzc2FnZXMuXG4gKiBAcGFyYW0gY21kIFRoZSBjb21tYW5kIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgcHJvY2Vzc2VkIG1lc3NhZ2VzLlxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjQ21kPFRNc2c+IChjbWQ/OiBDbWQ8VE1zZz4pOiBQcm9taXNlPE51bGxhYmxlPFRNc2c+IFtdPiB7XG4gICAgaWYgKCFjbWQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGxlcnMgPSBjbWQubWFwKGFzeW5jIGN1cnJlbnRDbWQgPT4gbmV3IFByb21pc2U8TnVsbGFibGU8VE1zZz4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGF0Y2ggPSAobXNnOiBUTXNnKTogdm9pZCA9PiByZXNvbHZlKG1zZyk7XG5cbiAgICAgICAgY3VycmVudENtZChkaXNwYXRjaCwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSkpO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKGNhbGxlcnMpO1xuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGdldFVwZGF0ZUZuPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlPiAodXBkYXRlTWFwOiBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPik6IChtc2c6IFRNZXNzYWdlLCBtb2RlbDogVE1vZGVsLCBwcm9wczogVFByb3BzKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1zZzogVE1lc3NhZ2UsIG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpOiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIGNhbGxVcGRhdGVNYXAodXBkYXRlTWFwLCBtc2csIG1vZGVsLCBwcm9wcyk7XG4gICAgfTtcbn1cblxuZXhwb3J0IHtcbiAgICBnZXRPZk1zZ1BhcmFtcyxcbiAgICBleGVjQ21kLFxuICAgIGdldFVwZGF0ZUZuLFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOzs7OytDQUFBLG9KOzs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsY0FBVCxDQUErQkMsR0FBL0IsRUFBeUQ7RUFDckQsSUFBTUMsUUFBaUIsR0FBRyxFQUExQjs7RUFFQSxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDQyxHQUFELEVBQXFCO0lBQ2xDRixRQUFRLENBQUNHLElBQVQsQ0FBY0QsR0FBZDtFQUNILENBRkQ7O0VBSUFILEdBQUcsU0FBSCxJQUFBQSxHQUFHLFdBQUgsWUFBQUEsR0FBRyxDQUFFSyxHQUFMLENBQVMsVUFBQUMsVUFBVTtJQUFBLE9BQUlBLFVBQVUsQ0FBQ0osUUFBRCxDQUFkO0VBQUEsQ0FBbkI7RUFFQSxPQUFPRCxRQUFQO0FBQ0g7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7U0FDZU0sTzs7Ozs7d0VBQWYsa0JBQThCUCxHQUE5QjtJQUFBO0lBQUE7TUFBQTtRQUFBO1VBQUE7WUFBQSxJQUNTQSxHQURUO2NBQUE7Y0FBQTtZQUFBOztZQUFBLGtDQUVlLEVBRmY7O1VBQUE7WUFLVVEsT0FMVixHQUtvQlIsR0FBRyxDQUFDSyxHQUFKO2NBQUEsc0VBQVEsaUJBQU1DLFVBQU47Z0JBQUE7a0JBQUE7b0JBQUE7c0JBQUE7d0JBQUEsaUNBQW9CLElBQUlHLE9BQUosQ0FBNEIsVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCOzBCQUN6RixJQUFNVCxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDQyxHQUFEOzRCQUFBLE9BQXFCTyxPQUFPLENBQUNQLEdBQUQsQ0FBNUI7MEJBQUEsQ0FBakI7OzBCQUVBRyxVQUFVLENBQUNKLFFBQUQsRUFBVyxVQUFBVSxLQUFLLEVBQUk7NEJBQzFCLElBQUlBLEtBQUosRUFBVzs4QkFDUEQsTUFBTSxDQUFDQyxLQUFELENBQU47NEJBQ0gsQ0FGRCxNQUVPOzhCQUNIRixPQUFPLENBQUMsSUFBRCxDQUFQOzRCQUNIOzBCQUNKLENBTlMsQ0FBVjt3QkFPSCxDQVYyQyxDQUFwQjs7c0JBQUE7c0JBQUE7d0JBQUE7b0JBQUE7a0JBQUE7Z0JBQUE7Y0FBQSxDQUFSOztjQUFBO2dCQUFBO2NBQUE7WUFBQSxJQUxwQjtZQUFBO1lBQUEsT0FpQjBCRCxPQUFPLENBQUNJLEdBQVIsQ0FBWUwsT0FBWixDQWpCMUI7O1VBQUE7WUFpQlVNLE9BakJWO1lBQUEsa0NBbUJXQSxPQW5CWDs7VUFBQTtVQUFBO1lBQUE7UUFBQTtNQUFBO0lBQUE7RUFBQSxDOzs7O0FBc0JBLFNBQVNDLFdBQVQsQ0FBb0VDLFNBQXBFLEVBQXlNO0VBQ3JNLE9BQU8sVUFBVWIsR0FBVixFQUF5QmMsS0FBekIsRUFBd0NDLEtBQXhDLEVBQTJGO0lBQzlGLE9BQU8sSUFBQUMsd0JBQUEsRUFBY0gsU0FBZCxFQUF5QmIsR0FBekIsRUFBOEJjLEtBQTlCLEVBQXFDQyxLQUFyQyxDQUFQO0VBQ0gsQ0FGRDtBQUdIIn0=
133
+
134
+ /**
135
+ * Creates a factory function to create a message, a model, and props which can be passed to an update function in tests.
136
+ * @param {() => TModel} initModel A function to create an initial model.
137
+ * @param {() => TProps} initProps A function to create initial props.
138
+ * @returns {UpdateArgsFactory<TProps, TModel, TMessage>} A function to create a message, a model, and props.
139
+ * @example
140
+ * // one time
141
+ * const createUpdateArgs = createUpdateArgsFactory(() => ({ ... }), () => ({ ... }));
142
+ * // in tests
143
+ * const [msg, model, props] = createUpdateArgs(Msg.myMessage(), { ... }, , { ... });
144
+ */
145
+ function createUpdateArgsFactory(initModel, initProps) {
146
+ return function (msg, modelTemplate, propsTemplate) {
147
+ return [msg, _objectSpread(_objectSpread({}, initModel()), modelTemplate), _objectSpread(_objectSpread({}, initProps()), propsTemplate)];
148
+ };
149
+ }
150
+
151
+ function renderWithFakeInit(initResult, render) {
152
+ (0, _fakeInitResult.setFakeInitResult)(initResult);
153
+ render();
154
+ (0, _fakeInitResult.setFakeInitResult)(null);
155
+ }
156
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRPZk1zZ1BhcmFtcyIsImNtZCIsIm1zZ05hbWVzIiwiZGlzcGF0Y2giLCJtc2ciLCJwdXNoIiwibWFwIiwiY3VycmVudENtZCIsImV4ZWNDbWQiLCJjYWxsZXJzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlcnJvciIsImFsbCIsInJlc3VsdHMiLCJnZXRVcGRhdGVGbiIsInVwZGF0ZU1hcCIsIm1vZGVsIiwicHJvcHMiLCJjYWxsVXBkYXRlTWFwIiwiY3JlYXRlVXBkYXRlQXJnc0ZhY3RvcnkiLCJpbml0TW9kZWwiLCJpbml0UHJvcHMiLCJtb2RlbFRlbXBsYXRlIiwicHJvcHNUZW1wbGF0ZSIsInJlbmRlcldpdGhGYWtlSW5pdCIsImluaXRSZXN1bHQiLCJyZW5kZXIiLCJzZXRGYWtlSW5pdFJlc3VsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9UZXN0aW5nL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluaXRSZXN1bHQsIE1lc3NhZ2VCYXNlLCBOdWxsYWJsZSwgVXBkYXRlTWFwLCBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4uL1R5cGVzXCI7XG5pbXBvcnQgeyBjYWxsVXBkYXRlTWFwIH0gZnJvbSBcIi4uL3VzZUVsbWlzaFwiO1xuaW1wb3J0IHsgQ21kIH0gZnJvbSBcIi4uL0NtZFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2V0RmFrZUluaXRSZXN1bHQgfSBmcm9tIFwiLi9mYWtlSW5pdFJlc3VsdFwiO1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBtZXNzYWdlcyBvdXQgb2YgYSBjb21tYW5kLlxuICogQHBhcmFtIGNtZCBUaGUgY29tbWFuZCB0byBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBnZXRPZk1zZ1BhcmFtczxUTXNnPiAoY21kPzogQ21kPFRNc2c+KTogVE1zZyBbXSB7XG4gICAgY29uc3QgbXNnTmFtZXM6IFRNc2cgW10gPSBbXTtcblxuICAgIGNvbnN0IGRpc3BhdGNoID0gKG1zZzogVE1zZyk6IHZvaWQgPT4ge1xuICAgICAgICBtc2dOYW1lcy5wdXNoKG1zZyk7XG4gICAgfTtcblxuICAgIGNtZD8ubWFwKGN1cnJlbnRDbWQgPT4gY3VycmVudENtZChkaXNwYXRjaCkpO1xuXG4gICAgcmV0dXJuIG1zZ05hbWVzO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGFsbCBjb21tYW5kcyBhbmQgcmVzb2x2ZXMgdGhlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGNtZCBUaGUgY29tbWFuZCB0byBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIHByb2Nlc3NlZCBtZXNzYWdlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY0NtZDxUTXNnPiAoY21kPzogQ21kPFRNc2c+KTogUHJvbWlzZTxOdWxsYWJsZTxUTXNnPiBbXT4ge1xuICAgIGlmICghY21kKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWxsZXJzID0gY21kLm1hcChhc3luYyBjdXJyZW50Q21kID0+IG5ldyBQcm9taXNlPE51bGxhYmxlPFRNc2c+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BhdGNoID0gKG1zZzogVE1zZyk6IHZvaWQgPT4gcmVzb2x2ZShtc2cpO1xuXG4gICAgICAgIGN1cnJlbnRDbWQoZGlzcGF0Y2gsIGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChjYWxsZXJzKTtcblxuICAgIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gdXBkYXRlIGZ1bmN0aW9uIG91dCBvZiBhbiBVcGRhdGVNYXAuXG4gKiBAcGFyYW0ge1VwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+fSB1cGRhdGVNYXAgVGhlIFVwZGF0ZU1hcC5cbiAqIEByZXR1cm5zIHsobXNnOiBUTWVzc2FnZSwgbW9kZWw6IFRNb2RlbCwgcHJvcHM6IFRQcm9wcykgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPn0gVGhlIGNyZWF0ZWQgdXBkYXRlIGZ1bmN0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRlc3RzLlxuICovXG5mdW5jdGlvbiBnZXRVcGRhdGVGbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKHVwZGF0ZU1hcDogVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4pOiAobXNnOiBUTWVzc2FnZSwgbW9kZWw6IFRNb2RlbCwgcHJvcHM6IFRQcm9wcykgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtc2c6IFRNZXNzYWdlLCBtb2RlbDogVE1vZGVsLCBwcm9wczogVFByb3BzKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBjYWxsVXBkYXRlTWFwKHVwZGF0ZU1hcCwgbXNnLCBtb2RlbCwgcHJvcHMpO1xuICAgIH07XG59XG5cbnR5cGUgVXBkYXRlQXJnc0ZhY3Rvcnk8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZUJhc2U+ID0gKG1zZzogVE1lc3NhZ2UsIG1vZGVsVGVtcGxhdGU/OiBQYXJ0aWFsPFRNb2RlbD4sIHByb3BzVGVtcGxhdGU/OiBQYXJ0aWFsPFRQcm9wcz4pID0+IFtUTWVzc2FnZSwgVE1vZGVsLCBUUHJvcHNdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1lc3NhZ2UsIGEgbW9kZWwsIGFuZCBwcm9wcyB3aGljaCBjYW4gYmUgcGFzc2VkIHRvIGFuIHVwZGF0ZSBmdW5jdGlvbiBpbiB0ZXN0cy5cbiAqIEBwYXJhbSB7KCkgPT4gVE1vZGVsfSBpbml0TW9kZWwgQSBmdW5jdGlvbiB0byBjcmVhdGUgYW4gaW5pdGlhbCBtb2RlbC5cbiAqIEBwYXJhbSB7KCkgPT4gVFByb3BzfSBpbml0UHJvcHMgQSBmdW5jdGlvbiB0byBjcmVhdGUgaW5pdGlhbCBwcm9wcy5cbiAqIEByZXR1cm5zIHtVcGRhdGVBcmdzRmFjdG9yeTxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+fSBBIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1lc3NhZ2UsIGEgbW9kZWwsIGFuZCBwcm9wcy5cbiAqIEBleGFtcGxlXG4gKiAvLyBvbmUgdGltZVxuICogY29uc3QgY3JlYXRlVXBkYXRlQXJncyA9IGNyZWF0ZVVwZGF0ZUFyZ3NGYWN0b3J5KCgpID0+ICh7IC4uLiB9KSwgKCkgPT4gKHsgLi4uIH0pKTtcbiAqIC8vIGluIHRlc3RzXG4gKiBjb25zdCBbbXNnLCBtb2RlbCwgcHJvcHNdID0gY3JlYXRlVXBkYXRlQXJncyhNc2cubXlNZXNzYWdlKCksIHsgLi4uIH0sICwgeyAuLi4gfSk7XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVVwZGF0ZUFyZ3NGYWN0b3J5IDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKGluaXRNb2RlbDogKCkgPT4gVE1vZGVsLCBpbml0UHJvcHM6ICgpID0+IFRQcm9wcyk6IFVwZGF0ZUFyZ3NGYWN0b3J5PFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiAobXNnOiBUTWVzc2FnZSwgbW9kZWxUZW1wbGF0ZT86IFBhcnRpYWw8VE1vZGVsPiwgcHJvcHNUZW1wbGF0ZT86IFBhcnRpYWw8VFByb3BzPik6IFtUTWVzc2FnZSwgVE1vZGVsLCBUUHJvcHNdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG1zZyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5pbml0TW9kZWwoKSxcbiAgICAgICAgICAgICAgICAuLi5tb2RlbFRlbXBsYXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5pbml0UHJvcHMoKSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wc1RlbXBsYXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiByZW5kZXJXaXRoRmFrZUluaXQ8VE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlPiAoaW5pdFJlc3VsdDogSW5pdFJlc3VsdDxUTW9kZWwsIFRNZXNzYWdlPiwgcmVuZGVyOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGUpOiB2b2lkIHtcbiAgICBzZXRGYWtlSW5pdFJlc3VsdChpbml0UmVzdWx0KTtcbiAgICByZW5kZXIoKTtcbiAgICBzZXRGYWtlSW5pdFJlc3VsdChudWxsKTtcbn1cblxuZXhwb3J0IHR5cGUge1xuICAgIFVwZGF0ZUFyZ3NGYWN0b3J5LFxufTtcblxuZXhwb3J0IHtcbiAgICBnZXRPZk1zZ1BhcmFtcyxcbiAgICBleGVjQ21kLFxuICAgIGdldFVwZGF0ZUZuLFxuICAgIGNyZWF0ZVVwZGF0ZUFyZ3NGYWN0b3J5LFxuICAgIHJlbmRlcldpdGhGYWtlSW5pdCxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBR0E7OytDQUhBLG9KOzs7Ozs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsY0FBVCxDQUErQkMsR0FBL0IsRUFBeUQ7RUFDckQsSUFBTUMsUUFBaUIsR0FBRyxFQUExQjs7RUFFQSxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDQyxHQUFELEVBQXFCO0lBQ2xDRixRQUFRLENBQUNHLElBQVQsQ0FBY0QsR0FBZDtFQUNILENBRkQ7O0VBSUFILEdBQUcsU0FBSCxJQUFBQSxHQUFHLFdBQUgsWUFBQUEsR0FBRyxDQUFFSyxHQUFMLENBQVMsVUFBQUMsVUFBVTtJQUFBLE9BQUlBLFVBQVUsQ0FBQ0osUUFBRCxDQUFkO0VBQUEsQ0FBbkI7RUFFQSxPQUFPRCxRQUFQO0FBQ0g7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7U0FDZU0sTzs7O0FBc0JmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7d0VBMUJBLGtCQUE4QlAsR0FBOUI7SUFBQTtJQUFBO01BQUE7UUFBQTtVQUFBO1lBQUEsSUFDU0EsR0FEVDtjQUFBO2NBQUE7WUFBQTs7WUFBQSxrQ0FFZSxFQUZmOztVQUFBO1lBS1VRLE9BTFYsR0FLb0JSLEdBQUcsQ0FBQ0ssR0FBSjtjQUFBLHNFQUFRLGlCQUFNQyxVQUFOO2dCQUFBO2tCQUFBO29CQUFBO3NCQUFBO3dCQUFBLGlDQUFvQixJQUFJRyxPQUFKLENBQTRCLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjswQkFDekYsSUFBTVQsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQ0MsR0FBRDs0QkFBQSxPQUFxQk8sT0FBTyxDQUFDUCxHQUFELENBQTVCOzBCQUFBLENBQWpCOzswQkFFQUcsVUFBVSxDQUFDSixRQUFELEVBQVcsVUFBQVUsS0FBSyxFQUFJOzRCQUMxQixJQUFJQSxLQUFKLEVBQVc7OEJBQ1BELE1BQU0sQ0FBQ0MsS0FBRCxDQUFOOzRCQUNILENBRkQsTUFFTzs4QkFDSEYsT0FBTyxDQUFDLElBQUQsQ0FBUDs0QkFDSDswQkFDSixDQU5TLENBQVY7d0JBT0gsQ0FWMkMsQ0FBcEI7O3NCQUFBO3NCQUFBO3dCQUFBO29CQUFBO2tCQUFBO2dCQUFBO2NBQUEsQ0FBUjs7Y0FBQTtnQkFBQTtjQUFBO1lBQUEsSUFMcEI7WUFBQTtZQUFBLE9BaUIwQkQsT0FBTyxDQUFDSSxHQUFSLENBQVlMLE9BQVosQ0FqQjFCOztVQUFBO1lBaUJVTSxPQWpCVjtZQUFBLGtDQW1CV0EsT0FuQlg7O1VBQUE7VUFBQTtZQUFBO1FBQUE7TUFBQTtJQUFBO0VBQUEsQzs7OztBQTJCQSxTQUFTQyxXQUFULENBQW9FQyxTQUFwRSxFQUF5TTtFQUNyTSxPQUFPLFVBQVViLEdBQVYsRUFBeUJjLEtBQXpCLEVBQXdDQyxLQUF4QyxFQUEyRjtJQUM5RixPQUFPLElBQUFDLHdCQUFBLEVBQWNILFNBQWQsRUFBeUJiLEdBQXpCLEVBQThCYyxLQUE5QixFQUFxQ0MsS0FBckMsQ0FBUDtFQUNILENBRkQ7QUFHSDs7QUFJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0UsdUJBQVQsQ0FBaUZDLFNBQWpGLEVBQTBHQyxTQUExRyxFQUFnTDtFQUM1SyxPQUFPLFVBQVVuQixHQUFWLEVBQXlCb0IsYUFBekIsRUFBMERDLGFBQTFELEVBQXVIO0lBQzFILE9BQU8sQ0FDSHJCLEdBREcsa0NBR0lrQixTQUFTLEVBSGIsR0FJSUUsYUFKSixtQ0FPSUQsU0FBUyxFQVBiLEdBUUlFLGFBUkosRUFBUDtFQVdILENBWkQ7QUFhSDs7QUFFRCxTQUFTQyxrQkFBVCxDQUFtRUMsVUFBbkUsRUFBNkdDLE1BQTdHLEVBQWtKO0VBQzlJLElBQUFDLGlDQUFBLEVBQWtCRixVQUFsQjtFQUNBQyxNQUFNO0VBQ04sSUFBQUMsaUNBQUEsRUFBa0IsSUFBbEI7QUFDSCJ9
package/dist/useElmish.js CHANGED
@@ -9,6 +9,8 @@ exports.useElmish = useElmish;
9
9
 
10
10
  var _react = require("react");
11
11
 
12
+ var _fakeInitResult = require("./Testing/fakeInitResult");
13
+
12
14
  var _Init = require("./Init");
13
15
 
14
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -52,6 +54,12 @@ function useElmish(_ref) {
52
54
  setModel = _useState2[1];
53
55
 
54
56
  var initializedModel = model;
57
+ var propsRef = (0, _react.useRef)(props);
58
+
59
+ if (propsRef.current !== props) {
60
+ propsRef.current = props;
61
+ }
62
+
55
63
  var execCmd = (0, _react.useCallback)(function (cmd) {
56
64
  cmd.forEach(function (call) {
57
65
  try {
@@ -72,10 +80,6 @@ function useElmish(_ref) {
72
80
  return updatedModel !== initializedModel && Object.getOwnPropertyNames(updatedModel).length > 0;
73
81
  };
74
82
 
75
- if (_Init.Services.dispatchMiddleware) {
76
- _Init.Services.dispatchMiddleware(msg);
77
- }
78
-
79
83
  if (reentered) {
80
84
  buffer.push(msg);
81
85
  } else {
@@ -89,8 +93,12 @@ function useElmish(_ref) {
89
93
  (_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 ? void 0 : _Services$logger2.info("Elm", "message from", name, nextMsg.name);
90
94
  (_Services$logger3 = _Init.Services.logger) === null || _Services$logger3 === void 0 ? void 0 : _Services$logger3.debug("Elm", "message from", name, nextMsg);
91
95
 
96
+ if (_Init.Services.dispatchMiddleware) {
97
+ _Init.Services.dispatchMiddleware(nextMsg);
98
+ }
99
+
92
100
  try {
93
- var _callUpdate = callUpdate(update, nextMsg, _objectSpread(_objectSpread({}, initializedModel), currentModel), props),
101
+ var _callUpdate = callUpdate(update, nextMsg, _objectSpread(_objectSpread({}, initializedModel), currentModel), propsRef.current),
94
102
  _callUpdate2 = _slicedToArray(_callUpdate, 2),
95
103
  newModel = _callUpdate2[0],
96
104
  cmd = _callUpdate2[1];
@@ -128,10 +136,12 @@ function useElmish(_ref) {
128
136
  }, []);
129
137
 
130
138
  if (!initializedModel) {
131
- var _init = init(props),
132
- _init2 = _slicedToArray(_init, 2),
133
- initModel = _init2[0],
134
- initCmd = _init2[1];
139
+ var _getFakeInitResultOnc;
140
+
141
+ var _ref2 = (_getFakeInitResultOnc = (0, _fakeInitResult.getFakeInitResultOnce)()) !== null && _getFakeInitResultOnc !== void 0 ? _getFakeInitResultOnc : init(props),
142
+ _ref3 = _slicedToArray(_ref2, 2),
143
+ initModel = _ref3[0],
144
+ initCmd = _ref3[1];
135
145
 
136
146
  initializedModel = initModel;
137
147
  setModel(initializedModel);
@@ -172,4 +182,4 @@ function callUpdateMap(updateMap, msg, model, props) {
172
182
  var updateFn = updateMap[msg.name];
173
183
  return updateFn(msg, model, props);
174
184
  }
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFbG1pc2giLCJuYW1lIiwicHJvcHMiLCJpbml0IiwidXBkYXRlIiwic3Vic2NyaXB0aW9uIiwicmVlbnRlcmVkIiwiYnVmZmVyIiwiY3VycmVudE1vZGVsIiwidXNlU3RhdGUiLCJtb2RlbCIsInNldE1vZGVsIiwiaW5pdGlhbGl6ZWRNb2RlbCIsImV4ZWNDbWQiLCJ1c2VDYWxsYmFjayIsImNtZCIsImZvckVhY2giLCJjYWxsIiwiZGlzcGF0Y2giLCJleCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiZXJyb3IiLCJtc2ciLCJtb2RlbEhhc0NoYW5nZWQiLCJ1cGRhdGVkTW9kZWwiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibGVuZ3RoIiwiZGlzcGF0Y2hNaWRkbGV3YXJlIiwicHVzaCIsIm5leHRNc2ciLCJtb2RpZmllZCIsImluZm8iLCJkZWJ1ZyIsImNhbGxVcGRhdGUiLCJuZXdNb2RlbCIsInNoaWZ0IiwicHJldk1vZGVsIiwiaW5pdE1vZGVsIiwiaW5pdENtZCIsInVzZUVmZmVjdCIsInN1YkNtZCIsImRlc3RydWN0b3IiLCJjYWxsVXBkYXRlTWFwIiwidXBkYXRlTWFwIiwidXBkYXRlRm4iXSwic291cmNlcyI6WyIuLi9zcmMvdXNlRWxtaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgSW5pdEZ1bmN0aW9uLCBNZXNzYWdlQmFzZSwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uLCBVcGRhdGVNYXAsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNlcnZpY2VzIH0gZnJvbSBcIi4vSW5pdFwiO1xuXG50eXBlIFN1YnNjcmlwdGlvblJlc3VsdDxUTWVzc2FnZT4gPSBbQ21kPFRNZXNzYWdlPiwgKCgpID0+IHZvaWQpP107XG50eXBlIFN1YnNjcmlwdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpID0+IFN1YnNjcmlwdGlvblJlc3VsdDxUTWVzc2FnZT47XG5cbmludGVyZmFjZSBVc2VFbG1pc2hPcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlPiB7XG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHByb3BzOiBUUHJvcHMsXG4gICAgaW5pdDogSW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4gICAgdXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4gICAgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG59XG5cbi8qKlxuICogSG9vayB0byB1c2UgdGhlIEVsbSBhcmNoaXRlY3R1cmUgcGF0dGVybiBpbiBhIGZ1bmN0aW9uIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7VXNlRWxtaXNoT3B0aW9uc30gb3B0aW9ucyBUaGUgb3B0aW9ucyBwYXNzZWQgdGhlIHRoZSBob29rLlxuICogQHJldHVybnMgQSB0dXBsZSBjb250YWluaW5nIHRoZSBjdXJyZW50IG1vZGVsIGFuZCB0aGUgZGlzcGF0Y2hlci5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBbbW9kZWwsIGRpc3BhdGNoXSA9IHVzZUVsbWlzaCh7IHByb3BzLCBpbml0LCB1cGRhdGUsIG5hbWU6IFwiTXlDb21wb25lbnRcIiB9KTtcbiAqL1xuZnVuY3Rpb24gdXNlRWxtaXNoPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlPiAoeyBuYW1lLCBwcm9wcywgaW5pdCwgdXBkYXRlLCBzdWJzY3JpcHRpb24gfTogVXNlRWxtaXNoT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+KTogW1RNb2RlbCwgRGlzcGF0Y2g8VE1lc3NhZ2U+XSB7XG4gICAgbGV0IHJlZW50ZXJlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGJ1ZmZlcjogVE1lc3NhZ2UgW10gPSBbXTtcbiAgICBsZXQgY3VycmVudE1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4gPSB7fTtcblxuICAgIGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gdXNlU3RhdGU8TnVsbGFibGU8VE1vZGVsPj4obnVsbCk7XG4gICAgbGV0IGluaXRpYWxpemVkTW9kZWwgPSBtb2RlbDtcblxuICAgIGNvbnN0IGV4ZWNDbWQgPSB1c2VDYWxsYmFjaygoY21kOiBDbWQ8VE1lc3NhZ2U+KTogdm9pZCA9PiB7XG4gICAgICAgIGNtZC5mb3JFYWNoKGNhbGwgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjYWxsKGRpc3BhdGNoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5lcnJvcihleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlQ2FsbGJhY2soKG1zZzogVE1lc3NhZ2UpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFpbml0aWFsaXplZE1vZGVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlbEhhc0NoYW5nZWQgPSAodXBkYXRlZE1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4pOiBib29sZWFuID0+IHVwZGF0ZWRNb2RlbCAhPT0gaW5pdGlhbGl6ZWRNb2RlbCAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh1cGRhdGVkTW9kZWwpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgaWYgKFNlcnZpY2VzLmRpc3BhdGNoTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlKG1zZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVlbnRlcmVkKSB7XG4gICAgICAgICAgICBidWZmZXIucHVzaChtc2cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVlbnRlcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgbGV0IG5leHRNc2c6IFRNZXNzYWdlIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5pbmZvKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIG5hbWUsIG5leHRNc2cubmFtZSk7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBuZXh0TXNnKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdNb2RlbCwgY21kXSA9IGNhbGxVcGRhdGUodXBkYXRlLCBuZXh0TXNnLCB7IC4uLmluaXRpYWxpemVkTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9LCBwcm9wcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGVsSGFzQ2hhbmdlZChuZXdNb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlbCA9IHsgLi4uY3VycmVudE1vZGVsLCAuLi5uZXdNb2RlbCB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY21kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGVjQ21kKGNtZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmVycm9yKGV4KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXh0TXNnID0gYnVmZmVyLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWVudGVyZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgc2V0TW9kZWwocHJldk1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZE1vZGVsID0geyAuLi5wcmV2TW9kZWwgYXMgVE1vZGVsLCAuLi5jdXJyZW50TW9kZWwgfTtcblxuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiRWxtXCIsIFwidXBkYXRlIG1vZGVsIGZvclwiLCBuYW1lLCB1cGRhdGVkTW9kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkTW9kZWw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBpZiAoIWluaXRpYWxpemVkTW9kZWwpIHtcbiAgICAgICAgY29uc3QgW2luaXRNb2RlbCwgaW5pdENtZF0gPSBpbml0KHByb3BzKTtcblxuICAgICAgICBpbml0aWFsaXplZE1vZGVsID0gaW5pdE1vZGVsO1xuICAgICAgICBzZXRNb2RlbChpbml0aWFsaXplZE1vZGVsKTtcblxuICAgICAgICBpZiAoaW5pdENtZCkge1xuICAgICAgICAgICAgZXhlY0NtZChpbml0Q21kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdWJDbWQsIGRlc3RydWN0b3JdID0gc3Vic2NyaXB0aW9uKGluaXRpYWxpemVkTW9kZWwgYXMgVE1vZGVsLCBwcm9wcyk7XG5cbiAgICAgICAgICAgIGV4ZWNDbWQoc3ViQ21kKTtcblxuICAgICAgICAgICAgaWYgKGRlc3RydWN0b3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVzdHJ1Y3RvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBbaW5pdGlhbGl6ZWRNb2RlbCwgZGlzcGF0Y2hdO1xufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlPiAodXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sIG1zZzogVE1lc3NhZ2UsIG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpOiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+IHtcbiAgICBpZiAodHlwZW9mIHVwZGF0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB1cGRhdGUobW9kZWwsIG1zZywgcHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxsVXBkYXRlTWFwKHVwZGF0ZSwgbXNnLCBtb2RlbCwgcHJvcHMpO1xufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlPiAodXBkYXRlTWFwOiBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiwgbXNnOiBUTWVzc2FnZSwgbW9kZWw6IFRNb2RlbCwgcHJvcHM6IFRQcm9wcyk6IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0tIFdlIGtub3cgdGhhdCBtc2cgZml0c1xuICAgIGNvbnN0IHVwZGF0ZUZuID0gdXBkYXRlTWFwW21zZy5uYW1lIGFzIFRNZXNzYWdlW1wibmFtZVwiXV0gYXMgKG1zZzogVE1lc3NhZ2UsIG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPjtcblxuICAgIHJldHVybiB1cGRhdGVGbihtc2csIG1vZGVsLCBwcm9wcyk7XG59XG5cbmV4cG9ydCB0eXBlIHtcbiAgICBTdWJzY3JpcHRpb25SZXN1bHQsXG59O1xuXG5leHBvcnQge1xuICAgIHVzZUVsbWlzaCxcbiAgICBjYWxsVXBkYXRlLFxuICAgIGNhbGxVcGRhdGVNYXAsXG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFULE9BQXlMO0VBQUEsSUFBckhDLElBQXFILFFBQXJIQSxJQUFxSDtFQUFBLElBQS9HQyxLQUErRyxRQUEvR0EsS0FBK0c7RUFBQSxJQUF4R0MsSUFBd0csUUFBeEdBLElBQXdHO0VBQUEsSUFBbEdDLE1BQWtHLFFBQWxHQSxNQUFrRztFQUFBLElBQTFGQyxZQUEwRixRQUExRkEsWUFBMEY7RUFDckwsSUFBSUMsU0FBUyxHQUFHLEtBQWhCO0VBQ0EsSUFBTUMsTUFBbUIsR0FBRyxFQUE1QjtFQUNBLElBQUlDLFlBQTZCLEdBQUcsRUFBcEM7O0VBRUEsZ0JBQTBCLElBQUFDLGVBQUEsRUFBMkIsSUFBM0IsQ0FBMUI7RUFBQTtFQUFBLElBQU9DLEtBQVA7RUFBQSxJQUFjQyxRQUFkOztFQUNBLElBQUlDLGdCQUFnQixHQUFHRixLQUF2QjtFQUVBLElBQU1HLE9BQU8sR0FBRyxJQUFBQyxrQkFBQSxFQUFZLFVBQUNDLEdB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
185
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFbG1pc2giLCJuYW1lIiwicHJvcHMiLCJpbml0IiwidXBkYXRlIiwic3Vic2NyaXB0aW9uIiwicmVlbnRlcmVkIiwiYnVmZmVyIiwiY3VycmVudE1vZGVsIiwidXNlU3RhdGUiLCJtb2RlbCIsInNldE1vZGVsIiwiaW5pdGlhbGl6ZWRNb2RlbCIsInByb3BzUmVmIiwidXNlUmVmIiwiY3VycmVudCIsImV4ZWNDbWQiLCJ1c2VDYWxsYmFjayIsImNtZCIsImZvckVhY2giLCJjYWxsIiwiZGlzcGF0Y2giLCJleCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiZXJyb3IiLCJtc2ciLCJtb2RlbEhhc0NoYW5nZWQiLCJ1cGRhdGVkTW9kZWwiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibGVuZ3RoIiwicHVzaCIsIm5leHRNc2ciLCJtb2RpZmllZCIsImluZm8iLCJkZWJ1ZyIsImRpc3BhdGNoTWlkZGxld2FyZSIsImNhbGxVcGRhdGUiLCJuZXdNb2RlbCIsInNoaWZ0IiwicHJldk1vZGVsIiwiZ2V0RmFrZUluaXRSZXN1bHRPbmNlIiwiaW5pdE1vZGVsIiwiaW5pdENtZCIsInVzZUVmZmVjdCIsInN1YkNtZCIsImRlc3RydWN0b3IiLCJjYWxsVXBkYXRlTWFwIiwidXBkYXRlTWFwIiwidXBkYXRlRm4iXSwic291cmNlcyI6WyIuLi9zcmMvdXNlRWxtaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgSW5pdEZ1bmN0aW9uLCBNZXNzYWdlQmFzZSwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uLCBVcGRhdGVNYXAsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0RmFrZUluaXRSZXN1bHRPbmNlIH0gZnJvbSBcIi4vVGVzdGluZy9mYWtlSW5pdFJlc3VsdFwiO1xuaW1wb3J0IHsgU2VydmljZXMgfSBmcm9tIFwiLi9Jbml0XCI7XG5cbnR5cGUgU3Vic2NyaXB0aW9uUmVzdWx0PFRNZXNzYWdlPiA9IFtDbWQ8VE1lc3NhZ2U+LCAoKCkgPT4gdm9pZCk/XTtcbnR5cGUgU3Vic2NyaXB0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gPSAobW9kZWw6IFRNb2RlbCwgcHJvcHM6IFRQcm9wcykgPT4gU3Vic2NyaXB0aW9uUmVzdWx0PFRNZXNzYWdlPjtcblxuaW50ZXJmYWNlIFVzZUVsbWlzaE9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZUJhc2U+IHtcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcHJvcHM6IFRQcm9wcyxcbiAgICBpbml0OiBJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbiAgICB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbiAgICBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbn1cblxuLyoqXG4gKiBIb29rIHRvIHVzZSB0aGUgRWxtIGFyY2hpdGVjdHVyZSBwYXR0ZXJuIGluIGEgZnVuY3Rpb24gY29tcG9uZW50LlxuICogQHBhcmFtIHtVc2VFbG1pc2hPcHRpb25zfSBvcHRpb25zIFRoZSBvcHRpb25zIHBhc3NlZCB0aGUgdGhlIGhvb2suXG4gKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgbW9kZWwgYW5kIHRoZSBkaXNwYXRjaGVyLlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IFttb2RlbCwgZGlzcGF0Y2hdID0gdXNlRWxtaXNoKHsgcHJvcHMsIGluaXQsIHVwZGF0ZSwgbmFtZTogXCJNeUNvbXBvbmVudFwiIH0pO1xuICovXG5mdW5jdGlvbiB1c2VFbG1pc2g8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZUJhc2U+ICh7IG5hbWUsIHByb3BzLCBpbml0LCB1cGRhdGUsIHN1YnNjcmlwdGlvbiB9OiBVc2VFbG1pc2hPcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4pOiBbVE1vZGVsLCBEaXNwYXRjaDxUTWVzc2FnZT5dIHtcbiAgICBsZXQgcmVlbnRlcmVkID0gZmFsc2U7XG4gICAgY29uc3QgYnVmZmVyOiBUTWVzc2FnZSBbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50TW9kZWw6IFBhcnRpYWw8VE1vZGVsPiA9IHt9O1xuXG4gICAgY29uc3QgW21vZGVsLCBzZXRNb2RlbF0gPSB1c2VTdGF0ZTxOdWxsYWJsZTxUTW9kZWw+PihudWxsKTtcbiAgICBsZXQgaW5pdGlhbGl6ZWRNb2RlbCA9IG1vZGVsO1xuXG4gICAgY29uc3QgcHJvcHNSZWYgPSB1c2VSZWYocHJvcHMpO1xuXG4gICAgaWYgKHByb3BzUmVmLmN1cnJlbnQgIT09IHByb3BzKSB7XG4gICAgICAgIHByb3BzUmVmLmN1cnJlbnQgPSBwcm9wcztcbiAgICB9XG5cbiAgICBjb25zdCBleGVjQ21kID0gdXNlQ2FsbGJhY2soKGNtZDogQ21kPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICBjbWQuZm9yRWFjaChjYWxsID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbChkaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZXJyb3IoZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZUNhbGxiYWNrKChtc2c6IFRNZXNzYWdlKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghaW5pdGlhbGl6ZWRNb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kZWxIYXNDaGFuZ2VkID0gKHVwZGF0ZWRNb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiA9PiB1cGRhdGVkTW9kZWwgIT09IGluaXRpYWxpemVkTW9kZWwgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModXBkYXRlZE1vZGVsKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChyZWVudGVyZWQpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWVudGVyZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBsZXQgbmV4dE1zZzogVE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBtc2c7XG4gICAgICAgICAgICBsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgd2hpbGUgKG5leHRNc2cpIHtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmluZm8oXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgbmFtZSwgbmV4dE1zZy5uYW1lKTtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIG5hbWUsIG5leHRNc2cpO1xuXG4gICAgICAgICAgICAgICAgaWYgKFNlcnZpY2VzLmRpc3BhdGNoTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy5kaXNwYXRjaE1pZGRsZXdhcmUobmV4dE1zZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW25ld01vZGVsLCBjbWRdID0gY2FsbFVwZGF0ZSh1cGRhdGUsIG5leHRNc2csIHsgLi4uaW5pdGlhbGl6ZWRNb2RlbCwgLi4uY3VycmVudE1vZGVsIH0sIHByb3BzUmVmLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlbEhhc0NoYW5nZWQobmV3TW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9kZWwgPSB7IC4uLmN1cnJlbnRNb2RlbCwgLi4ubmV3TW9kZWwgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhlY0NtZChjbWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5lcnJvcihleCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV4dE1zZyA9IGJ1ZmZlci5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVlbnRlcmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChtb2RpZmllZCkge1xuICAgICAgICAgICAgICAgIHNldE1vZGVsKHByZXZNb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRNb2RlbCA9IHsgLi4ucHJldk1vZGVsIGFzIFRNb2RlbCwgLi4uY3VycmVudE1vZGVsIH07XG5cbiAgICAgICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkVsbVwiLCBcInVwZGF0ZSBtb2RlbCBmb3JcIiwgbmFtZSwgdXBkYXRlZE1vZGVsKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZE1vZGVsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuXG4gICAgaWYgKCFpbml0aWFsaXplZE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IFtpbml0TW9kZWwsIGluaXRDbWRdID0gZ2V0RmFrZUluaXRSZXN1bHRPbmNlPFRNb2RlbCwgVE1lc3NhZ2U+KCkgPz8gaW5pdChwcm9wcyk7XG5cbiAgICAgICAgaW5pdGlhbGl6ZWRNb2RlbCA9IGluaXRNb2RlbDtcbiAgICAgICAgc2V0TW9kZWwoaW5pdGlhbGl6ZWRNb2RlbCk7XG5cbiAgICAgICAgaWYgKGluaXRDbWQpIHtcbiAgICAgICAgICAgIGV4ZWNDbWQoaW5pdENtZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBbc3ViQ21kLCBkZXN0cnVjdG9yXSA9IHN1YnNjcmlwdGlvbihpbml0aWFsaXplZE1vZGVsIGFzIFRNb2RlbCwgcHJvcHMpO1xuXG4gICAgICAgICAgICBleGVjQ21kKHN1YkNtZCk7XG5cbiAgICAgICAgICAgIGlmIChkZXN0cnVjdG9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc3RydWN0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gW2luaXRpYWxpemVkTW9kZWwsIGRpc3BhdGNoXTtcbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZTxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKHVwZGF0ZTogVXBkYXRlRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiB8IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LCBtc2c6IFRNZXNzYWdlLCBtb2RlbDogVE1vZGVsLCBwcm9wczogVFByb3BzKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG4gICAgaWYgKHR5cGVvZiB1cGRhdGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdXBkYXRlKG1vZGVsLCBtc2csIHByb3BzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsbFVwZGF0ZU1hcCh1cGRhdGUsIG1zZywgbW9kZWwsIHByb3BzKTtcbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKHVwZGF0ZU1hcDogVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sIG1zZzogVE1lc3NhZ2UsIG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpOiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtLSBXZSBrbm93IHRoYXQgbXNnIGZpdHNcbiAgICBjb25zdCB1cGRhdGVGbiA9IHVwZGF0ZU1hcFttc2cubmFtZSBhcyBUTWVzc2FnZVtcIm5hbWVcIl1dIGFzIChtc2c6IFRNZXNzYWdlLCBtb2RlbDogVE1vZGVsLCBwcm9wczogVFByb3BzKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1zZz47XG5cbiAgICByZXR1cm4gdXBkYXRlRm4obXNnLCBtb2RlbCwgcHJvcHMpO1xufVxuXG5leHBvcnQgdHlwZSB7XG4gICAgU3Vic2NyaXB0aW9uUmVzdWx0LFxufTtcblxuZXhwb3J0IHtcbiAgICB1c2VFbG1pc2gsXG4gICAgY2FsbFVwZGF0ZSxcbiAgICBjYWxsVXBkYXRlTWFwLFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBVCxPQUF5TDtFQUFBLElBQXJIQyxJQUFxSCxRQUFySEEsSUFBcUg7RUFBQSxJQUEvR0MsS0FBK0csUUFBL0dBLEtBQStHO0VBQUEsSUFBeEdDLElBQXdHLFFBQXhHQSxJQUF3RztFQUFBLElBQWxHQyxNQUFrRyxRQUFsR0EsTUFBa0c7RUFBQSxJQUExRkMsWUFBMEYsUUFBMUZBLFlBQTBGO0VBQ3JMLElBQUlDLFNBQVMsR0FBRyxLQUFoQjtFQUNBLElBQU1DLE1BQW1CLEdBQUcsRUFBNUI7RUFDQSxJQUFJQyxZQUE2QixHQUFHLEVBQXBDOztFQUVBLGdCQUEwQixJQUFBQyxlQUFBLEVBQTJCLElBQTNCLENBQTFCO0VBQUE7RUFBQSxJQUFPQyxLQUFQO0VBQUEsSUFBY0MsUUFBZDs7RUFDQSxJQUFJQyxnQkFBZ0IsR0FBR0YsS0FBdkI7RUFFQSxJQUFNRyxRQUFRLEdBQUcsSUFBQUMsYUFBQSxFQUFPWixLQUFQLENBQWpCOztFQUVBLElBQUlXLFFBQVEsQ0FBQ0UsT0FBVCxLQUFxQmIsS0FBekIsRUFBZ0M7SUFDNUJXLFFBQVEsQ0FBQ0UsT0FBVCxHQUFtQmIsS0FBbkI7RUFDSDs7RUFFRCxJQUFNYyxPQUFPLEdBQUcsSUFBQUMsa0JBQUEsRUFBWSxVQUFDQyxHQUFELEVBQThCO0lBQ3REQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxVQUFBQyxJQUFJLEVBQUk7TUFDaEIsSUFBSTtRQUNBQSxJQUFJLENBQUNDLFFBQUQsQ0FBSjtNQUNILENBRkQsQ0FFRSxPQUFPQyxFQUFQLEVBQW9CO1FBQUE7O1FBQ2xCLG9CQUFBQyxjQUFBLENBQVNDLE1BQVQsc0VBQWlCQyxLQUFqQixDQUF1QkgsRUFBdkI7TUFDSDtJQUNKLENBTkQ7RUFPSCxDQVJlLEVBUWIsRUFSYSxDQUFoQjtFQVVBLElBQU1ELFFBQVEsR0FBRyxJQUFBSixrQkFBQSxFQUFZLFVBQUNTLEdBQUQsRUFBeUI7SUFDbEQsSUFBSSxDQUFDZCxnQkFBTCxFQUF1QjtNQUNuQjtJQUNIOztJQUVELElBQU1lLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsWUFBRDtNQUFBLE9BQTRDQSxZQUFZLEtBQUtoQixnQkFBakIsSUFBcUNpQixNQUFNLENBQUNDLG1CQUFQLENBQTJCRixZQUEzQixFQUF5Q0csTUFBekMsR0FBa0QsQ0FBbkk7SUFBQSxDQUF4Qjs7SUFFQSxJQUFJekIsU0FBSixFQUFlO01BQ1hDLE1BQU0sQ0FBQ3lCLElBQVAsQ0FBWU4sR0FBWjtJQUNILENBRkQsTUFFTztNQUNIcEIsU0FBUyxHQUFHLElBQVo7TUFFQSxJQUFJMkIsT0FBNkIsR0FBR1AsR0FBcEM7TUFDQSxJQUFJUSxRQUFRLEdBQUcsS0FBZjs7TUFFQSxPQUFPRCxPQUFQLEVBQWdCO1FBQUE7O1FBQ1oscUJBQUFWLGNBQUEsQ0FBU0MsTUFBVCx3RUFBaUJXLElBQWpCLENBQXNCLEtBQXRCLEVBQTZCLGNBQTdCLEVBQTZDbEMsSUFBN0MsRUFBbURnQyxPQUFPLENBQUNoQyxJQUEzRDtRQUNBLHFCQUFBc0IsY0FBQSxDQUFTQyxNQUFULHdFQUFpQlksS0FBakIsQ0FBdUIsS0FBdkIsRUFBOEIsY0FBOUIsRUFBOENuQyxJQUE5QyxFQUFvRGdDLE9BQXBEOztRQUVBLElBQUlWLGNBQUEsQ0FBU2Msa0JBQWIsRUFBaUM7VUFDN0JkLGNBQUEsQ0FBU2Msa0JBQVQsQ0FBNEJKLE9BQTVCO1FBQ0g7O1FBRUQsSUFBSTtVQUNBLGtCQUF3QkssVUFBVSxDQUFDbEMsTUFBRCxFQUFTNkIsT0FBVCxrQ0FBdUJyQixnQkFBdkIsR0FBNENKLFlBQTVDLEdBQTRESyxRQUFRLENBQUNFLE9BQXJFLENBQWxDO1VBQUE7VUFBQSxJQUFPd0IsUUFBUDtVQUFBLElBQWlCckIsR0FBakI7O1VBRUEsSUFBSVMsZUFBZSxDQUFDWSxRQUFELENBQW5CLEVBQStCO1lBQzNCL0IsWUFBWSxtQ0FBUUEsWUFBUixHQUF5QitCLFFBQXpCLENBQVo7WUFFQUwsUUFBUSxHQUFHLElBQVg7VUFDSDs7VUFFRCxJQUFJaEIsR0FBSixFQUFTO1lBQ0xGLE9BQU8sQ0FBQ0UsR0FBRCxDQUFQO1VBQ0g7UUFDSixDQVpELENBWUUsT0FBT0ksRUFBUCxFQUFvQjtVQUFBOztVQUNsQixxQkFBQUMsY0FBQSxDQUFTQyxNQUFULHdFQUFpQkMsS0FBakIsQ0FBdUJILEVBQXZCO1FBQ0g7O1FBRURXLE9BQU8sR0FBRzFCLE1BQU0sQ0FBQ2lDLEtBQVAsRUFBVjtNQUNIOztNQUNEbEMsU0FBUyxHQUFHLEtBQVo7O01BRUEsSUFBSTRCLFFBQUosRUFBYztRQUNWdkIsUUFBUSxDQUFDLFVBQUE4QixTQUFTLEVBQUk7VUFBQTs7VUFDbEIsSUFBTWIsWUFBWSxtQ0FBUWEsU0FBUixHQUFnQ2pDLFlBQWhDLENBQWxCOztVQUVBLHFCQUFBZSxjQUFBLENBQVNDLE1BQVQsd0VBQWlCWSxLQUFqQixDQUF1QixLQUF2QixFQUE4QixrQkFBOUIsRUFBa0RuQyxJQUFsRCxFQUF3RDJCLFlBQXhEO1VBRUEsT0FBT0EsWUFBUDtRQUNILENBTk8sQ0FBUjtNQU9IO0lBQ0o7RUFDSixDQXJEZ0IsRUFxRGQsRUFyRGMsQ0FBakI7O0VBdURBLElBQUksQ0FBQ2hCLGdCQUFMLEVBQXVCO0lBQUE7O0lBQ25CLHFDQUE2QixJQUFBOEIscUNBQUEsR0FBN0IseUVBQTBFdkMsSUFBSSxDQUFDRCxLQUFELENBQTlFO0lBQUE7SUFBQSxJQUFPeUMsU0FBUDtJQUFBLElBQWtCQyxPQUFsQjs7SUFFQWhDLGdCQUFnQixHQUFHK0IsU0FBbkI7SUFDQWhDLFFBQVEsQ0FBQ0MsZ0JBQUQsQ0FBUjs7SUFFQSxJQUFJZ0MsT0FBSixFQUFhO01BQ1Q1QixPQUFPLENBQUM0QixPQUFELENBQVA7SUFDSDtFQUNKOztFQUVELElBQUFDLGdCQUFBLEVBQVUsWUFBTTtJQUNaLElBQUl4QyxZQUFKLEVBQWtCO01BQ2Qsb0JBQTZCQSxZQUFZLENBQUNPLGdCQUFELEVBQTZCVixLQUE3QixDQUF6QztNQUFBO01BQUEsSUFBTzRDLE1BQVA7TUFBQSxJQUFlQyxVQUFmOztNQUVBL0IsT0FBTyxDQUFDOEIsTUFBRCxDQUFQOztNQUVBLElBQUlDLFVBQUosRUFBZ0I7UUFDWixPQUFPQSxVQUFQO01BQ0g7SUFDSjtFQUNKLENBVkQsRUFVRyxFQVZIO0VBWUEsT0FBTyxDQUFDbkMsZ0JBQUQsRUFBbUJTLFFBQW5CLENBQVA7QUFDSDs7QUFFRCxTQUFTaUIsVUFBVCxDQUFtRWxDLE1BQW5FLEVBQTJKc0IsR0FBM0osRUFBMEtoQixLQUExSyxFQUF5TFIsS0FBekwsRUFBNE87RUFDeE8sSUFBSSxPQUFPRSxNQUFQLEtBQWtCLFVBQXRCLEVBQWtDO0lBQzlCLE9BQU9BLE1BQU0sQ0FBQ00sS0FBRCxFQUFRZ0IsR0FBUixFQUFheEIsS0FBYixDQUFiO0VBQ0g7O0VBRUQsT0FBTzhDLGFBQWEsQ0FBQzVDLE1BQUQsRUFBU3NCLEdBQVQsRUFBY2hCLEtBQWQsRUFBcUJSLEtBQXJCLENBQXBCO0FBQ0g7O0FBRUQsU0FBUzhDLGFBQVQsQ0FBc0VDLFNBQXRFLEVBQXNIdkIsR0FBdEgsRUFBcUloQixLQUFySSxFQUFvSlIsS0FBcEosRUFBdU07RUFDbk07RUFDQTtFQUNBLElBQU1nRCxRQUFRLEdBQUdELFNBQVMsQ0FBQ3ZCLEdBQUcsQ0FBQ3pCLElBQUwsQ0FBMUI7RUFFQSxPQUFPaUQsUUFBUSxDQUFDeEIsR0FBRCxFQUFNaEIsS0FBTixFQUFhUixLQUFiLENBQWY7QUFDSCJ9
package/package.json CHANGED
@@ -1,30 +1,9 @@
1
1
  {
2
2
  "name": "react-elmish",
3
- "version": "4.0.1",
3
+ "version": "4.2.0-beta.1",
4
4
  "description": "Elmish for React using Typescript",
5
5
  "author": "atheck",
6
6
  "license": "MIT",
7
- "peerDependencies": {
8
- "react": ">=16.8.0"
9
- },
10
- "devDependencies": {
11
- "@babel/cli": "7.17.10",
12
- "@babel/core": "7.18.5",
13
- "@babel/plugin-proposal-class-properties": "7.17.12",
14
- "@babel/preset-env": "7.18.2",
15
- "@babel/preset-react": "7.17.12",
16
- "@babel/preset-typescript": "7.17.12",
17
- "@testing-library/react": "13.3.0",
18
- "@types/jest": "28.1.3",
19
- "@types/react": "18.0.14",
20
- "eslint": "8.18.0",
21
- "eslint-config-heck": "1.15.0",
22
- "jest": "28.1.1",
23
- "jest-environment-jsdom": "28.1.1",
24
- "semantic-release": "19.0.3",
25
- "ts-jest": "28.0.5",
26
- "typescript": "4.7.4"
27
- },
28
7
  "scripts": {
29
8
  "build": "npm run build:types && npm run build:js",
30
9
  "build:types": "tsc --emitDeclarationOnly --project ./src",
@@ -35,6 +14,27 @@
35
14
  "update": "npx npm-check-updates -i",
36
15
  "semantic-release": "semantic-release"
37
16
  },
17
+ "peerDependencies": {
18
+ "react": ">=16.8.0"
19
+ },
20
+ "devDependencies": {
21
+ "@babel/cli": "7.18.10",
22
+ "@babel/core": "7.18.10",
23
+ "@babel/plugin-proposal-class-properties": "7.18.6",
24
+ "@babel/preset-env": "7.18.10",
25
+ "@babel/preset-react": "7.18.6",
26
+ "@babel/preset-typescript": "7.18.6",
27
+ "@testing-library/react": "13.3.0",
28
+ "@types/jest": "28.1.6",
29
+ "@types/react": "18.0.16",
30
+ "eslint": "8.21.0",
31
+ "eslint-config-heck": "1.20.0",
32
+ "jest": "28.1.3",
33
+ "jest-environment-jsdom": "28.1.3",
34
+ "semantic-release": "19.0.3",
35
+ "ts-jest": "28.0.7",
36
+ "typescript": "4.7.4"
37
+ },
38
38
  "homepage": "https://github.com/atheck/react-elmish",
39
39
  "repository": {
40
40
  "type": "git",