react-elmish 1.5.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/main.yml +2 -2
- package/.github/workflows/publish.yml +2 -2
- package/README.md +40 -1
- package/dist/Cmd.js +1 -1
- package/dist/ElmComponent.js +16 -14
- package/dist/ElmUtilities.d.ts +10 -2
- package/dist/ElmUtilities.js +1 -1
- package/dist/Init.d.ts +2 -12
- package/dist/Init.js +1 -11
- package/dist/Testing/index.d.ts +1 -0
- package/dist/Testing/index.js +2 -2
- package/dist/index.d.ts +6 -5
- package/dist/index.js +11 -3
- package/dist/useElmish.d.ts +4 -0
- package/dist/useElmish.js +121 -0
- package/dist/useElmishMap.d.ts +3 -0
- package/dist/useElmishMap.js +123 -0
- package/package.json +17 -17
- package/dist/Hooks.d.ts +0 -5
- package/dist/Hooks.js +0 -119
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
- name: SetupNode
|
|
19
19
|
uses: actions/setup-node@v2
|
|
20
20
|
with:
|
|
21
|
-
node-version:
|
|
21
|
+
node-version: 16
|
|
22
22
|
- name: Test
|
|
23
23
|
run: |
|
|
24
24
|
npm install
|
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
- name: SetupNode
|
|
35
35
|
uses: actions/setup-node@v2
|
|
36
36
|
with:
|
|
37
|
-
node-version:
|
|
37
|
+
node-version: 16
|
|
38
38
|
- name: Build
|
|
39
39
|
run: |
|
|
40
40
|
npm ci
|
|
@@ -14,7 +14,7 @@ jobs:
|
|
|
14
14
|
- name: SetupNode
|
|
15
15
|
uses: actions/setup-node@v2
|
|
16
16
|
with:
|
|
17
|
-
node-version:
|
|
17
|
+
node-version: 16
|
|
18
18
|
- name: Test
|
|
19
19
|
run: |
|
|
20
20
|
npm install
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
- name: SetupNode
|
|
30
30
|
uses: actions/setup-node@v2
|
|
31
31
|
with:
|
|
32
|
-
node-version:
|
|
32
|
+
node-version: 16
|
|
33
33
|
- name: Build
|
|
34
34
|
run: |
|
|
35
35
|
npm ci --ignore-scripts
|
package/README.md
CHANGED
|
@@ -164,6 +164,34 @@ You can use these components like any other React component.
|
|
|
164
164
|
>
|
|
165
165
|
> You can even split the contents of the **App.ts** into two files: **Types.ts** (`Message`, `Model`, and `Props`) and **State.ts** (`init` and `update`).
|
|
166
166
|
|
|
167
|
+
## A new approach
|
|
168
|
+
|
|
169
|
+
Instead of `useElmish` you can use the `useElmishMap` hook. Then you have an `UpdateMap` instead of an `update` function:
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
const updateMap: UpdateMap<Props, Model, Message> {
|
|
173
|
+
// Now the message is the first parameter, so it is easier to omit the model parameter.
|
|
174
|
+
Increment: (msg) => [{ value: model.value + 1 }],
|
|
175
|
+
Decrement: (msg) => [{ value: model.value - 1 }],
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Add your component looks like:
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
import { useElmishMap } from "react-elmish";
|
|
183
|
+
|
|
184
|
+
const App = (props: Shared.Props) => {
|
|
185
|
+
const [model, dispatch] = useElmishMap(props, init, updateMap, "App");
|
|
186
|
+
|
|
187
|
+
return (
|
|
188
|
+
<div>
|
|
189
|
+
...
|
|
190
|
+
</div>
|
|
191
|
+
);
|
|
192
|
+
};
|
|
193
|
+
```
|
|
194
|
+
|
|
167
195
|
## More on messages
|
|
168
196
|
|
|
169
197
|
### Message arguments
|
|
@@ -450,7 +478,7 @@ export const Msg = {
|
|
|
450
478
|
const cmd = Elm.createCmd<Message>();
|
|
451
479
|
|
|
452
480
|
export type Model = Readonly<{
|
|
453
|
-
settings:
|
|
481
|
+
settings: Settings | null,
|
|
454
482
|
}>;
|
|
455
483
|
|
|
456
484
|
export const init = (): Model => ({
|
|
@@ -659,3 +687,14 @@ it("returns the correct cmd", () => {
|
|
|
659
687
|
});
|
|
660
688
|
...
|
|
661
689
|
```
|
|
690
|
+
|
|
691
|
+
## Migration from v1.x to 2.x
|
|
692
|
+
|
|
693
|
+
* Use `Logger` and `Message` instead of `ILogger` and `IMessage`.
|
|
694
|
+
* The global declaration of the `Nullable` type was removed, because it is unexpected for this library to declare such a type. You can declare this type for yourself if needed:
|
|
695
|
+
|
|
696
|
+
```ts
|
|
697
|
+
declare global {
|
|
698
|
+
type Nullable<T> = T | null;
|
|
699
|
+
}
|
|
700
|
+
```
|
package/dist/Cmd.js
CHANGED
|
@@ -9,7 +9,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
|
9
9
|
|
|
10
10
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
11
11
|
|
|
12
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
12
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
13
13
|
|
|
14
14
|
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; }
|
|
15
15
|
|
package/dist/ElmComponent.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
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
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -13,9 +13,9 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
13
13
|
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
15
|
|
|
16
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
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; }
|
|
17
17
|
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
18
|
+
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; }
|
|
19
19
|
|
|
20
20
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
21
21
|
|
|
@@ -33,9 +33,9 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
|
33
33
|
|
|
34
34
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
35
35
|
|
|
36
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
36
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
37
37
|
|
|
38
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
38
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
39
39
|
|
|
40
40
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
41
41
|
|
|
@@ -80,18 +80,12 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
80
80
|
|
|
81
81
|
_this = _super.call(this, props);
|
|
82
82
|
|
|
83
|
-
_defineProperty(_assertThisInitialized(_this), "initCmd", void 0);
|
|
84
|
-
|
|
85
|
-
_defineProperty(_assertThisInitialized(_this), "componentName", void 0);
|
|
86
|
-
|
|
87
83
|
_defineProperty(_assertThisInitialized(_this), "buffer", []);
|
|
88
84
|
|
|
89
85
|
_defineProperty(_assertThisInitialized(_this), "reentered", false);
|
|
90
86
|
|
|
91
87
|
_defineProperty(_assertThisInitialized(_this), "mounted", false);
|
|
92
88
|
|
|
93
|
-
_defineProperty(_assertThisInitialized(_this), "currentModel", void 0);
|
|
94
|
-
|
|
95
89
|
_defineProperty(_assertThisInitialized(_this), "dispatch", function (msg) {
|
|
96
90
|
var modelHasChanged = function modelHasChanged(model) {
|
|
97
91
|
return model !== _this.currentModel && Object.getOwnPropertyNames(model).length > 0;
|
|
@@ -143,8 +137,6 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
143
137
|
}
|
|
144
138
|
});
|
|
145
139
|
|
|
146
|
-
_defineProperty(_assertThisInitialized(_this), "update", void 0);
|
|
147
|
-
|
|
148
140
|
var _init = init(_this.props),
|
|
149
141
|
_init2 = _slicedToArray(_init, 2),
|
|
150
142
|
_model = _init2[0],
|
|
@@ -214,6 +206,16 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
214
206
|
* @memberof ElmComponent
|
|
215
207
|
*/
|
|
216
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Function to modify the model based on a message.
|
|
211
|
+
* @param {TModel} model The current model.
|
|
212
|
+
* @param {TMsg} msg The message to process.
|
|
213
|
+
* @param {TProps} props The props of the component.
|
|
214
|
+
* @returns The new model (can also be an empty object {}) and an optional new message to dispatch.
|
|
215
|
+
* @abstract
|
|
216
|
+
* @memberof ElmComponent
|
|
217
|
+
*/
|
|
218
|
+
|
|
217
219
|
}]);
|
|
218
220
|
|
|
219
221
|
return ElmComponent;
|
|
@@ -224,4 +226,4 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
224
226
|
|
|
225
227
|
|
|
226
228
|
exports.ElmComponent = ElmComponent;
|
|
227
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1Db21wb25lbnQudHMiXSwibmFtZXMiOlsiRWxtQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwibmFtZSIsIm1zZyIsIm1vZGVsSGFzQ2hhbmdlZCIsIm1vZGVsIiwiY3VycmVudE1vZGVsIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImxlbmd0aCIsImRpc3BhdGNoTWlkZGxld2FyZSIsInJlZW50ZXJlZCIsImJ1ZmZlciIsInB1c2giLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJMb2dnZXJTZXJ2aWNlIiwiaW5mbyIsImNvbXBvbmVudE5hbWUiLCJkZWJ1ZyIsInVwZGF0ZSIsImNtZCIsImV4ZWNDbWQiLCJleCIsImVycm9yIiwic2hpZnQiLCJtb3VudGVkIiwiZm9yY2VVcGRhdGUiLCJpbml0Q21kIiwiZm9yRWFjaCIsImNhbGwiLCJkaXNwYXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDc0JBLFk7Ozs7O0FBUWxCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksd0JBQW9CQyxLQUFwQixFQUFtQ0MsSUFBbkMsRUFBMkZDLElBQTNGLEVBQXlHO0FBQUE7O0FBQUE7O0FBQ3JHLDhCQUFNRixLQUFOOztBQURxRzs7QUFBQTs7QUFBQSw2REFadEUsRUFZc0U7O0FBQUEsZ0VBWHJGLEtBV3FGOztBQUFBLDhEQVZ2RixLQVV1Rjs7QUFBQTs7QUFBQSwrREEwRDlFLFVBQUNHLEdBQUQsRUFBcUI7QUFDNUMsVUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDQyxLQUFEO0FBQUEsZUFBcUNBLEtBQUssS0FBSyxNQUFLQyxZQUFmLElBQStCQyxNQUFNLENBQUNDLG1CQUFQLENBQTJCSCxL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QTs7Ozs7RUF4RWlGMEIsa0JBQU1DLFM7QUFrSXZGO0FBQ0E7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3BhdGNoTWlkZGxld2FyZSwgTG9nZ2VyU2VydmljZSwgTWVzc2FnZSB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IENtZCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgZWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1zZyBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVsbUNvbXBvbmVudDxUTW9kZWwsIFRNc2cgZXh0ZW5kcyBNZXNzYWdlLCBUUHJvcHM+IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFRQcm9wcz4ge1xuICAgIHByaXZhdGUgaW5pdENtZDogTnVsbGFibGU8Q21kPFRNc2c+PiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1ZmZlcjogVE1zZyBbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVlbnRlcmVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtb3VudGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50TW9kZWw6IFRNb2RlbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRWxtQ29tcG9uZW50LlxuICAgICAqIEBwYXJhbSB7VFByb3BzfSBwcm9wcyBUaGUgcHJvcHMgZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIHsoKSA9PiBUTW9kZWx9IGluaXQgVGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAocHJvcHM6IFRQcm9wcywgaW5pdDogKGFyZzogVFByb3BzKSA9PiBbVE1vZGVsLCBDbWQ8VE1zZz4gfCB1bmRlZmluZWRdLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IGluaXQodGhpcy5wcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5pbml0Q21kID0gY21kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuICAgICAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRDbWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY0NtZCh0aGlzLmluaXRDbWQpO1xuICAgICAgICAgICAgdGhpcy5pbml0Q21kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY0NtZCAoY21kOiBDbWQ8VE1zZz4pOiB2b2lkIHtcbiAgICAgICAgY21kLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGwodGhpcy5kaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmVycm9yKGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBtb2RlbC5cbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAdHlwZSB7UmVhZG9ubHk8VE1vZGVsPn1cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBtb2RlbCAoKTogUmVhZG9ubHk8VE1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVzIGEgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNc2d9IG1zZyBUaGUgbWVzc2FnZSB0byBkaXNwYXRjaC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BhdGNoID0gKG1zZzogVE1zZyk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbEhhc0NoYW5nZWQgPSAobW9kZWw6IFBhcnRpYWw8VE1vZGVsPik6IGJvb2xlYW4gPT4gbW9kZWwgIT09IHRoaXMuY3VycmVudE1vZGVsICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1vZGVsKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChkaXNwYXRjaE1pZGRsZXdhcmUpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoTWlkZGxld2FyZShtc2cpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVlbnRlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKG1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBuZXh0TXNnOiBUTXNnIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uaW5mbyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIG5leHRNc2cubmFtZSk7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uZGVidWcoXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgdGhpcy5jb21wb25lbnROYW1lLCBuZXh0TXNnKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IHRoaXMudXBkYXRlKHRoaXMuY3VycmVudE1vZGVsLCBuZXh0TXNnLCB0aGlzLnByb3BzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWxIYXNDaGFuZ2VkKG1vZGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSB7IC4uLnRoaXMuY3VycmVudE1vZGVsLCAuLi5tb2RlbCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjQ21kKGNtZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBMb2dnZXJTZXJ2aWNlPy5lcnJvcihleCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV4dE1zZyA9IHRoaXMuYnVmZmVyLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uZGVidWcoXCJFbG1cIiwgXCJ1cGRhdGUgbW9kZWwgZm9yXCIsIHRoaXMuY29tcG9uZW50TmFtZSwgdGhpcy5jdXJyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBtb2RpZnkgdGhlIG1vZGVsIGJhc2VkIG9uIGEgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNb2RlbH0gbW9kZWwgVGhlIGN1cnJlbnQgbW9kZWwuXG4gICAgICogQHBhcmFtIHtUTXNnfSBtc2cgVGhlIG1lc3NhZ2UgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBtb2RlbCAoY2FuIGFsc28gYmUgYW4gZW1wdHkgb2JqZWN0IHt9KSBhbmQgYW4gb3B0aW9uYWwgbmV3IG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG4gICAgICogQGFic3RyYWN0XG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IChtb2RlbDogVE1vZGVsLCBtc2c6IFRNc2csIHByb3BzOiBUUHJvcHMpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPjtcbn1cblxuLyoqXG4gKiBUeXBlIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB1cGRhdGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPiA9IFtQYXJ0aWFsPFRNb2RlbD4sIENtZDxUTXNnPj9dOyJdfQ==
|
|
229
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1Db21wb25lbnQudHMiXSwibmFtZXMiOlsiRWxtQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwibmFtZSIsIm1zZyIsIm1vZGVsSGFzQ2hhbmdlZCIsIm1vZGVsIiwiY3VycmVudE1vZGVsIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImxlbmd0aCIsImRpc3BhdGNoTWlkZGxld2FyZSIsInJlZW50ZXJlZCIsImJ1ZmZlciIsInB1c2giLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJMb2dnZXJTZXJ2aWNlIiwiaW5mbyIsImNvbXBvbmVudE5hbWUiLCJkZWJ1ZyIsInVwZGF0ZSIsImNtZCIsImV4ZWNDbWQiLCJleCIsImVycm9yIiwic2hpZnQiLCJtb3VudGVkIiwiZm9yY2VVcGRhdGUiLCJpbml0Q21kIiwiZm9yRWFjaCIsImNhbGwiLCJkaXNwYXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDc0JBLFk7Ozs7O0FBUWxCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksd0JBQW9CQyxLQUFwQixFQUFtQ0MsSUFBbkMsRUFBMkZDLElBQTNGLEVBQXlHO0FBQUE7O0FBQUE7O0FBQ3JHLDhCQUFNRixLQUFOOztBQURxRyw2REFadEUsRUFZc0U7O0FBQUEsZ0VBWHJGLEtBV3FGOztBQUFBLDhEQVZ2RixLQVV1Rjs7QUFBQSwrREEwRDlFLFVBQUNHLEdBQUQsRUFBcUI7QUFDNUMsVUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDQyxLQUFEO0FBQUEsZUFBcUNBLEtBQUssS0FBSyxNQUFLQyxZQUFmLElBQStCQyxNQUFNLENBQUNDLG1CQUFQLENBQTJCSCxLQUEzQixFQUFrQ0ksTUFBbEMs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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQTlIaUYwQixrQkFBTUMsUztBQWtJdkY7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzcGF0Y2hNaWRkbGV3YXJlLCBMb2dnZXJTZXJ2aWNlLCBNZXNzYWdlIH0gZnJvbSBcIi4vSW5pdFwiO1xuaW1wb3J0IHsgQ21kIH0gZnJvbSBcIi4vQ21kXCI7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gXCIuL0VsbVV0aWxpdGllc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgZWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1zZyBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVsbUNvbXBvbmVudDxUTW9kZWwsIFRNc2cgZXh0ZW5kcyBNZXNzYWdlLCBUUHJvcHM+IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFRQcm9wcz4ge1xuICAgIHByaXZhdGUgaW5pdENtZDogTnVsbGFibGU8Q21kPFRNc2c+PiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1ZmZlcjogVE1zZyBbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVlbnRlcmVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtb3VudGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50TW9kZWw6IFRNb2RlbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRWxtQ29tcG9uZW50LlxuICAgICAqIEBwYXJhbSB7VFByb3BzfSBwcm9wcyBUaGUgcHJvcHMgZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIHsoKSA9PiBUTW9kZWx9IGluaXQgVGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAocHJvcHM6IFRQcm9wcywgaW5pdDogKGFyZzogVFByb3BzKSA9PiBbVE1vZGVsLCBDbWQ8VE1zZz4gfCB1bmRlZmluZWRdLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IGluaXQodGhpcy5wcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5pbml0Q21kID0gY21kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuICAgICAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRDbWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY0NtZCh0aGlzLmluaXRDbWQpO1xuICAgICAgICAgICAgdGhpcy5pbml0Q21kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY0NtZCAoY21kOiBDbWQ8VE1zZz4pOiB2b2lkIHtcbiAgICAgICAgY21kLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGwodGhpcy5kaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmVycm9yKGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBtb2RlbC5cbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAdHlwZSB7UmVhZG9ubHk8VE1vZGVsPn1cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBtb2RlbCAoKTogUmVhZG9ubHk8VE1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVzIGEgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNc2d9IG1zZyBUaGUgbWVzc2FnZSB0byBkaXNwYXRjaC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BhdGNoID0gKG1zZzogVE1zZyk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbEhhc0NoYW5nZWQgPSAobW9kZWw6IFBhcnRpYWw8VE1vZGVsPik6IGJvb2xlYW4gPT4gbW9kZWwgIT09IHRoaXMuY3VycmVudE1vZGVsICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1vZGVsKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChkaXNwYXRjaE1pZGRsZXdhcmUpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoTWlkZGxld2FyZShtc2cpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVlbnRlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKG1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBuZXh0TXNnOiBUTXNnIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uaW5mbyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIG5leHRNc2cubmFtZSk7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uZGVidWcoXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgdGhpcy5jb21wb25lbnROYW1lLCBuZXh0TXNnKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IHRoaXMudXBkYXRlKHRoaXMuY3VycmVudE1vZGVsLCBuZXh0TXNnLCB0aGlzLnByb3BzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWxIYXNDaGFuZ2VkKG1vZGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSB7IC4uLnRoaXMuY3VycmVudE1vZGVsLCAuLi5tb2RlbCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjQ21kKGNtZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBMb2dnZXJTZXJ2aWNlPy5lcnJvcihleCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV4dE1zZyA9IHRoaXMuYnVmZmVyLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uZGVidWcoXCJFbG1cIiwgXCJ1cGRhdGUgbW9kZWwgZm9yXCIsIHRoaXMuY29tcG9uZW50TmFtZSwgdGhpcy5jdXJyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBtb2RpZnkgdGhlIG1vZGVsIGJhc2VkIG9uIGEgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNb2RlbH0gbW9kZWwgVGhlIGN1cnJlbnQgbW9kZWwuXG4gICAgICogQHBhcmFtIHtUTXNnfSBtc2cgVGhlIG1lc3NhZ2UgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBtb2RlbCAoY2FuIGFsc28gYmUgYW4gZW1wdHkgb2JqZWN0IHt9KSBhbmQgYW4gb3B0aW9uYWwgbmV3IG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG4gICAgICogQGFic3RyYWN0XG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IChtb2RlbDogVE1vZGVsLCBtc2c6IFRNc2csIHByb3BzOiBUUHJvcHMpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPjtcbn1cblxuLyoqXG4gKiBUeXBlIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB1cGRhdGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPiA9IFtQYXJ0aWFsPFRNb2RlbD4sIENtZDxUTXNnPj9dOyJdfQ==
|
package/dist/ElmUtilities.d.ts
CHANGED
|
@@ -6,8 +6,9 @@ import { UpdateReturnType } from "./ElmComponent";
|
|
|
6
6
|
* @param {Error} error The error.
|
|
7
7
|
*/
|
|
8
8
|
export declare const handleError: <TModel, TMsg>(error: Error) => UpdateReturnType<TModel, TMsg>;
|
|
9
|
-
declare
|
|
10
|
-
|
|
9
|
+
export declare type Nullable<T> = T | null;
|
|
10
|
+
export interface MessageBase {
|
|
11
|
+
name: string | symbol;
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
14
|
* Creates a MsgSource type.
|
|
@@ -15,3 +16,10 @@ declare global {
|
|
|
15
16
|
export interface MsgSource<T extends string> {
|
|
16
17
|
source: T;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Type for mapping messages to functions.
|
|
21
|
+
* Use this type to create your update logic for the useElmishMap hook.
|
|
22
|
+
*/
|
|
23
|
+
export declare type UpdateMap<TProps, TModel, TMsg extends MessageBase> = {
|
|
24
|
+
[M in TMsg as M["name"]]: (msg: M, model: TModel, props: TProps) => UpdateReturnType<TModel, TMsg>;
|
|
25
|
+
};
|
package/dist/ElmUtilities.js
CHANGED
|
@@ -23,4 +23,4 @@ var handleError = function handleError(error) {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
exports.handleError = handleError;
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1VdGlsaXRpZXMudHMiXSwibmFtZXMiOlsiaGFuZGxlRXJyb3IiLCJlcnJvciIsImVycm9yTWlkZGxld2FyZSIsIkxvZ2dlclNlcnZpY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQSxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFlQyxLQUFmLEVBQWdFO0FBQ3ZGLE1BQUlDLHFCQUFKLEVBQXFCO0FBQ2pCLCtCQUFnQkQsS0FBaEI7QUFDSDs7QUFDREUsZ0dBQWVGLEtBQWYsQ0FBcUJBLEtBQXJCO0FBRUEsU0FBTyxDQUFDLEVBQUQsQ0FBUDtBQUNILENBUE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvck1pZGRsZXdhcmUsIExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4vRWxtQ29tcG9uZW50XCI7XG5cbi8qKlxuICogSGFuZGxlcyBhbiBlcnJvci5cbiAqIExvZ3MgdGhlIGVycm9yIGlmIGEgTG9nZ2VyIHdhcyBzcGVjaWZpZWQuXG4gKiBDYWxscyB0aGUgZXJyb3IgaGFuZGxpbmcgbWlkZGxld2FyZSBpZiBzcGVjaWZpZWQuXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVFcnJvciA9IDxUTW9kZWwsIFRNc2c+
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1VdGlsaXRpZXMudHMiXSwibmFtZXMiOlsiaGFuZGxlRXJyb3IiLCJlcnJvciIsImVycm9yTWlkZGxld2FyZSIsIkxvZ2dlclNlcnZpY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQSxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFlQyxLQUFmLEVBQWdFO0FBQ3ZGLE1BQUlDLHFCQUFKLEVBQXFCO0FBQ2pCLCtCQUFnQkQsS0FBaEI7QUFDSDs7QUFDREUsZ0dBQWVGLEtBQWYsQ0FBcUJBLEtBQXJCO0FBRUEsU0FBTyxDQUFDLEVBQUQsQ0FBUDtBQUNILENBUE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvck1pZGRsZXdhcmUsIExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4vRWxtQ29tcG9uZW50XCI7XG5cbi8qKlxuICogSGFuZGxlcyBhbiBlcnJvci5cbiAqIExvZ3MgdGhlIGVycm9yIGlmIGEgTG9nZ2VyIHdhcyBzcGVjaWZpZWQuXG4gKiBDYWxscyB0aGUgZXJyb3IgaGFuZGxpbmcgbWlkZGxld2FyZSBpZiBzcGVjaWZpZWQuXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVFcnJvciA9IDxUTW9kZWwsIFRNc2c+KGVycm9yOiBFcnJvcik6IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPiA9PiB7XG4gICAgaWYgKGVycm9yTWlkZGxld2FyZSkge1xuICAgICAgICBlcnJvck1pZGRsZXdhcmUoZXJyb3IpO1xuICAgIH1cbiAgICBMb2dnZXJTZXJ2aWNlPy5lcnJvcihlcnJvcik7XG5cbiAgICByZXR1cm4gW3t9XTtcbn07XG5cbmV4cG9ydCB0eXBlIE51bGxhYmxlPFQ+ID0gVCB8IG51bGw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJhc2Uge1xuICAgIG5hbWU6IHN0cmluZyB8IHN5bWJvbCxcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTXNnU291cmNlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXNnU291cmNlPFQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgICBzb3VyY2U6IFQsXG59XG5cbi8qKlxuICogVHlwZSBmb3IgbWFwcGluZyBtZXNzYWdlcyB0byBmdW5jdGlvbnMuXG4gKiBVc2UgdGhpcyB0eXBlIHRvIGNyZWF0ZSB5b3VyIHVwZGF0ZSBsb2dpYyBmb3IgdGhlIHVzZUVsbWlzaE1hcCBob29rLlxuICovXG5leHBvcnQgdHlwZSBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNc2cgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gPSB7XG4gICAgW00gaW4gVE1zZyBhcyBNW1wibmFtZVwiXV06IChtc2c6IE0sIG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTXNnPjtcbn07Il19
|
package/dist/Init.d.ts
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
* @deprecated Use Logger instead.
|
|
3
|
-
*/
|
|
4
|
-
export interface ILogger {
|
|
1
|
+
export interface Logger {
|
|
5
2
|
debug: (...args: unknown[]) => void;
|
|
6
3
|
info: (...args: unknown[]) => void;
|
|
7
4
|
error: (...args: unknown[]) => void;
|
|
8
5
|
}
|
|
9
|
-
export interface
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* @deprecated Use Message instead.
|
|
13
|
-
*/
|
|
14
|
-
export interface IMessage {
|
|
6
|
+
export interface Message {
|
|
15
7
|
name: string | symbol;
|
|
16
8
|
}
|
|
17
|
-
export interface Message extends IMessage {
|
|
18
|
-
}
|
|
19
9
|
export declare type ErrorMiddlewareFunc = (error: Error) => void;
|
|
20
10
|
export declare type DispatchMiddlewareFunc = (msg: Message) => void;
|
|
21
11
|
export declare let LoggerService: Logger | null;
|
package/dist/Init.js
CHANGED
|
@@ -4,16 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.init = exports.errorMiddleware = exports.dispatchMiddleware = exports.LoggerService = void 0;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @deprecated Use Logger instead.
|
|
10
|
-
*/
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @deprecated Use Message instead.
|
|
15
|
-
*/
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
17
7
|
var LoggerService = null;
|
|
18
8
|
exports.LoggerService = LoggerService;
|
|
19
9
|
var errorMiddleware = null;
|
|
@@ -30,4 +20,4 @@ var init = function init(options) {
|
|
|
30
20
|
};
|
|
31
21
|
|
|
32
22
|
exports.init = init;
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Jbml0LnRzIl0sIm5hbWVzIjpbIkxvZ2dlclNlcnZpY2UiLCJlcnJvck1pZGRsZXdhcmUiLCJkaXNwYXRjaE1pZGRsZXdhcmUiLCJpbml0Iiwib3B0aW9ucyIsImxvZ2dlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBYU8sSUFBSUEsYUFBNEIsR0FBRyxJQUFuQzs7QUFDQSxJQUFJQyxlQUEyQyxHQUFHLElBQWxEOztBQUNBLElBQUlDLGtCQUFpRCxHQUFHLElBQXhEOzs7QUFRUCxJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBTyxDQUFDQyxPQUFELEVBQStCO0FBQUE7O0FBQ3hDLDBCQUFBSixhQUFhLHNCQUFHSSxPQUFPLENBQUNDLE1BQVgsNkRBQXFCLElBQWxDO0FBQ0EsNEJBQUFKLGVBQWUsNEJBQUdHLE9BQU8sQ0FBQ0gsZUFBWCx5RUFBOEIsSUFBN0M7QUFDQSwrQkFBQUMsa0JBQWtCLDRCQUFHRSxPQUFPLENBQUNGLGtCQUFYLHlFQUFpQyxJQUFuRDtBQUNILENBSkQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gICAgZGVidWc6ICguLi5hcmdzOiB1bmtub3duIFtdKSA9PiB2b2lkLFxuICAgIGluZm86ICguLi5hcmdzOiB1bmtub3duIFtdKSA9PiB2b2lkLFxuICAgIGVycm9yOiAoLi4uYXJnczogdW5rbm93biBbXSkgPT4gdm9pZCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgICBuYW1lOiBzdHJpbmcgfCBzeW1ib2wsXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yTWlkZGxld2FyZUZ1bmMgPSAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgRGlzcGF0Y2hNaWRkbGV3YXJlRnVuYyA9IChtc2c6IE1lc3NhZ2UpID0+IHZvaWQ7XG5cbmV4cG9ydCBsZXQgTG9nZ2VyU2VydmljZTogTG9nZ2VyIHwgbnVsbCA9IG51bGw7XG5leHBvcnQgbGV0IGVycm9yTWlkZGxld2FyZTogRXJyb3JNaWRkbGV3YXJlRnVuYyB8IG51bGwgPSBudWxsO1xuZXhwb3J0IGxldCBkaXNwYXRjaE1pZGRsZXdhcmU6IERpc3BhdGNoTWlkZGxld2FyZUZ1bmMgfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGludGVyZmFjZSBFbG1PcHRpb25zIHtcbiAgICBsb2dnZXI/OiBMb2dnZXIsXG4gICAgZXJyb3JNaWRkbGV3YXJlPzogRXJyb3JNaWRkbGV3YXJlRnVuYyxcbiAgICBkaXNwYXRjaE1pZGRsZXdhcmU/OiBEaXNwYXRjaE1pZGRsZXdhcmVGdW5jLFxufVxuXG5jb25zdCBpbml0ID0gKG9wdGlvbnM6IEVsbU9wdGlvbnMpOiB2b2lkID0+IHtcbiAgICBMb2dnZXJTZXJ2aWNlID0gb3B0aW9ucy5sb2dnZXIgPz8gbnVsbDtcbiAgICBlcnJvck1pZGRsZXdhcmUgPSBvcHRpb25zLmVycm9yTWlkZGxld2FyZSA/PyBudWxsO1xuICAgIGRpc3BhdGNoTWlkZGxld2FyZSA9IG9wdGlvbnMuZGlzcGF0Y2hNaWRkbGV3YXJlID8/IG51bGw7XG59O1xuXG5leHBvcnQgeyBpbml0IH07Il19
|
package/dist/Testing/index.d.ts
CHANGED
package/dist/Testing/index.js
CHANGED
|
@@ -85,7 +85,7 @@ function _execCmd() {
|
|
|
85
85
|
break;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
return _context3.abrupt("return",
|
|
88
|
+
return _context3.abrupt("return", []);
|
|
89
89
|
|
|
90
90
|
case 2:
|
|
91
91
|
callers = cmd.map( /*#__PURE__*/function () {
|
|
@@ -136,4 +136,4 @@ function _execCmd() {
|
|
|
136
136
|
}));
|
|
137
137
|
return _execCmd.apply(this, arguments);
|
|
138
138
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9UZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbInJ1blNpbmdsZU9mUHJvbWlzZUNtZCIsImNtZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGlzcGF0Y2giLCJnZXRPZk1zZ1BhcmFtcyIsIm1zZ05hbWVzIiwibXNnIiwicHVzaCIsIm1hcCIsImN1cnJlbnRDbWQiLCJleGVjQ21kIiwiY2FsbGVycyIsInJlamVjdCIsImVycm9yIiwiYWxsIiwicmVzdWx0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7U0FDc0JBLHFCOzs7QUFRdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzttRkFaTyxpQkFBNENDLEdBQTVDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw2Q0FDSSxJQUFJQyxPQUFKLENBQWtCLFVBQUFDLE9BQU8sRUFBSTtBQUNoQyxrQkFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVc7QUFBQSx1QkFBWUQsT0FBTyxFQUFuQjtBQUFBLGVBQWpCOztBQUVBRixjQUFBQSxHQUFHLENBQUMsQ0FBRCxDQUFILENBQU9HLFFBQVA7QUFDSCxhQUpNLENBREo7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRzs7OztBQWFBLFNBQVNDLGNBQVQsQ0FBK0JKLEdBQS9CLEVBQXlEO0FBQzVELE1BQU1LLFFBQWlCLEdBQUcsRUFBMUI7O0FBRUEsTUFBTUYsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQ0csR0FBRCxFQUFxQjtBQUNsQ0QsSUFBQUEsUUFBUSxDQUFDRSxJQUFULENBQWNELEdBQWQ7QUFDSCxHQUZEOztBQUlBTixFQUFBQSxHQUFHLFNBQUgsSUFBQUEsR0FBRyxXQUFILFlBQUFBLEdBQUcsQ0FBRVEsR0FBTCxDQUFTLFVBQUFDLFVBQVU7QUFBQSxXQUFJQSxVQUFVLENBQUNOLFFBQUQsQ0FBZDtBQUFBLEdBQW5CO0FBRUEsU0FBT0UsUUFBUDtBQUNIO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1NBQ3NCSyxPOzs7OztxRUFBZixrQkFBOEJWLEdBQTlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUNFQSxHQURGO0FBQUE7QUFBQTtBQUFBOztBQUFBLDhDQUVRLEVBRlI7O0FBQUE7QUFLR1csWUFBQUEsT0FMSCxHQUthWCxHQUFHLENBQUNRLEdBQUo7QUFBQSxpRkFBUSxrQkFBTUMsVUFBTjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMERBQW9CLElBQUlSLE9BQUosQ0FBNEIsVUFBQ0MsT0FBRCxFQUFVVSxNQUFWLEVBQXFCO0FBQ3pGLDhCQUFNVCxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDRyxHQUFEO0FBQUEsbUNBQXFCSixPQUFPLENBQUNJLEdBQUQsQ0FBNUI7QUFBQSwyQkFBakI7O0FBRUFHLDBCQUFBQSxVQUFVLENBQUNOLFFBQUQsRUFBVyxVQUFBVSxLQUFLLEVBQUk7QUFDMUIsZ0NBQUlBLEtBQUosRUFBVztBQUNQRCw4QkFBQUEsTUFBTSxDQUFDQyxLQUFELENBQU47QUFDSCw2QkFGRCxNQUVPO0FBQ0hYLDhCQUFBQSxPQUFPLENBQUMsSUFBRCxDQUFQO0FBQ0g7QUFDSiwyQkFOUyxDQUFWO0FBT0gseUJBVjJDLENBQXBCOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQVI7O0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBTGI7QUFBQTtBQUFBLG1CQWlCbUJELE9BQU8sQ0FBQ2EsR0FBUixDQUFZSCxPQUFaLENBakJuQjs7QUFBQTtBQWlCR0ksWUFBQUEsT0FqQkg7QUFBQSw4Q0FtQklBLE9BbkJKOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbWQgfSBmcm9tIFwiLi4vQ21kXCI7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gXCIuLi9FbG1VdGlsaXRpZXNcIjtcblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBjb21tYW5kIGNyZWF0ZWQgYnkgb25lIG9mIHRoZSBvZlByb21pc2UgZnVuY3Rpb25zLlxuICogQHBhcmFtIGNtZCBUaGUgY29tbWFuZCB0byBwcm9jZXNzLlxuICogQGRlcHJlY2F0ZWQgVXNlIGV4ZWNDbWQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blNpbmdsZU9mUHJvbWlzZUNtZDxUTXNnPiAoY21kOiBDbWQ8VE1zZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BhdGNoID0gKCk6IHZvaWQgPT4gcmVzb2x2ZSgpO1xuXG4gICAgICAgIGNtZFswXShkaXNwYXRjaCk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIG1lc3NhZ2VzIG91dCBvZiBhIGNvbW1hbmQuXG4gKiBAcGFyYW0gY21kIFRoZSBjb21tYW5kIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPZk1zZ1BhcmFtczxUTXNnPiAoY21kPzogQ21kPFRNc2c+KTogVE1zZyBbXSB7XG4gICAgY29uc3QgbXNnTmFtZXM6IFRNc2cgW10gPSBbXTtcblxuICAgIGNvbnN0IGRpc3BhdGNoID0gKG1zZzogVE1zZyk6IHZvaWQgPT4ge1xuICAgICAgICBtc2dOYW1lcy5wdXNoKG1zZyk7XG4gICAgfTtcblxuICAgIGNtZD8ubWFwKGN1cnJlbnRDbWQgPT4gY3VycmVudENtZChkaXNwYXRjaCkpO1xuXG4gICAgcmV0dXJuIG1zZ05hbWVzO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGFsbCBjb21tYW5kcyBhbmQgcmVzb2x2ZXMgdGhlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGNtZCBUaGUgY29tbWFuZCB0byBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIHByb2Nlc3NlZCBtZXNzYWdlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWNDbWQ8VE1zZz4gKGNtZD86IENtZDxUTXNnPik6IFByb21pc2U8TnVsbGFibGU8VE1zZz4gW10+IHtcbiAgICBpZiAoIWNtZCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGVycyA9IGNtZC5tYXAoYXN5bmMgY3VycmVudENtZCA9PiBuZXcgUHJvbWlzZTxOdWxsYWJsZTxUTXNnPj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBkaXNwYXRjaCA9IChtc2c6IFRNc2cpOiB2b2lkID0+IHJlc29sdmUobXNnKTtcblxuICAgICAgICBjdXJyZW50Q21kKGRpc3BhdGNoLCBlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoY2FsbGVycyk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbn0iXX0=
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Cmd, createCmd, Dispatch } from "./Cmd";
|
|
2
2
|
import { ElmComponent, UpdateReturnType } from "./ElmComponent";
|
|
3
|
-
import { handleError, MsgSource } from "./ElmUtilities";
|
|
4
|
-
import {
|
|
5
|
-
import { useElmish } from "./
|
|
6
|
-
|
|
7
|
-
export {
|
|
3
|
+
import { handleError, MsgSource, UpdateMap } from "./ElmUtilities";
|
|
4
|
+
import { init, Logger, Message } from "./Init";
|
|
5
|
+
import { useElmish } from "./useElmish";
|
|
6
|
+
import { useElmishMap } from "./useElmishMap";
|
|
7
|
+
export type { Logger, Message, Cmd, Dispatch, UpdateReturnType, MsgSource, UpdateMap, };
|
|
8
|
+
export { init, createCmd, ElmComponent, handleError, useElmish, useElmishMap, };
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,13 @@ Object.defineProperty(exports, "init", {
|
|
|
30
30
|
Object.defineProperty(exports, "useElmish", {
|
|
31
31
|
enumerable: true,
|
|
32
32
|
get: function get() {
|
|
33
|
-
return
|
|
33
|
+
return _useElmish.useElmish;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "useElmishMap", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _useElmishMap.useElmishMap;
|
|
34
40
|
}
|
|
35
41
|
});
|
|
36
42
|
|
|
@@ -42,5 +48,7 @@ var _ElmUtilities = require("./ElmUtilities");
|
|
|
42
48
|
|
|
43
49
|
var _Init = require("./Init");
|
|
44
50
|
|
|
45
|
-
var
|
|
46
|
-
|
|
51
|
+
var _useElmish = require("./useElmish");
|
|
52
|
+
|
|
53
|
+
var _useElmishMap = require("./useElmishMap");
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENtZCwgY3JlYXRlQ21kLCBEaXNwYXRjaCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgRWxtQ29tcG9uZW50LCBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4vRWxtQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciwgTXNnU291cmNlLCBVcGRhdGVNYXAgfSBmcm9tIFwiLi9FbG1VdGlsaXRpZXNcIjtcbmltcG9ydCB7IGluaXQsIExvZ2dlciwgTWVzc2FnZSB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IHVzZUVsbWlzaCB9IGZyb20gXCIuL3VzZUVsbWlzaFwiO1xuaW1wb3J0IHsgdXNlRWxtaXNoTWFwIH0gZnJvbSBcIi4vdXNlRWxtaXNoTWFwXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgICBMb2dnZXIsXG4gICAgTWVzc2FnZSxcbiAgICBDbWQsXG4gICAgRGlzcGF0Y2gsXG4gICAgVXBkYXRlUmV0dXJuVHlwZSxcbiAgICBNc2dTb3VyY2UsXG4gICAgVXBkYXRlTWFwLFxufTtcblxuZXhwb3J0IHtcbiAgICBpbml0LFxuICAgIGNyZWF0ZUNtZCxcbiAgICBFbG1Db21wb25lbnQsXG4gICAgaGFuZGxlRXJyb3IsXG4gICAgdXNlRWxtaXNoLFxuICAgIHVzZUVsbWlzaE1hcCxcbn07Il19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Cmd, Dispatch } from "./Cmd";
|
|
2
|
+
import { MessageBase } from "./ElmUtilities";
|
|
3
|
+
import { UpdateReturnType } from ".";
|
|
4
|
+
export declare function useElmish<TProps, TModel, TMsg extends MessageBase>(props: TProps, init: (props: TProps) => [TModel, Cmd<TMsg>], update: (model: TModel, msg: TMsg, props: TProps) => UpdateReturnType<TModel, TMsg>, name: string): [TModel, Dispatch<TMsg>];
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useElmish = useElmish;
|
|
7
|
+
|
|
8
|
+
var _Init = require("./Init");
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
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; }
|
|
13
|
+
|
|
14
|
+
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; }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
18
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
|
+
|
|
20
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
|
+
|
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
26
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
27
|
+
|
|
28
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
29
|
+
|
|
30
|
+
function useElmish(props, init, update, name) {
|
|
31
|
+
var reentered = false;
|
|
32
|
+
var buffer = [];
|
|
33
|
+
var currentModel = {};
|
|
34
|
+
|
|
35
|
+
var _useState = (0, _react.useState)(null),
|
|
36
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37
|
+
model = _useState2[0],
|
|
38
|
+
setModel = _useState2[1];
|
|
39
|
+
|
|
40
|
+
var initializedModel = model;
|
|
41
|
+
var execCmd = (0, _react.useCallback)(function (cmd) {
|
|
42
|
+
cmd.forEach(function (call) {
|
|
43
|
+
try {
|
|
44
|
+
call(dispatch);
|
|
45
|
+
} catch (ex) {
|
|
46
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.error(ex);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}, []);
|
|
50
|
+
var dispatch = (0, _react.useCallback)(function (msg) {
|
|
51
|
+
if (!initializedModel) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
var modelHasChanged = function modelHasChanged(updatedModel) {
|
|
56
|
+
return updatedModel !== initializedModel && Object.getOwnPropertyNames(updatedModel).length > 0;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
if (_Init.dispatchMiddleware) {
|
|
60
|
+
(0, _Init.dispatchMiddleware)(msg);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (reentered) {
|
|
64
|
+
buffer.push(msg);
|
|
65
|
+
} else {
|
|
66
|
+
reentered = true;
|
|
67
|
+
var nextMsg = msg;
|
|
68
|
+
var modified = false;
|
|
69
|
+
|
|
70
|
+
while (nextMsg) {
|
|
71
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.info("Elm", "message from", name, nextMsg.name);
|
|
72
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.debug("Elm", "message from", name, nextMsg);
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
var _update = update(_objectSpread(_objectSpread({}, initializedModel), currentModel), nextMsg, props),
|
|
76
|
+
_update2 = _slicedToArray(_update, 2),
|
|
77
|
+
newModel = _update2[0],
|
|
78
|
+
cmd = _update2[1];
|
|
79
|
+
|
|
80
|
+
if (modelHasChanged(newModel)) {
|
|
81
|
+
currentModel = _objectSpread(_objectSpread({}, currentModel), newModel);
|
|
82
|
+
modified = true;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (cmd) {
|
|
86
|
+
execCmd(cmd);
|
|
87
|
+
}
|
|
88
|
+
} catch (ex) {
|
|
89
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.error(ex);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
nextMsg = buffer.shift();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
reentered = false;
|
|
96
|
+
|
|
97
|
+
if (modified) {
|
|
98
|
+
setModel(function (prevModel) {
|
|
99
|
+
var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
|
|
100
|
+
|
|
101
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.debug("Elm", "update model for", name, updatedModel);
|
|
102
|
+
return updatedModel;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, []);
|
|
107
|
+
|
|
108
|
+
if (!initializedModel) {
|
|
109
|
+
var _init = init(props),
|
|
110
|
+
_init2 = _slicedToArray(_init, 2),
|
|
111
|
+
initModel = _init2[0],
|
|
112
|
+
initCmd = _init2[1];
|
|
113
|
+
|
|
114
|
+
initializedModel = initModel;
|
|
115
|
+
setModel(initializedModel);
|
|
116
|
+
execCmd(initCmd);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return [initializedModel, dispatch];
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VFbG1pc2gudHMiXSwibmFtZXMiOlsidXNlRWxtaXNoIiwicHJvcHMiLCJpbml0IiwidXBkYXRlIiwibmFtZSIsInJlZW50ZXJlZCIsImJ1ZmZlciIsImN1cnJlbnRNb2RlbCIsIm1vZGVsIiwic2V0TW9kZWwiLCJpbml0aWFsaXplZE1vZGVsIiwiZXhlY0NtZCIsImNtZCIsImZvckVhY2giLCJjYWxsIiwiZGlzcGF0Y2giLCJleCIsIkxvZ2dlclNlcnZpY2UiLCJlcnJvciIsIm1zZyIsIm1vZGVsSGFzQ2hhbmdlZCIsInVwZGF0ZWRNb2RlbCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJsZW5ndGgiLCJkaXNwYXRjaE1pZGRsZXdhcmUiLCJwdXNoIiwibmV4dE1zZyIsIm1vZGlmaWVkIiwiaW5mbyIsImRlYnVnIiwibmV3TW9kZWwiLCJzaGlmdCIsInByZXZNb2RlbCIsImluaXRNb2RlbCIsImluaXRDbWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHTyxTQUFTQSxTQUFULENBQThEQyxLQUE5RCxFQUE2RUMsSUFBN0UsRUFBMkhDLE1BQTNILEVBQWdOQyxJQUFoTixFQUF3UDtBQUMzUCxNQUFJQyxTQUFTLEdBQUcsS0FBaEI7QUFDQSxNQUFNQyxNQUFlLEdBQUcsRUFBeEI7QUFDQSxNQUFJQyxZQUE2QixHQUFHLEVBQXBDOztBQUVBLGtCQUEwQixxQkFBMkIsSUFBM0IsQ0FBMUI7QUFBQTtBQUFBLE1BQU9DLEtBQVA7QUFBQSxNQUFjQyxRQUFkOztBQUNBLE1BQUlDLGdCQUFnQixHQUFHRixLQUF2QjtBQUVBLE1BQU1HLE9BQU8sR0FBRyx3QkFBWSxVQUFDQyxHQUFELEVBQTBCO0FBQ2xEQSxJQUFBQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxVQUFBQyxJQUFJLEVBQUk7QUFDaEIsVUFBSTtBQUNBQSxRQUFBQSxJQUFJLENBQUNDLFFBQUQsQ0FBSjtBQUNILE9BRkQsQ0FFRSxPQUFPQyxFQUFQLEVBQW9CO0FBQ2xCQyxzR0FBZUMsS0FBZixDQUFxQkYsRUFBckI7QUFDSDtBQUNKLEtBTkQ7QUFPSCxHQVJlLEVBUWIsRUFSYSxDQUFoQjtBQVVBLE1BQU1ELFFBQVEsR0FBRyx3QkFBWSxVQUFDSSxHQUFELEVBQXFCO0FBQzlDLFFBQUksQ0FBQ1QsZ0JBQUwsRUFBdUI7QUFDbkI7QUFDSDs7QUFFRCxRQUFNVSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLFlBQUQ7QUFBQSxhQUE0Q0EsWUFBWSxLQUFLWCxnQkFBakIsSUFBcUNZLE1BQU0sQ0FBQ0MsbUJBQVAsQ0FBMkJGLFlBQTNCLEVBQXlDRyxNQUF6QyxHQUFrRCxDQUFuSTtBQUFBLEtBQXhCOztBQUVBLFFBQUlDLHdCQUFKLEVBQXdCO0FBQ3BCLG9DQUFtQk4sR0FBbkI7QUFDSDs7QUFFRCxRQUFJZCxTQUFKLEVBQWU7QUFDWEMsTUFBQUEsTUFBTSxDQUFDb0IsSUFBUCxDQUFZUCxHQUFaO0FBQ0gsS0FGRCxNQUVPO0FBQ0hkLE1BQUFBLFNBQVMsR0FBRyxJQUFaO0FBRUEsVUFBSXNCLE9BQXlCLEdBQUdSLEdBQWhDO0FBQ0EsVUFBSVMsUUFBUSxHQUFHLEtBQWY7O0FBRUEsYUFBT0QsT0FBUCxFQUFnQjtBQUNaVixzR0FBZVksSUFBZixDQUFvQixLQUFwQixFQUEyQixjQUEzQixFQUEyQ3pCLElBQTNDLEVBQWlEdUIsT0FBTyxDQUFDdkIsSUFBekQ7QUFDQWEsc0dBQWVhLEtBQWYsQ0FBcUIsS0FBckIsRUFBNEIsY0FBNUIsRUFBNEMxQixJQUE1QyxFQUFrRHVCLE9BQWxEOztBQUVBLFlBQUk7QUFDQSx3QkFBd0J4QixNQUFNLGlDQUFNTyxnQkFBTixHQUEyQkgsWUFBM0IsR0FBMkNvQixPQUEzQyxFQUFvRDFCLEtBQXBELENBQTlCO0FBQUE7QUFBQSxjQUFPOEIsUUFBUDtBQUFBLGNBQWlCbkIsR0FBakI7O0FBRUEsY0FBSVEsZUFBZSxDQUFDVyxRQUFELENBQW5CLEVBQStCO0FBQzNCeEIsWUFBQUEsWUFBWSxtQ0FBUUEsWUFBUixHQUF5QndCLFFBQXpCLENBQVo7QUFFQUgsWUFBQUEsUUFBUSxHQUFHLElBQVg7QUFDSDs7QUFFRCxjQUFJaEIsR0FBSixFQUFTO0FBQ0xELFlBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxDQUFQO0FBQ0g7QUFDSixTQVpELENBWUUsT0FBT0ksRUFBUCxFQUFvQjtBQUNsQkMsd0dBQWVDLEtBQWYsQ0FBcUJGLEVBQXJCO0FBQ0g7O0FBRURXLFFBQUFBLE9BQU8sR0FBR3JCLE1BQU0sQ0FBQzBCLEtBQVAsRUFBVjtBQUNIOztBQUNEM0IsTUFBQUEsU0FBUyxHQUFHLEtBQVo7O0FBRUEsVUFBSXVCLFFBQUosRUFBYztBQUNWbkIsUUFBQUEsUUFBUSxDQUFDLFVBQUF3QixTQUFTLEVBQUk7QUFDbEIsY0FBTVosWUFBWSxtQ0FBUVksU0FBUixHQUFnQzFCLFlBQWhDLENBQWxCOztBQUVBVSx3R0FBZWEsS0FBZixDQUFxQixLQUFyQixFQUE0QixrQkFBNUIsRUFBZ0QxQixJQUFoRCxFQUFzRGlCLFlBQXREO0FBRUEsaUJBQU9BLFlBQVA7QUFDSCxTQU5PLENBQVI7QUFPSDtBQUNKO0FBQ0osR0FyRGdCLEVBcURkLEVBckRjLENBQWpCOztBQXVEQSxNQUFJLENBQUNYLGdCQUFMLEVBQXVCO0FBQ25CLGdCQUE2QlIsSUFBSSxDQUFDRCxLQUFELENBQWpDO0FBQUE7QUFBQSxRQUFPaUMsU0FBUDtBQUFBLFFBQWtCQyxPQUFsQjs7QUFFQXpCLElBQUFBLGdCQUFnQixHQUFHd0IsU0FBbkI7QUFDQXpCLElBQUFBLFFBQVEsQ0FBQ0MsZ0JBQUQsQ0FBUjtBQUVBQyxJQUFBQSxPQUFPLENBQUN3QixPQUFELENBQVA7QUFDSDs7QUFFRCxTQUFPLENBQUN6QixnQkFBRCxFQUFtQkssUUFBbkIsQ0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgZGlzcGF0Y2hNaWRkbGV3YXJlLCBMb2dnZXJTZXJ2aWNlIH0gZnJvbSBcIi4vSW5pdFwiO1xuaW1wb3J0IHsgTWVzc2FnZUJhc2UsIE51bGxhYmxlIH0gZnJvbSBcIi4vRWxtVXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRWxtaXNoPFRQcm9wcywgVE1vZGVsLCBUTXNnIGV4dGVuZHMgTWVzc2FnZUJhc2U+IChwcm9wczogVFByb3BzLCBpbml0OiAocHJvcHM6IFRQcm9wcykgPT4gW1RNb2RlbCwgQ21kPFRNc2c+XSwgdXBkYXRlOiAobW9kZWw6IFRNb2RlbCwgbXNnOiBUTXNnLCBwcm9wczogVFByb3BzKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1zZz4sIG5hbWU6IHN0cmluZyk6IFtUTW9kZWwsIERpc3BhdGNoPFRNc2c+XSB7XG4gICAgbGV0IHJlZW50ZXJlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGJ1ZmZlcjogVE1zZyBbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50TW9kZWw6IFBhcnRpYWw8VE1vZGVsPiA9IHt9O1xuXG4gICAgY29uc3QgW21vZGVsLCBzZXRNb2RlbF0gPSB1c2VTdGF0ZTxOdWxsYWJsZTxUTW9kZWw+PihudWxsKTtcbiAgICBsZXQgaW5pdGlhbGl6ZWRNb2RlbCA9IG1vZGVsO1xuXG4gICAgY29uc3QgZXhlY0NtZCA9IHVzZUNhbGxiYWNrKChjbWQ6IENtZDxUTXNnPik6IHZvaWQgPT4ge1xuICAgICAgICBjbWQuZm9yRWFjaChjYWxsID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbChkaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmVycm9yKGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VDYWxsYmFjaygobXNnOiBUTXNnKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghaW5pdGlhbGl6ZWRNb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kZWxIYXNDaGFuZ2VkID0gKHVwZGF0ZWRNb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiA9PiB1cGRhdGVkTW9kZWwgIT09IGluaXRpYWxpemVkTW9kZWwgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModXBkYXRlZE1vZGVsKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChkaXNwYXRjaE1pZGRsZXdhcmUpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoTWlkZGxld2FyZShtc2cpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlZW50ZXJlZCkge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gobXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZW50ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBuZXh0TXNnOiBUTXNnIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uaW5mbyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBuZXh0TXNnLm5hbWUpO1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmRlYnVnKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIG5hbWUsIG5leHRNc2cpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW25ld01vZGVsLCBjbWRdID0gdXBkYXRlKHsgLi4uaW5pdGlhbGl6ZWRNb2RlbCwgLi4uY3VycmVudE1vZGVsIH0sIG5leHRNc2csIHByb3BzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWxIYXNDaGFuZ2VkKG5ld01vZGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vZGVsID0geyAuLi5jdXJyZW50TW9kZWwsIC4uLm5ld01vZGVsIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNDbWQoY21kKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmVycm9yKGV4KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXh0TXNnID0gYnVmZmVyLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWVudGVyZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgc2V0TW9kZWwocHJldk1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZE1vZGVsID0geyAuLi5wcmV2TW9kZWwgYXMgVE1vZGVsLCAuLi5jdXJyZW50TW9kZWwgfTtcblxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJTZXJ2aWNlPy5kZWJ1ZyhcIkVsbVwiLCBcInVwZGF0ZSBtb2RlbCBmb3JcIiwgbmFtZSwgdXBkYXRlZE1vZGVsKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZE1vZGVsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuXG4gICAgaWYgKCFpbml0aWFsaXplZE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IFtpbml0TW9kZWwsIGluaXRDbWRdID0gaW5pdChwcm9wcyk7XG5cbiAgICAgICAgaW5pdGlhbGl6ZWRNb2RlbCA9IGluaXRNb2RlbDtcbiAgICAgICAgc2V0TW9kZWwoaW5pdGlhbGl6ZWRNb2RlbCk7XG5cbiAgICAgICAgZXhlY0NtZChpbml0Q21kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2luaXRpYWxpemVkTW9kZWwsIGRpc3BhdGNoXTtcbn0iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Cmd, Dispatch } from "./Cmd";
|
|
2
|
+
import { MessageBase, UpdateMap } from "./ElmUtilities";
|
|
3
|
+
export declare function useElmishMap<TProps, TModel, TMsg extends MessageBase>(props: TProps, init: (props: TProps) => [TModel, Cmd<TMsg>], updateMap: UpdateMap<TProps, TModel, TMsg>, name: string): [TModel, Dispatch<TMsg>];
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useElmishMap = useElmishMap;
|
|
7
|
+
|
|
8
|
+
var _Init = require("./Init");
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
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; }
|
|
13
|
+
|
|
14
|
+
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; }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
18
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
|
+
|
|
20
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
|
+
|
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
26
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
27
|
+
|
|
28
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
29
|
+
|
|
30
|
+
function useElmishMap(props, init, updateMap, name) {
|
|
31
|
+
var reentered = false;
|
|
32
|
+
var buffer = [];
|
|
33
|
+
var currentModel = {};
|
|
34
|
+
|
|
35
|
+
var _useState = (0, _react.useState)(null),
|
|
36
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37
|
+
model = _useState2[0],
|
|
38
|
+
setModel = _useState2[1];
|
|
39
|
+
|
|
40
|
+
var initializedModel = model;
|
|
41
|
+
var execCmd = (0, _react.useCallback)(function (cmd) {
|
|
42
|
+
cmd.forEach(function (call) {
|
|
43
|
+
try {
|
|
44
|
+
call(dispatch);
|
|
45
|
+
} catch (ex) {
|
|
46
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.error(ex);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}, []);
|
|
50
|
+
var dispatch = (0, _react.useCallback)(function (msg) {
|
|
51
|
+
if (!initializedModel) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
var modelHasChanged = function modelHasChanged(updatedModel) {
|
|
56
|
+
return updatedModel !== initializedModel && Object.getOwnPropertyNames(updatedModel).length > 0;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
if (_Init.dispatchMiddleware) {
|
|
60
|
+
(0, _Init.dispatchMiddleware)(msg);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (reentered) {
|
|
64
|
+
buffer.push(msg);
|
|
65
|
+
} else {
|
|
66
|
+
reentered = true;
|
|
67
|
+
var nextMsg = msg;
|
|
68
|
+
var modified = false;
|
|
69
|
+
|
|
70
|
+
while (nextMsg) {
|
|
71
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.info("Elm", "message from", name, nextMsg.name);
|
|
72
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.debug("Elm", "message from", name, nextMsg);
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
76
|
+
// @ts-expect-error -- We know that nextMsg fits
|
|
77
|
+
var _updateMap = updateMap[nextMsg.name](nextMsg, _objectSpread(_objectSpread({}, initializedModel), currentModel), props),
|
|
78
|
+
_updateMap2 = _slicedToArray(_updateMap, 2),
|
|
79
|
+
newModel = _updateMap2[0],
|
|
80
|
+
cmd = _updateMap2[1];
|
|
81
|
+
|
|
82
|
+
if (modelHasChanged(newModel)) {
|
|
83
|
+
currentModel = _objectSpread(_objectSpread({}, currentModel), newModel);
|
|
84
|
+
modified = true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (cmd) {
|
|
88
|
+
execCmd(cmd);
|
|
89
|
+
}
|
|
90
|
+
} catch (ex) {
|
|
91
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.error(ex);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
nextMsg = buffer.shift();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
reentered = false;
|
|
98
|
+
|
|
99
|
+
if (modified) {
|
|
100
|
+
setModel(function (prevModel) {
|
|
101
|
+
var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
|
|
102
|
+
|
|
103
|
+
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.debug("Elm", "update model for", name, updatedModel);
|
|
104
|
+
return updatedModel;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}, []);
|
|
109
|
+
|
|
110
|
+
if (!initializedModel) {
|
|
111
|
+
var _init = init(props),
|
|
112
|
+
_init2 = _slicedToArray(_init, 2),
|
|
113
|
+
initModel = _init2[0],
|
|
114
|
+
initCmd = _init2[1];
|
|
115
|
+
|
|
116
|
+
initializedModel = initModel;
|
|
117
|
+
setModel(initializedModel);
|
|
118
|
+
execCmd(initCmd);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return [initializedModel, dispatch];
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VFbG1pc2hNYXAudHMiXSwibmFtZXMiOlsidXNlRWxtaXNoTWFwIiwicHJvcHMiLCJpbml0IiwidXBkYXRlTWFwIiwibmFtZSIsInJlZW50ZXJlZCIsImJ1ZmZlciIsImN1cnJlbnRNb2RlbCIsIm1vZGVsIiwic2V0TW9kZWwiLCJpbml0aWFsaXplZE1vZGVsIiwiZXhlY0NtZCIsImNtZCIsImZvckVhY2giLCJjYWxsIiwiZGlzcGF0Y2giLCJleCIsIkxvZ2dlclNlcnZpY2UiLCJlcnJvciIsIm1zZyIsIm1vZGVsSGFzQ2hhbmdlZCIsInVwZGF0ZWRNb2RlbCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJsZW5ndGgiLCJkaXNwYXRjaE1pZGRsZXdhcmUiLCJwdXNoIiwibmV4dE1zZyIsIm1vZGlmaWVkIiwiaW5mbyIsImRlYnVnIiwibmV3TW9kZWwiLCJzaGlmdCIsInByZXZNb2RlbCIsImluaXRNb2RlbCIsImluaXRDbWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxZQUFULENBQWlFQyxLQUFqRSxFQUFnRkMsSUFBaEYsRUFBOEhDLFNBQTlILEVBQTBLQyxJQUExSyxFQUFrTjtBQUNyTixNQUFJQyxTQUFTLEdBQUcsS0FBaEI7QUFDQSxNQUFNQyxNQUFlLEdBQUcsRUFBeEI7QUFDQSxNQUFJQyxZQUE2QixHQUFHLEVBQXBDOztBQUVBLGtCQUEwQixxQkFBMkIsSUFBM0IsQ0FBMUI7QUFBQTtBQUFBLE1BQU9DLEtBQVA7QUFBQSxNQUFjQyxRQUFkOztBQUNBLE1BQUlDLGdCQUFnQixHQUFHRixLQUF2QjtBQUVBLE1BQU1HLE9BQU8sR0FBRyx3QkFBWSxVQUFDQyxHQUFELEVBQTBCO0FBQ2xEQSxJQUFBQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxVQUFBQyxJQUFJLEVBQUk7QUFDaEIsVUFBSTtBQUNBQSxRQUFBQSxJQUFJLENBQUNDLFFBQUQsQ0FBSjtBQUNI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XG5pbXBvcnQgeyBkaXNwYXRjaE1pZGRsZXdhcmUsIExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBNZXNzYWdlQmFzZSwgTnVsbGFibGUsIFVwZGF0ZU1hcCB9IGZyb20gXCIuL0VsbVV0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VFbG1pc2hNYXA8VFByb3BzLCBUTW9kZWwsIFRNc2cgZXh0ZW5kcyBNZXNzYWdlQmFzZT4gKHByb3BzOiBUUHJvcHMsIGluaXQ6IChwcm9wczogVFByb3BzKSA9PiBbVE1vZGVsLCBDbWQ8VE1zZz5dLCB1cGRhdGVNYXA6IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1zZz4sIG5hbWU6IHN0cmluZyk6IFtUTW9kZWwsIERpc3BhdGNoPFRNc2c+XSB7XG4gICAgbGV0IHJlZW50ZXJlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGJ1ZmZlcjogVE1zZyBbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50TW9kZWw6IFBhcnRpYWw8VE1vZGVsPiA9IHt9O1xuXG4gICAgY29uc3QgW21vZGVsLCBzZXRNb2RlbF0gPSB1c2VTdGF0ZTxOdWxsYWJsZTxUTW9kZWw+PihudWxsKTtcbiAgICBsZXQgaW5pdGlhbGl6ZWRNb2RlbCA9IG1vZGVsO1xuXG4gICAgY29uc3QgZXhlY0NtZCA9IHVzZUNhbGxiYWNrKChjbWQ6IENtZDxUTXNnPik6IHZvaWQgPT4ge1xuICAgICAgICBjbWQuZm9yRWFjaChjYWxsID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbChkaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmVycm9yKGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VDYWxsYmFjaygobXNnOiBUTXNnKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghaW5pdGlhbGl6ZWRNb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kZWxIYXNDaGFuZ2VkID0gKHVwZGF0ZWRNb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiA9PiB1cGRhdGVkTW9kZWwgIT09IGluaXRpYWxpemVkTW9kZWwgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModXBkYXRlZE1vZGVsKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChkaXNwYXRjaE1pZGRsZXdhcmUpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoTWlkZGxld2FyZShtc2cpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlZW50ZXJlZCkge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gobXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZW50ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBuZXh0TXNnOiBUTXNnIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uaW5mbyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBuZXh0TXNnLm5hbWUpO1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmRlYnVnKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIG5hbWUsIG5leHRNc2cpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0tIFdlIGtub3cgdGhhdCBuZXh0TXNnIGZpdHNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW25ld01vZGVsLCBjbWRdID0gdXBkYXRlTWFwW25leHRNc2cubmFtZSBhcyBUTXNnW1wibmFtZVwiXV0obmV4dE1zZywgeyAuLi5pbml0aWFsaXplZE1vZGVsLCAuLi5jdXJyZW50TW9kZWwgfSwgcHJvcHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlbEhhc0NoYW5nZWQobmV3TW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9kZWwgPSB7IC4uLmN1cnJlbnRNb2RlbCwgLi4ubmV3TW9kZWwgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhlY0NtZChjbWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uZXJyb3IoZXgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5leHRNc2cgPSBidWZmZXIuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAobW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBzZXRNb2RlbChwcmV2TW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkTW9kZWwgPSB7IC4uLnByZXZNb2RlbCBhcyBUTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9O1xuXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmRlYnVnKFwiRWxtXCIsIFwidXBkYXRlIG1vZGVsIGZvclwiLCBuYW1lLCB1cGRhdGVkTW9kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkTW9kZWw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBpZiAoIWluaXRpYWxpemVkTW9kZWwpIHtcbiAgICAgICAgY29uc3QgW2luaXRNb2RlbCwgaW5pdENtZF0gPSBpbml0KHByb3BzKTtcblxuICAgICAgICBpbml0aWFsaXplZE1vZGVsID0gaW5pdE1vZGVsO1xuICAgICAgICBzZXRNb2RlbChpbml0aWFsaXplZE1vZGVsKTtcblxuICAgICAgICBleGVjQ21kKGluaXRDbWQpO1xuICAgIH1cblxuICAgIHJldHVybiBbaW5pdGlhbGl6ZWRNb2RlbCwgZGlzcGF0Y2hdO1xufSJdfQ==
|
package/package.json
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-elmish",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Elmish for React using Typescript",
|
|
5
5
|
"author": "atheck",
|
|
6
6
|
"license": "MIT",
|
|
7
|
-
"dependencies": {},
|
|
8
7
|
"peerDependencies": {
|
|
9
8
|
"react": ">=16.8.0"
|
|
10
9
|
},
|
|
11
10
|
"devDependencies": {
|
|
12
|
-
"@babel/cli": "7.
|
|
13
|
-
"@babel/core": "7.
|
|
14
|
-
"@babel/plugin-proposal-class-properties": "7.16.
|
|
15
|
-
"@babel/preset-env": "7.16.
|
|
16
|
-
"@babel/preset-react": "7.16.
|
|
17
|
-
"@babel/preset-typescript": "7.16.
|
|
18
|
-
"@
|
|
19
|
-
"@types/
|
|
20
|
-
"
|
|
21
|
-
"eslint
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
11
|
+
"@babel/cli": "7.17.6",
|
|
12
|
+
"@babel/core": "7.17.7",
|
|
13
|
+
"@babel/plugin-proposal-class-properties": "7.16.7",
|
|
14
|
+
"@babel/preset-env": "7.16.11",
|
|
15
|
+
"@babel/preset-react": "7.16.7",
|
|
16
|
+
"@babel/preset-typescript": "7.16.7",
|
|
17
|
+
"@testing-library/react": "12.1.4",
|
|
18
|
+
"@types/jest": "27.4.1",
|
|
19
|
+
"@types/react": "17.0.40",
|
|
20
|
+
"eslint": "8.11.0",
|
|
21
|
+
"eslint-config-heck": "1.4.0",
|
|
22
|
+
"jest": "27.5.1",
|
|
23
|
+
"ts-jest": "27.1.3",
|
|
24
|
+
"typescript": "4.6.2"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "npm run build:types && npm run build:js",
|
|
28
28
|
"build:types": "tsc --emitDeclarationOnly --project ./src",
|
|
29
29
|
"build:js": "babel src --out-dir dist --extensions \".ts,.tsx\" --source-maps inline",
|
|
30
|
-
"test": "jest",
|
|
31
|
-
"test:watch": "jest --watch",
|
|
30
|
+
"test": "jest --coverage",
|
|
31
|
+
"test:watch": "jest --watch --coverage",
|
|
32
32
|
"lint": "npx eslint --ext .ts,.tsx ./src"
|
|
33
33
|
},
|
|
34
34
|
"homepage": "https://github.com/atheck/react-elmish",
|
package/dist/Hooks.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Cmd, Dispatch } from "./Cmd";
|
|
2
|
-
import { UpdateReturnType } from ".";
|
|
3
|
-
export declare function useElmish<TProps, TModel, TMsg extends {
|
|
4
|
-
name: string | symbol;
|
|
5
|
-
}>(props: TProps, init: (props: TProps) => [TModel, Cmd<TMsg>], update: (model: TModel, msg: TMsg, props: TProps) => UpdateReturnType<TModel, TMsg>, name: string): [TModel, Dispatch<TMsg>];
|
package/dist/Hooks.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useElmish = useElmish;
|
|
7
|
-
|
|
8
|
-
var _Init = require("./Init");
|
|
9
|
-
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
|
|
12
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
-
|
|
14
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
15
|
-
|
|
16
|
-
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; }
|
|
17
|
-
|
|
18
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
|
-
|
|
20
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
|
-
|
|
22
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
-
|
|
24
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
-
|
|
26
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
27
|
-
|
|
28
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
29
|
-
|
|
30
|
-
function useElmish(props, init, update, name) {
|
|
31
|
-
var reentered = false;
|
|
32
|
-
var buffer = [];
|
|
33
|
-
var currentModel = {};
|
|
34
|
-
var state = (0, _react.useState)(null);
|
|
35
|
-
var model = state[0];
|
|
36
|
-
var setModel = state[1];
|
|
37
|
-
|
|
38
|
-
var execCmd = function execCmd(cmd) {
|
|
39
|
-
cmd.forEach(function (call) {
|
|
40
|
-
try {
|
|
41
|
-
call(dispatch);
|
|
42
|
-
} catch (ex) {
|
|
43
|
-
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.error(ex);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
var dispatch = function dispatch(msg) {
|
|
49
|
-
if (!model) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
var modelHasChanged = function modelHasChanged(updatedModel) {
|
|
54
|
-
return updatedModel !== model && Object.getOwnPropertyNames(updatedModel).length > 0;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
if (_Init.dispatchMiddleware) {
|
|
58
|
-
(0, _Init.dispatchMiddleware)(msg);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (reentered) {
|
|
62
|
-
buffer.push(msg);
|
|
63
|
-
} else {
|
|
64
|
-
reentered = true;
|
|
65
|
-
var nextMsg = msg;
|
|
66
|
-
var modified = false;
|
|
67
|
-
|
|
68
|
-
while (nextMsg) {
|
|
69
|
-
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.info("Elm", "message from", name, nextMsg.name);
|
|
70
|
-
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.debug("Elm", "message from", name, nextMsg);
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
var _update = update(_objectSpread(_objectSpread({}, model), currentModel), nextMsg, props),
|
|
74
|
-
_update2 = _slicedToArray(_update, 2),
|
|
75
|
-
newModel = _update2[0],
|
|
76
|
-
cmd = _update2[1];
|
|
77
|
-
|
|
78
|
-
if (modelHasChanged(newModel)) {
|
|
79
|
-
currentModel = _objectSpread(_objectSpread({}, currentModel), newModel);
|
|
80
|
-
modified = true;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (cmd) {
|
|
84
|
-
execCmd(cmd);
|
|
85
|
-
}
|
|
86
|
-
} catch (ex) {
|
|
87
|
-
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.error(ex);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
nextMsg = buffer.shift();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
reentered = false;
|
|
94
|
-
|
|
95
|
-
if (modified) {
|
|
96
|
-
setModel(function (prevModel) {
|
|
97
|
-
var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
|
|
98
|
-
|
|
99
|
-
_Init.LoggerService === null || _Init.LoggerService === void 0 ? void 0 : _Init.LoggerService.debug("Elm", "update model for", name, updatedModel);
|
|
100
|
-
return updatedModel;
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
if (!model) {
|
|
107
|
-
var _init = init(props),
|
|
108
|
-
_init2 = _slicedToArray(_init, 2),
|
|
109
|
-
initModel = _init2[0],
|
|
110
|
-
initCmd = _init2[1];
|
|
111
|
-
|
|
112
|
-
model = initModel;
|
|
113
|
-
setModel(model);
|
|
114
|
-
execCmd(initCmd);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return [model, dispatch];
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Ib29rcy50cyJdLCJuYW1lcyI6WyJ1c2VFbG1pc2giLCJwcm9wcyIsImluaXQiLCJ1cGRhdGUiLCJuYW1lIiwicmVlbnRlcmVkIiwiYnVmZmVyIiwiY3VycmVudE1vZGVsIiwic3RhdGUiLCJtb2RlbCIsInNldE1vZGVsIiwiZXhlY0NtZCIsImNtZCIsImZvckVhY2giLCJjYWxsIiwiZGlzcGF0Y2giLCJleCIsIkxvZ2dlclNlcnZpY2UiLCJlcnJvciIsIm1zZyIsIm1vZGVsSGFzQ2hhbmdlZCIsInVwZGF0ZWRNb2RlbCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJsZW5ndGgiLCJkaXNwYXRjaE1pZGRsZXdhcmUiLCJwdXNoIiwibmV4dE1zZyIsIm1vZGlmaWVkIiwiaW5mbyIsImRlYnVnIiwibmV3TW9kZWwiLCJzaGlmdCIsInByZXZNb2RlbCIsImluaXRNb2RlbCIsImluaXRDbWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxTQUFULENBQTRFQyxLQUE1RSxFQUEyRkMsSUFBM0YsRUFBeUlDLE1BQXpJLEVBQThOQyxJQUE5TixFQUFzUTtBQUN6USxNQUFJQyxTQUFTLEdBQUcsS0FBaEI7QUFDQSxNQUFNQyxNQUFlLEdBQUcsRUFBeEI7QUFDQSxNQUFJQyxZQUE2QixHQUFHLEVBQXBDO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUEyQixJQUEzQixDQUFkO0FBQ0EsTUFBSUMsS0FBSyxHQUFHRCxLQUFLLENBQUMsQ0FBRCxDQUFqQjtBQUNBLE1BQU1FLFFBQVEsR0FBR0YsS0FBSyxDQUFDLENBQUQsQ0FBdEI7O0FBRUEsTUFBTUcsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsR0FBRCxFQUEwQjtBQUN0Q0EsSUFBQUEsR0FBRyxDQUFDQyxPQUFKLENBQVksVUFBQUMsSUFBSSxFQUFJO0FBQ2hCLFVBQUk7QUFDQUEsUUFBQUEsSUFBSSxDQUFDQyxRQUFELENBQUo7QUFDSCxPQUZELENBRUUsT0FBT0MsRUFBUCxFQUFvQjtBQUNsQkMsc0dBQWVDLEtBQWYsQ0FBcUJGLEVBQXJCO0FBQ0g7QUFDSixLQU5EO0FBT0gsR0FSRDs7QUFVQSxNQUFNRCxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDSSxHQUFELEVBQXFCO0FBQ2xDLFFBQUksQ0FBQ1YsS0FBTCxFQUFZO0FBQ1I7QUFDSDs7QUFFRCxRQUFNVyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLFlBQUQ7QUFBQSxhQUE0Q0EsWUFBWSxLQUFLWixLQUFqQixJQUEwQmEsTUFBTSxDQUFDQyxtQkFBUCxDQUEyQkYsWUFBM0IsRUFBeUNHLE1BQXpDLEdBQWtELENBQXhIO0FBQUEsS0FBeEI7O0FBRUEsUUFBSUMsd0JBQUosRUFBd0I7QUFDcEIsb0NBQW1CTixHQUFuQjtBQUNIOztBQUVELFFBQUlkLFNBQUosRUFBZTtBQUNYQyxNQUFBQSxNQUFNLENBQUNvQixJQUFQLENBQVlQLEdBQVo7QUFDSCxLQUZELE1BRU87QUFDSGQsTUFBQUEsU0FBUyxHQUFHLElBQVo7QUFFQSxVQUFJc0IsT0FBeUIsR0FBR1IsR0FBaEM7QUFDQSxVQUFJUyxRQUFRLEdBQUcsS0FBZjs7QUFFQSxhQUFPRCxPQUFQLEVBQWdCO0FBQ1pWLHNHQUFlWSxJQUFmLENBQW9CLEtBQXBCLEVBQTJCLGNBQTNCLEVBQTJDekIsSUFBM0MsRUFBaUR1QixPQUFPLENBQUN2QixJQUF6RDtBQUNBYSxzR0FBZWEsS0FBZixDQUFxQixLQUFyQixFQUE0QixjQUE1QixFQUE0QzFCLElBQTVDLEVBQWtEdUIsT0FBbEQ7O0FBRUEsWUFBSTtBQUNBLHdCQUF3QnhCLE1BQU0saUNBQU1NLEtBQU4sR0FBZ0JGLFlBQWhCLEdBQWdDb0IsT0FBaEMsRUFBeUMxQixLQUF6QyxDQUE5QjtBQUFBO0FBQUEsY0FBTzhCLFFBQVA7QUFBQSxjQUFpQm5CLEdBQWpCOztBQUVBLGNBQUlRLGVBQWUsQ0FBQ1csUUFBRCxDQUFuQixFQUErQjtBQUMzQnhCLFlBQUFBLFlBQVksbUNBQVFBLFlBQVIsR0FBeUJ3QixRQUF6QixDQUFaO0FBRUFILFlBQUFBLFFBQVEsR0FBRyxJQUFYO0FBQ0g7O0FBRUQsY0FBSWhCLEdBQUosRUFBUztBQUNMRCxZQUFBQSxPQUFPLENBQUNDLEdBQUQsQ0FBUDtBQUNIO0FBQ0osU0FaRCxDQVlFLE9BQU9JLEVBQVAsRUFBb0I7QUFDbEJDLHdHQUFlQyxLQUFmLENBQXFCRixFQUFyQjtBQUNIOztBQUVEVyxRQUFBQSxPQUFPLEdBQUdyQixNQUFNLENBQUMwQixLQUFQLEVBQVY7QUFDSDs7QUFDRDNCLE1BQUFBLFNBQVMsR0FBRyxLQUFaOztBQUVBLFVBQUl1QixRQUFKLEVBQWM7QUFDVmxCLFFBQUFBLFFBQVEsQ0FBQyxVQUFBdUIsU0FBUyxFQUFJO0FBQ2xCLGNBQU1aLFlBQVksbUNBQVFZLFNBQVIsR0FBZ0MxQixZQUFoQyxDQUFsQjs7QUFFQVUsd0dBQWVhLEtBQWYsQ0FBcUIsS0FBckIsRUFBNEIsa0JBQTVCLEVBQWdEMUIsSUFBaEQsRUFBc0RpQixZQUF0RDtBQUVBLGlCQUFPQSxZQUFQO0FBQ0gsU0FOTyxDQUFSO0FBT0g7QUFDSjtBQUNKLEdBckREOztBQXVEQSxNQUFJLENBQUNaLEtBQUwsRUFBWTtBQUNSLGdCQUE2QlAsSUFBSSxDQUFDRCxLQUFELENBQWpDO0FBQUE7QUFBQSxRQUFPaUMsU0FBUDtBQUFBLFFBQWtCQyxPQUFsQjs7QUFFQTFCLElBQUFBLEtBQUssR0FBR3lCLFNBQVI7QUFDQXhCLElBQUFBLFFBQVEsQ0FBQ0QsS0FBRCxDQUFSO0FBRUFFLElBQUFBLE9BQU8sQ0FBQ3dCLE9BQUQsQ0FBUDtBQUNIOztBQUVELFNBQU8sQ0FBQzFCLEtBQUQsRUFBUU0sUUFBUixDQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbWQsIERpc3BhdGNoIH0gZnJvbSBcIi4vQ21kXCI7XG5pbXBvcnQgeyBkaXNwYXRjaE1pZGRsZXdhcmUsIExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VFbG1pc2g8VFByb3BzLCBUTW9kZWwsIFRNc2cgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB8IHN5bWJvbCB9PiAocHJvcHM6IFRQcm9wcywgaW5pdDogKHByb3BzOiBUUHJvcHMpID0+IFtUTW9kZWwsIENtZDxUTXNnPl0sIHVwZGF0ZTogKG1vZGVsOiBUTW9kZWwsIG1zZzogVE1zZywgcHJvcHM6IFRQcm9wcykgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNc2c+LCBuYW1lOiBzdHJpbmcpOiBbVE1vZGVsLCBEaXNwYXRjaDxUTXNnPl0ge1xuICAgIGxldCByZWVudGVyZWQgPSBmYWxzZTtcbiAgICBjb25zdCBidWZmZXI6IFRNc2cgW10gPSBbXTtcbiAgICBsZXQgY3VycmVudE1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4gPSB7fTtcblxuICAgIGNvbnN0IHN0YXRlID0gdXNlU3RhdGU8TnVsbGFibGU8VE1vZGVsPj4obnVsbCk7XG4gICAgbGV0IG1vZGVsID0gc3RhdGVbMF07XG4gICAgY29uc3Qgc2V0TW9kZWwgPSBzdGF0ZVsxXTtcblxuICAgIGNvbnN0IGV4ZWNDbWQgPSAoY21kOiBDbWQ8VE1zZz4pOiB2b2lkID0+IHtcbiAgICAgICAgY21kLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGwoZGlzcGF0Y2gpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICBMb2dnZXJTZXJ2aWNlPy5lcnJvcihleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBkaXNwYXRjaCA9IChtc2c6IFRNc2cpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFtb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kZWxIYXNDaGFuZ2VkID0gKHVwZGF0ZWRNb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiA9PiB1cGRhdGVkTW9kZWwgIT09IG1vZGVsICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHVwZGF0ZWRNb2RlbCkubGVuZ3RoID4gMDtcblxuICAgICAgICBpZiAoZGlzcGF0Y2hNaWRkbGV3YXJlKSB7XG4gICAgICAgICAgICBkaXNwYXRjaE1pZGRsZXdhcmUobXNnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZWVudGVyZWQpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWVudGVyZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBsZXQgbmV4dE1zZzogVE1zZyB8IHVuZGVmaW5lZCA9IG1zZztcbiAgICAgICAgICAgIGxldCBtb2RpZmllZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB3aGlsZSAobmV4dE1zZykge1xuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmluZm8oXCJFbG1cIiwgXCJtZXNzYWdlIGZyb21cIiwgbmFtZSwgbmV4dE1zZy5uYW1lKTtcbiAgICAgICAgICAgICAgICBMb2dnZXJTZXJ2aWNlPy5kZWJ1ZyhcIkVsbVwiLCBcIm1lc3NhZ2UgZnJvbVwiLCBuYW1lLCBuZXh0TXNnKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdNb2RlbCwgY21kXSA9IHVwZGF0ZSh7IC4uLm1vZGVsLCAuLi5jdXJyZW50TW9kZWwgfSwgbmV4dE1zZywgcHJvcHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlbEhhc0NoYW5nZWQobmV3TW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9kZWwgPSB7IC4uLmN1cnJlbnRNb2RlbCwgLi4ubmV3TW9kZWwgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhlY0NtZChjbWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyU2VydmljZT8uZXJyb3IoZXgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5leHRNc2cgPSBidWZmZXIuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAobW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBzZXRNb2RlbChwcmV2TW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkTW9kZWwgPSB7IC4uLnByZXZNb2RlbCBhcyBUTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9O1xuXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2U/LmRlYnVnKFwiRWxtXCIsIFwidXBkYXRlIG1vZGVsIGZvclwiLCBuYW1lLCB1cGRhdGVkTW9kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkTW9kZWw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgICBjb25zdCBbaW5pdE1vZGVsLCBpbml0Q21kXSA9IGluaXQocHJvcHMpO1xuXG4gICAgICAgIG1vZGVsID0gaW5pdE1vZGVsO1xuICAgICAgICBzZXRNb2RlbChtb2RlbCk7XG5cbiAgICAgICAgZXhlY0NtZChpbml0Q21kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW21vZGVsLCBkaXNwYXRjaF07XG59Il19
|