react-elmish 10.0.0-alpha.1 → 10.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -7
- package/dist/ElmComponent.js +3 -5
- package/dist/Types.d.ts +14 -6
- package/dist/Types.js +35 -1
- package/dist/createCallBase.d.ts +1 -2
- package/dist/createCallBase.js +1 -1
- package/dist/immutable/ElmComponent.d.ts +67 -0
- package/dist/immutable/ElmComponent.js +198 -0
- package/dist/immutable/Types.d.ts +28 -0
- package/dist/immutable/Types.js +6 -0
- package/dist/immutable/createCallBase.d.ts +5 -0
- package/dist/immutable/createCallBase.js +24 -0
- package/dist/immutable/createDefer.d.ts +7 -0
- package/dist/immutable/createDefer.js +23 -0
- package/dist/immutable/index.d.ts +7 -0
- package/dist/immutable/index.js +53 -0
- package/dist/immutable/useElmish.d.ts +49 -0
- package/dist/immutable/useElmish.js +219 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/mergeSubscriptions.d.ts +1 -2
- package/dist/mergeSubscriptions.js +3 -3
- package/dist/{Testing → testing}/createModelAndProps.js +1 -1
- package/dist/{Testing → testing}/createUpdateArgsFactory.js +1 -1
- package/dist/{Testing → testing}/execCmd.js +1 -1
- package/dist/testing/execCmd.spec.d.ts +1 -0
- package/dist/{Testing → testing}/execSubscription.d.ts +1 -2
- package/dist/testing/execSubscription.js +51 -0
- package/dist/{Testing → testing}/getCreateUpdateArgs.js +1 -1
- package/dist/testing/getUpdateFn.js +111 -0
- package/dist/{Testing → testing}/index.js +1 -1
- package/dist/{Testing → testing}/initAndExecCmd.js +1 -1
- package/dist/{Testing → testing}/renderWithModel.js +1 -1
- package/dist/testing/renderWithModel.spec.d.ts +1 -0
- package/dist/useElmish.d.ts +6 -15
- package/dist/useElmish.js +5 -15
- package/package.json +6 -2
- package/dist/Testing/execSubscription.js +0 -51
- package/dist/Testing/getUpdateFn.js +0 -114
- /package/dist/{Testing/execCmd.spec.d.ts → immutable/ElmComponent.spec.d.ts} +0 -0
- /package/dist/{Testing/renderWithModel.spec.d.ts → immutable/useElmish.spec.d.ts} +0 -0
- /package/dist/{Testing → testing}/createModelAndProps.d.ts +0 -0
- /package/dist/{Testing → testing}/createUpdateArgsFactory.d.ts +0 -0
- /package/dist/{Testing → testing}/execCmd.d.ts +0 -0
- /package/dist/{Testing → testing}/getCreateUpdateArgs.d.ts +0 -0
- /package/dist/{Testing → testing}/getUpdateFn.d.ts +0 -0
- /package/dist/{Testing → testing}/index.d.ts +0 -0
- /package/dist/{Testing → testing}/initAndExecCmd.d.ts +0 -0
- /package/dist/{Testing → testing}/renderWithModel.d.ts +0 -0
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ This library brings the elmish pattern to react.
|
|
|
17
17
|
- [Subscriptions](#subscriptions)
|
|
18
18
|
- [Working with external sources of events](#working-with-external-sources-of-events)
|
|
19
19
|
- [Cleanup subscriptions](#cleanup-subscriptions)
|
|
20
|
+
- [Immutability](#immutability)
|
|
20
21
|
- [Setup](#setup)
|
|
21
22
|
- [Error handling](#error-handling)
|
|
22
23
|
- [React life cycle management](#react-life-cycle-management)
|
|
@@ -455,6 +456,52 @@ function subscription (model: Model): SubscriptionResult<Message> {
|
|
|
455
456
|
|
|
456
457
|
The destructor is called when the component is removed from the DOM.
|
|
457
458
|
|
|
459
|
+
## Immutability
|
|
460
|
+
|
|
461
|
+
If you want to use immutable data structures, you can use the imports from "react-elmish/immutable". This version of the `useElmish` hook returns an immutable model.
|
|
462
|
+
|
|
463
|
+
```tsx
|
|
464
|
+
import { useElmish } from "react-elmish/immutable";
|
|
465
|
+
|
|
466
|
+
function App(props: Props): JSX.Element {
|
|
467
|
+
const [model, dispatch] = useElmish({ props, init, update, name: "App" });
|
|
468
|
+
|
|
469
|
+
model.value = 42; // This will throw an error
|
|
470
|
+
|
|
471
|
+
return (
|
|
472
|
+
// ...
|
|
473
|
+
);
|
|
474
|
+
}
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
To update your model in the update map or update function, you return a draft function as first value:
|
|
478
|
+
|
|
479
|
+
```ts
|
|
480
|
+
import { type UpdateMap } from "react-elmish/immutable";
|
|
481
|
+
|
|
482
|
+
const updateMap: UpdateMap<Props, Model, Message> = {
|
|
483
|
+
increment (_msg, model) {
|
|
484
|
+
model.value += 1; // This will throw an error
|
|
485
|
+
|
|
486
|
+
return [(draft) => draft.value += 1];
|
|
487
|
+
},
|
|
488
|
+
|
|
489
|
+
decrement () {
|
|
490
|
+
return [(draft) => draft.value -= 1];
|
|
491
|
+
},
|
|
492
|
+
|
|
493
|
+
commandOnly() {
|
|
494
|
+
// The first value can be null or undefined
|
|
495
|
+
return [null, cmd.ofMsg(Msg.increment())];
|
|
496
|
+
},
|
|
497
|
+
|
|
498
|
+
doNothing() {
|
|
499
|
+
// Return an empty tuple to do nothing
|
|
500
|
+
return [];
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
```
|
|
504
|
+
|
|
458
505
|
## Setup
|
|
459
506
|
|
|
460
507
|
**react-elmish** works without a setup. But if you want to use logging or some middleware, you can setup **react-elmish** at the start of your program.
|
|
@@ -911,7 +958,7 @@ const subscription = mergeSubscriptions(LoadSettings.subscription, localSubscrip
|
|
|
911
958
|
|
|
912
959
|
## Testing
|
|
913
960
|
|
|
914
|
-
To test your **update** handler you can use some helper functions in `react-elmish/
|
|
961
|
+
To test your **update** handler you can use some helper functions in `react-elmish/testing`:
|
|
915
962
|
|
|
916
963
|
| Function | Description |
|
|
917
964
|
| --- | --- |
|
|
@@ -925,7 +972,7 @@ To test your **update** handler you can use some helper functions in `react-elmi
|
|
|
925
972
|
### Testing the init function
|
|
926
973
|
|
|
927
974
|
```ts
|
|
928
|
-
import { initAndExecCmd } from "react-elmish/
|
|
975
|
+
import { initAndExecCmd } from "react-elmish/testing";
|
|
929
976
|
import { init, Msg } from "./MyComponent";
|
|
930
977
|
|
|
931
978
|
it("initializes the model correctly", async () => {
|
|
@@ -946,7 +993,7 @@ it("initializes the model correctly", async () => {
|
|
|
946
993
|
**Note**: When using an `UpdateMap`, you can get an `update` function by calling `getUpdateFn`:
|
|
947
994
|
|
|
948
995
|
```ts
|
|
949
|
-
import { getUpdateFn } from "react-elmish/
|
|
996
|
+
import { getUpdateFn } from "react-elmish/testing";
|
|
950
997
|
import { updateMap } from "./MyComponent";
|
|
951
998
|
|
|
952
999
|
const updateFn = getUpdateFn(updateMap);
|
|
@@ -958,7 +1005,7 @@ const [model, cmd] = updateFn(msg, model, props);
|
|
|
958
1005
|
A simple test:
|
|
959
1006
|
|
|
960
1007
|
```ts
|
|
961
|
-
import { getCreateUpdateArgs, createUpdateArgsFactory, execCmd } from "react-elmish/
|
|
1008
|
+
import { getCreateUpdateArgs, createUpdateArgsFactory, execCmd } from "react-elmish/testing";
|
|
962
1009
|
import { init, Msg } from "./MyComponent";
|
|
963
1010
|
|
|
964
1011
|
const createUpdateArgs = getCreateUpdateArgs(init, () => ({ /* initial props */ }));
|
|
@@ -991,7 +1038,7 @@ It also resolves for `attempt` functions if the called functions succeed. And it
|
|
|
991
1038
|
There is an alternative function `getUpdateAndExecCmdFn` to get the `update` function for an update map, which immediately invokes the command and returns the messages.
|
|
992
1039
|
|
|
993
1040
|
```ts
|
|
994
|
-
import { createUpdateArgs, getUpdateAndExecCmdFn } from "react-elmish/
|
|
1041
|
+
import { createUpdateArgs, getUpdateAndExecCmdFn } from "react-elmish/testing";
|
|
995
1042
|
|
|
996
1043
|
const updateAndExecCmdFn = getUpdateAndExecCmdFn(updateMap);
|
|
997
1044
|
|
|
@@ -1018,7 +1065,7 @@ it("returns the correct cmd", async () => {
|
|
|
1018
1065
|
It is almost the same as testing the `update` function. You can use the `getCreateModelAndProps` function to create a factory for the model and the props. Then use `execSubscription` to execute the subscriptions:
|
|
1019
1066
|
|
|
1020
1067
|
```ts
|
|
1021
|
-
import { getCreateModelAndProps, execSubscription } from "react-elmish/
|
|
1068
|
+
import { getCreateModelAndProps, execSubscription } from "react-elmish/testing";
|
|
1022
1069
|
import { init, Msg, subscription } from "./MyComponent";
|
|
1023
1070
|
|
|
1024
1071
|
const createModelAndProps = getCreateModelAndProps(init, () => ({ /* initial props */ }));
|
|
@@ -1045,7 +1092,7 @@ it("dispatches the eventTriggered message", async () => {
|
|
|
1045
1092
|
To test UI components with a fake model you can use `renderWithModel` from the Testing namespace. The first parameter is a function to render your component (e.g. with **@testing-library/react**). The second parameter is the fake model. The third parameter is an optional options object, where you can also pass a fake `dispatch` function.
|
|
1046
1093
|
|
|
1047
1094
|
```tsx
|
|
1048
|
-
import { renderWithModel } from "react-elmish/
|
|
1095
|
+
import { renderWithModel } from "react-elmish/testing";
|
|
1049
1096
|
import { fireEvent, render, screen } from "@testing-library/react";
|
|
1050
1097
|
|
|
1051
1098
|
it("renders the correct value", () => {
|
package/dist/ElmComponent.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ElmComponent = void 0;
|
|
7
|
-
var _immer = require("immer");
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
8
|
var _Common = require("./Common");
|
|
10
9
|
var _Init = require("./Init");
|
|
@@ -84,15 +83,14 @@ var ElmComponent = exports.ElmComponent = /*#__PURE__*/function (_React$Componen
|
|
|
84
83
|
do {
|
|
85
84
|
var currentMessage = nextMsg;
|
|
86
85
|
(0, _Common.logMessage)(_this.componentName, currentMessage);
|
|
87
|
-
var immutableModel = (0, _immer.castImmutable)((0, _immer.freeze)(_this.currentModel, true));
|
|
88
86
|
var _createDefer = (0, _createDefer3.createDefer)(),
|
|
89
87
|
_createDefer2 = _slicedToArray(_createDefer, 2),
|
|
90
88
|
defer = _createDefer2[0],
|
|
91
89
|
getDeferred = _createDefer2[1];
|
|
92
|
-
var callBase = (0, _createCallBase.createCallBase)(currentMessage,
|
|
90
|
+
var callBase = (0, _createCallBase.createCallBase)(currentMessage, _this.currentModel, _this.props, {
|
|
93
91
|
defer: defer
|
|
94
92
|
});
|
|
95
|
-
var _this$update = _this.update(
|
|
93
|
+
var _this$update = _this.update(_this.currentModel, currentMessage, _this.props, {
|
|
96
94
|
defer: defer,
|
|
97
95
|
callBase: callBase
|
|
98
96
|
}),
|
|
@@ -184,4 +182,4 @@ var ElmComponent = exports.ElmComponent = /*#__PURE__*/function (_React$Componen
|
|
|
184
182
|
}
|
|
185
183
|
}]);
|
|
186
184
|
}(_react["default"].Component);
|
|
187
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW1tZXIiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Db21tb24iLCJfSW5pdCIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJfZmFrZU9wdGlvbnMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiYSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsInRlc3QiLCJuIiwibCIsImkiLCJ1IiwiZiIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydGllcyIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkVsbUNvbXBvbmVudCIsImV4cG9ydHMiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwiX1NlcnZpY2VzJGxvZ2dlcjIiLCJfdGhpcyIsIm1zZyIsInJ1bm5pbmciLCJidWZmZXIiLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJjdXJyZW50TWVzc2FnZSIsImxvZ01lc3NhZ2UiLCJjb21wb25lbnROYW1lIiwiaW1tdXRhYmxlTW9kZWwiLCJjYXN0SW1tdXRhYmxlIiwiZnJlZXplIiwiY3VycmVudE1vZGVsIiwiX2NyZWF0ZURlZmVyIiwiY3JlYXRlRGVmZXIiLCJfY3JlYXRlRGVmZXIyIiwiZGVmZXIiLCJnZXREZWZlcnJlZCIsImNhbGxCYXNlIiwiY3JlYXRlQ2FsbEJhc2UiLCJfdGhpcyR1cGRhdGUiLCJ1cGRhdGUiLCJfdGhpcyR1cGRhdGUyIiwibW9kZWwiLCJjb21tYW5kcyIsIl9nZXREZWZlcnJlZCIsIl9nZXREZWZlcnJlZDIiLCJkZWZlcnJlZE1vZGVsIiwiZGVmZXJyZWRDb21tYW5kcyIsIm1vZGVsSGFzQ2hhbmdlZCIsImV4ZWNDbWQiLCJkaXNwYXRjaCIsImNvbmNhdCIsInNoaWZ0IiwibW91bnRlZCIsIl9TZXJ2aWNlcyRsb2dnZXIiLCJTZXJ2aWNlcyIsImxvZ2dlciIsImRlYnVnIiwiZm9yY2VVcGRhdGUiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsIl9yZWYiLCJfcmVmMiIsImluaXRDb21tYW5kcyIsImNvbXBvbmVudERpZE1vdW50IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJnZXQiLCJSZWFjdCIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1Db21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FzdEltbXV0YWJsZSwgZnJlZXplIH0gZnJvbSBcImltbWVyXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBleGVjQ21kLCBsb2dNZXNzYWdlLCBtb2RlbEhhc0NoYW5nZWQgfSBmcm9tIFwiLi9Db21tb25cIjtcbmltcG9ydCB7IFNlcnZpY2VzIH0gZnJvbSBcIi4vSW5pdFwiO1xuaW1wb3J0IHR5cGUgeyBDbWQsIEluaXRGdW5jdGlvbiwgTWVzc2FnZSwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSBcIi4vVHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUNhbGxCYXNlIH0gZnJvbSBcIi4vY3JlYXRlQ2FsbEJhc2VcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmVyIH0gZnJvbSBcIi4vY3JlYXRlRGVmZXJcIjtcbmltcG9ydCB7IGdldEZha2VPcHRpb25zT25jZSB9IGZyb20gXCIuL2Zha2VPcHRpb25zXCI7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZm9yIGEgcmVhY3QgY2xhc3MgY29tcG9uZW50IHVzaW5nIHRoZSBFbG1pc2ggcGF0dGVybi5cbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIEVsbUNvbXBvbmVudFxuICogQGV4dGVuZHMge0NvbXBvbmVudDxUUHJvcHMsIFRNb2RlbD59XG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRWxtQ29tcG9uZW50PFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUUHJvcHM+IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFRQcm9wcz4ge1xuXHRwcml2YXRlIGluaXRDb21tYW5kczogTnVsbGFibGU8KENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQpW10+IHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcblx0cHJpdmF0ZSByZWFkb25seSBidWZmZXI6IFRNZXNzYWdlW10gPSBbXTtcblx0cHJpdmF0ZSBydW5uaW5nID0gZmFsc2U7XG5cdHByaXZhdGUgbW91bnRlZCA9IGZhbHNlO1xuXHRwcml2YXRlIGN1cnJlbnRNb2RlbDogVE1vZGVsO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEVsbUNvbXBvbmVudC5cblx0ICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cblx0ICogQHBhcmFtIHsoKSA9PiBUTW9kZWx9IGluaXQgVGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50LlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IFRQcm9wcywgaW5pdDogSW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sIG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKHByb3BzKTtcblxuXHRcdGNvbnN0IGZha2VPcHRpb25zID0gZ2V0RmFrZU9wdGlvbnNPbmNlPFRNb2RlbCwgVE1lc3NhZ2U+KCk7XG5cblx0XHRpZiAoZmFrZU9wdGlvbnM/LmRpc3BhdGNoKSB7XG5cdFx0XHR0aGlzLmRpc3BhdGNoID0gZmFrZU9wdGlvbnMuZGlzcGF0Y2g7XG5cdFx0fVxuXG5cdFx0Y29uc3QgW21vZGVsLCAuLi5jb21tYW5kc10gPSBmYWtlT3B0aW9ucz8ubW9kZWwgPyBbZmFrZU9wdGlvbnMubW9kZWwgYXMgVE1vZGVsXSA6IGluaXQodGhpcy5wcm9wcyk7XG5cblx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiSW5pdGlhbCBtb2RlbCBmb3JcIiwgbmFtZSwgbW9kZWwpO1xuXG5cdFx0dGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcblx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IG1vZGVsO1xuXHRcdHRoaXMuaW5pdENvbW1hbmRzID0gY29tbWFuZHM7XG5cdH1cblxuXHQvKipcblx0ICogSXMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQuXG5cdCAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG5cdFx0dGhpcy5tb3VudGVkID0gdHJ1ZTtcblxuXHRcdGlmICh0aGlzLmluaXRDb21tYW5kcykge1xuXHRcdFx0ZXhlY0NtZCh0aGlzLmRpc3BhdGNoLCAuLi50aGlzLmluaXRDb21tYW5kcyk7XG5cdFx0XHR0aGlzLmluaXRDb21tYW5kcyA9IG51bGw7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIElzIGNhbGxlZCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBjb21wb25lbnQuXG5cdCAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29tcG9uZW50V2lsbFVubW91bnQoKTogdm9pZCB7XG5cdFx0dGhpcy5tb3VudGVkID0gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY3VycmVudCBtb2RlbC5cblx0ICogQHJlYWRvbmx5XG5cdCAqIEB0eXBlIHtSZWFkb25seTxUTW9kZWw+fVxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tdW51c2VkLWNsYXNzLWNvbXBvbmVudC1tZXRob2RzIC0tIFdlIG5lZWQgaXQgaW50ZXJuYWxseS5cblx0cHVibGljIGdldCBtb2RlbCgpOiBSZWFkb25seTxUTW9kZWw+IHtcblx0XHRyZXR1cm4gdGhpcy5jdXJyZW50TW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGF0Y2hlcyBhIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc3BhdGNoID0gKG1zZzogVE1lc3NhZ2UpOiB2b2lkID0+IHtcblx0XHRpZiAodGhpcy5ydW5uaW5nKSB7XG5cdFx0XHR0aGlzLmJ1ZmZlci5wdXNoKG1zZyk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnJ1bm5pbmcgPSB0cnVlO1xuXG5cdFx0bGV0IG5leHRNc2c6IFRNZXNzYWdlIHwgdW5kZWZpbmVkID0gbXNnO1xuXHRcdGxldCBtb2RpZmllZCA9IGZhbHNlO1xuXG5cdFx0ZG8ge1xuXHRcdFx0Y29uc3QgY3VycmVudE1lc3NhZ2UgPSBuZXh0TXNnO1xuXG5cdFx0XHRsb2dNZXNzYWdlKHRoaXMuY29tcG9uZW50TmFtZSwgY3VycmVudE1lc3NhZ2UpO1xuXG5cdFx0XHRjb25zdCBpbW11dGFibGVNb2RlbCA9IGNhc3RJbW11dGFibGUoZnJlZXplKHRoaXMuY3VycmVudE1vZGVsLCB0cnVlKSk7XG5cblx0XHRcdGNvbnN0IFtkZWZlciwgZ2V0RGVmZXJyZWRdID0gY3JlYXRlRGVmZXI8VE1vZGVsLCBUTWVzc2FnZT4oKTtcblx0XHRcdGNvbnN0IGNhbGxCYXNlID0gY3JlYXRlQ2FsbEJhc2UoY3VycmVudE1lc3NhZ2UsIGltbXV0YWJsZU1vZGVsLCB0aGlzLnByb3BzLCB7IGRlZmVyIH0pO1xuXG5cdFx0XHRjb25zdCBbbW9kZWwsIC4uLmNvbW1hbmRzXSA9IHRoaXMudXBkYXRlKGltbXV0YWJsZU1vZGVsLCBjdXJyZW50TWVzc2FnZSwgdGhpcy5wcm9wcywge1xuXHRcdFx0XHRkZWZlcixcblx0XHRcdFx0Y2FsbEJhc2UsXG5cdFx0XHR9KTtcblxuXHRcdFx0Y29uc3QgW2RlZmVycmVkTW9kZWwsIGRlZmVycmVkQ29tbWFuZHNdID0gZ2V0RGVmZXJyZWQoKTtcblxuXHRcdFx0aWYgKG1vZGVsSGFzQ2hhbmdlZCh0aGlzLmN1cnJlbnRNb2RlbCwgeyAuLi5kZWZlcnJlZE1vZGVsLCAuLi5tb2RlbCB9KSkge1xuXHRcdFx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IHsgLi4udGhpcy5jdXJyZW50TW9kZWwsIC4uLmRlZmVycmVkTW9kZWwsIC4uLm1vZGVsIH07XG5cdFx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0ZXhlY0NtZCh0aGlzLmRpc3BhdGNoLCAuLi5jb21tYW5kcywgLi4uZGVmZXJyZWRDb21tYW5kcyk7XG5cblx0XHRcdG5leHRNc2cgPSB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuXHRcdH0gd2hpbGUgKG5leHRNc2cpO1xuXG5cdFx0dGhpcy5ydW5uaW5nID0gZmFsc2U7XG5cblx0XHRpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG5cdFx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiVXBkYXRlIG1vZGVsIGZvclwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIHRoaXMuY3VycmVudE1vZGVsKTtcblx0XHRcdHRoaXMuZm9yY2VVcGRhdGUoKTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgbW9kZWwgYmFzZWQgb24gYSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNb2RlbH0gbW9kZWwgVGhlIGN1cnJlbnQgbW9kZWwuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBwcm9jZXNzLlxuXHQgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgdXBkYXRlIGZ1bmN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3IG1vZGVsIChjYW4gYWxzbyBiZSBhbiBlbXB0eSBvYmplY3Qge30pIGFuZCBhbiBvcHRpb25hbCBuZXcgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQGFic3RyYWN0XG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG59XG5cbmV4cG9ydCB7IEVsbUNvbXBvbmVudCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFBbUQsU0FBQUUsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLFFBQUFDLENBQUEsc0NBQUFELE9BQUEsd0JBQUFFLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixDQUFBLGtCQUFBQSxDQUFB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
|
|
185
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Db21tb24iLCJfSW5pdCIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJfZmFrZU9wdGlvbnMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiYSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsInRlc3QiLCJuIiwibCIsImkiLCJ1IiwiZiIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydGllcyIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkVsbUNvbXBvbmVudCIsImV4cG9ydHMiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwiX1NlcnZpY2VzJGxvZ2dlcjIiLCJfdGhpcyIsIm1zZyIsInJ1bm5pbmciLCJidWZmZXIiLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJjdXJyZW50TWVzc2FnZSIsImxvZ01lc3NhZ2UiLCJjb21wb25lbnROYW1lIiwiX2NyZWF0ZURlZmVyIiwiY3JlYXRlRGVmZXIiLCJfY3JlYXRlRGVmZXIyIiwiZGVmZXIiLCJnZXREZWZlcnJlZCIsImNhbGxCYXNlIiwiY3JlYXRlQ2FsbEJhc2UiLCJjdXJyZW50TW9kZWwiLCJfdGhpcyR1cGRhdGUiLCJ1cGRhdGUiLCJfdGhpcyR1cGRhdGUyIiwibW9kZWwiLCJjb21tYW5kcyIsIl9nZXREZWZlcnJlZCIsIl9nZXREZWZlcnJlZDIiLCJkZWZlcnJlZE1vZGVsIiwiZGVmZXJyZWRDb21tYW5kcyIsIm1vZGVsSGFzQ2hhbmdlZCIsImV4ZWNDbWQiLCJkaXNwYXRjaCIsImNvbmNhdCIsInNoaWZ0IiwibW91bnRlZCIsIl9TZXJ2aWNlcyRsb2dnZXIiLCJTZXJ2aWNlcyIsImxvZ2dlciIsImRlYnVnIiwiZm9yY2VVcGRhdGUiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsIl9yZWYiLCJfcmVmMiIsImluaXRDb21tYW5kcyIsImNvbXBvbmVudERpZE1vdW50IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJnZXQiLCJSZWFjdCIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1Db21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZXhlY0NtZCwgbG9nTWVzc2FnZSwgbW9kZWxIYXNDaGFuZ2VkIH0gZnJvbSBcIi4vQ29tbW9uXCI7XG5pbXBvcnQgeyBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB0eXBlIHsgQ21kLCBJbml0RnVuY3Rpb24sIE1lc3NhZ2UsIE51bGxhYmxlLCBVcGRhdGVGdW5jdGlvbiB9IGZyb20gXCIuL1R5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVDYWxsQmFzZSB9IGZyb20gXCIuL2NyZWF0ZUNhbGxCYXNlXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWZlciB9IGZyb20gXCIuL2NyZWF0ZURlZmVyXCI7XG5pbXBvcnQgeyBnZXRGYWtlT3B0aW9uc09uY2UgfSBmcm9tIFwiLi9mYWtlT3B0aW9uc1wiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgRWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzLlxuICogQHRlbXBsYXRlIFRQcm9wcyBUaGUgdHlwZSBvZiB0aGUgcHJvcHMuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEVsbUNvbXBvbmVudDxUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVFByb3BzPiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxUUHJvcHM+IHtcblx0cHJpdmF0ZSBpbml0Q29tbWFuZHM6IE51bGxhYmxlPChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdPiB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSByZWFkb25seSBjb21wb25lbnROYW1lOiBzdHJpbmc7XG5cdHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBUTWVzc2FnZVtdID0gW107XG5cdHByaXZhdGUgcnVubmluZyA9IGZhbHNlO1xuXHRwcml2YXRlIG1vdW50ZWQgPSBmYWxzZTtcblx0cHJpdmF0ZSBjdXJyZW50TW9kZWw6IFRNb2RlbDtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBFbG1Db21wb25lbnQuXG5cdCAqIEBwYXJhbSB7VFByb3BzfSBwcm9wcyBUaGUgcHJvcHMgZm9yIHRoZSBjb21wb25lbnQuXG5cdCAqIEBwYXJhbSB7KCkgPT4gVE1vZGVsfSBpbml0IFRoZSBpbml0aWFsaXplciBmdW5jdGlvbi5cblx0ICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBUUHJvcHMsIGluaXQ6IEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LCBuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihwcm9wcyk7XG5cblx0XHRjb25zdCBmYWtlT3B0aW9ucyA9IGdldEZha2VPcHRpb25zT25jZTxUTW9kZWwsIFRNZXNzYWdlPigpO1xuXG5cdFx0aWYgKGZha2VPcHRpb25zPy5kaXNwYXRjaCkge1xuXHRcdFx0dGhpcy5kaXNwYXRjaCA9IGZha2VPcHRpb25zLmRpc3BhdGNoO1xuXHRcdH1cblxuXHRcdGNvbnN0IFttb2RlbCwgLi4uY29tbWFuZHNdID0gZmFrZU9wdGlvbnM/Lm1vZGVsID8gW2Zha2VPcHRpb25zLm1vZGVsIGFzIFRNb2RlbF0gOiBpbml0KHRoaXMucHJvcHMpO1xuXG5cdFx0U2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkluaXRpYWwgbW9kZWwgZm9yXCIsIG5hbWUsIG1vZGVsKTtcblxuXHRcdHRoaXMuY29tcG9uZW50TmFtZSA9IG5hbWU7XG5cdFx0dGhpcy5jdXJyZW50TW9kZWwgPSBtb2RlbDtcblx0XHR0aGlzLmluaXRDb21tYW5kcyA9IGNvbW1hbmRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIElzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuXHQgKiBXaGVuIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGNhbGxlZC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuXHRcdHRoaXMubW91bnRlZCA9IHRydWU7XG5cblx0XHRpZiAodGhpcy5pbml0Q29tbWFuZHMpIHtcblx0XHRcdGV4ZWNDbWQodGhpcy5kaXNwYXRjaCwgLi4udGhpcy5pbml0Q29tbWFuZHMpO1xuXHRcdFx0dGhpcy5pbml0Q29tbWFuZHMgPSBudWxsO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJcyBjYWxsZWQgYmVmb3JlIHVubG9hZGluZyB0aGUgY29tcG9uZW50LlxuXHQgKiBXaGVuIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGNhbGxlZC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuXHRcdHRoaXMubW91bnRlZCA9IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgbW9kZWwuXG5cdCAqIEByZWFkb25seVxuXHQgKiBAdHlwZSB7UmVhZG9ubHk8VE1vZGVsPn1cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLXVudXNlZC1jbGFzcy1jb21wb25lbnQtbWV0aG9kcyAtLSBXZSBuZWVkIGl0IGludGVybmFsbHkuXG5cdHB1YmxpYyBnZXQgbW9kZWwoKTogUmVhZG9ubHk8VE1vZGVsPiB7XG5cdFx0cmV0dXJuIHRoaXMuY3VycmVudE1vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc3BhdGNoZXMgYSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkaXNwYXRjaCA9IChtc2c6IFRNZXNzYWdlKTogdm9pZCA9PiB7XG5cdFx0aWYgKHRoaXMucnVubmluZykge1xuXHRcdFx0dGhpcy5idWZmZXIucHVzaChtc2cpO1xuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5ydW5uaW5nID0gdHJ1ZTtcblxuXHRcdGxldCBuZXh0TXNnOiBUTWVzc2FnZSB8IHVuZGVmaW5lZCA9IG1zZztcblx0XHRsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuXHRcdGRvIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRNZXNzYWdlID0gbmV4dE1zZztcblxuXHRcdFx0bG9nTWVzc2FnZSh0aGlzLmNvbXBvbmVudE5hbWUsIGN1cnJlbnRNZXNzYWdlKTtcblxuXHRcdFx0Y29uc3QgW2RlZmVyLCBnZXREZWZlcnJlZF0gPSBjcmVhdGVEZWZlcjxUTW9kZWwsIFRNZXNzYWdlPigpO1xuXHRcdFx0Y29uc3QgY2FsbEJhc2UgPSBjcmVhdGVDYWxsQmFzZShjdXJyZW50TWVzc2FnZSwgdGhpcy5jdXJyZW50TW9kZWwsIHRoaXMucHJvcHMsIHsgZGVmZXIgfSk7XG5cblx0XHRcdGNvbnN0IFttb2RlbCwgLi4uY29tbWFuZHNdID0gdGhpcy51cGRhdGUodGhpcy5jdXJyZW50TW9kZWwsIGN1cnJlbnRNZXNzYWdlLCB0aGlzLnByb3BzLCB7IGRlZmVyLCBjYWxsQmFzZSB9KTtcblxuXHRcdFx0Y29uc3QgW2RlZmVycmVkTW9kZWwsIGRlZmVycmVkQ29tbWFuZHNdID0gZ2V0RGVmZXJyZWQoKTtcblxuXHRcdFx0aWYgKG1vZGVsSGFzQ2hhbmdlZCh0aGlzLmN1cnJlbnRNb2RlbCwgeyAuLi5kZWZlcnJlZE1vZGVsLCAuLi5tb2RlbCB9KSkge1xuXHRcdFx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IHsgLi4udGhpcy5jdXJyZW50TW9kZWwsIC4uLmRlZmVycmVkTW9kZWwsIC4uLm1vZGVsIH07XG5cdFx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0ZXhlY0NtZCh0aGlzLmRpc3BhdGNoLCAuLi5jb21tYW5kcywgLi4uZGVmZXJyZWRDb21tYW5kcyk7XG5cblx0XHRcdG5leHRNc2cgPSB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuXHRcdH0gd2hpbGUgKG5leHRNc2cpO1xuXG5cdFx0dGhpcy5ydW5uaW5nID0gZmFsc2U7XG5cblx0XHRpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG5cdFx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiVXBkYXRlIG1vZGVsIGZvclwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIHRoaXMuY3VycmVudE1vZGVsKTtcblx0XHRcdHRoaXMuZm9yY2VVcGRhdGUoKTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgbW9kZWwgYmFzZWQgb24gYSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNb2RlbH0gbW9kZWwgVGhlIGN1cnJlbnQgbW9kZWwuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBwcm9jZXNzLlxuXHQgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgdXBkYXRlIGZ1bmN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3IG1vZGVsIChjYW4gYWxzbyBiZSBhbiBlbXB0eSBvYmplY3Qge30pIGFuZCBhbiBvcHRpb25hbCBuZXcgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQGFic3RyYWN0XG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG59XG5cbmV4cG9ydCB7IEVsbUNvbXBvbmVudCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFBbUQsU0FBQUQsdUJBQUFPLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLFFBQUFDLENBQUEsc0NBQUFELE9BQUEsd0JBQUFFLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixDQUFBLGtCQUFBQSxDQUFBLGdCQUFBQSxDQUFBLFdBQUFBLENBQUEseUJBQUFDLE1BQUEsSUFBQUQsQ0FBQSxDQUFBRyxXQUFBLEtBQUFGLE1BQUEsSUFBQUQsQ0FBQSxLQUFBQyxNQUFBLENBQUFHLFNBQUEscUJBQUFKLENBQUEsS0FBQUQsT0FBQSxDQUFBQyxDQUFBO0FBQUEsU0FBQUssbUJBQUFDLENBQUEsV0FBQUMsa0JBQUEsQ0FBQUQsQ0FBQSxLQUFBRSxnQkFBQSxDQUFBRixDQUFBLEtBQUFHLDJCQUFBLENBQUFILENBQUEs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
|
package/dist/Types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Immutable } from "immer";
|
|
2
1
|
type Nullable<TType> = TType | null;
|
|
3
2
|
interface Message {
|
|
4
3
|
name: string;
|
|
@@ -29,13 +28,13 @@ type InitFunction<TProps, TModel, TMessage> = (props: TProps) => InitResult<TMod
|
|
|
29
28
|
*/
|
|
30
29
|
type UpdateReturnType<TModel, TMessage> = [Partial<TModel>, ...(Cmd<TMessage> | undefined)[]];
|
|
31
30
|
type DeferFunction<TModel, TMessage> = (model: Partial<TModel>, ...commands: (Cmd<TMessage> | undefined)[]) => void;
|
|
32
|
-
type CallBaseFunction<TModel, TProps, TMessage extends Message> = (fn: (msg: TMessage, model:
|
|
33
|
-
type UpdateMapFunction<TProps, TModel, TMessage extends Message> = (msg: TMessage, model:
|
|
31
|
+
type CallBaseFunction<TModel, TProps, TMessage extends Message> = (fn: (msg: TMessage, model: TModel, props: TProps, ...args: any[]) => UpdateReturnType<TModel, Message>) => UpdateReturnType<TModel, TMessage>;
|
|
32
|
+
type UpdateMapFunction<TProps, TModel, TMessage extends Message> = (msg: TMessage, model: TModel, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
|
|
34
33
|
interface UpdateFunctionOptions<TProps, TModel, TMessage extends Message, TSpecificMessage extends Message = TMessage> {
|
|
35
34
|
defer: DeferFunction<TModel, TMessage>;
|
|
36
35
|
callBase: CallBaseFunction<TModel, TProps, TSpecificMessage>;
|
|
37
36
|
}
|
|
38
|
-
type UpdateFunction<TProps, TModel, TMessage extends Message> = (model:
|
|
37
|
+
type UpdateFunction<TProps, TModel, TMessage extends Message> = (model: TModel, msg: TMessage, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
|
|
39
38
|
/**
|
|
40
39
|
* Type for mapping messages to functions.
|
|
41
40
|
* Use this type to create your update logic for the useElmish hook.
|
|
@@ -43,8 +42,17 @@ type UpdateFunction<TProps, TModel, TMessage extends Message> = (model: Immutabl
|
|
|
43
42
|
type UpdateMap<TProps, TModel, TMessage extends Message> = {
|
|
44
43
|
[TMessageName in TMessage["name"]]: (msg: TMessage & {
|
|
45
44
|
name: TMessageName;
|
|
46
|
-
}, model:
|
|
45
|
+
}, model: TModel, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage, TMessage & {
|
|
47
46
|
name: TMessageName;
|
|
48
47
|
}>) => UpdateReturnType<TModel, TMessage>;
|
|
49
48
|
};
|
|
50
|
-
|
|
49
|
+
/**
|
|
50
|
+
* The return type of the `subscription` function.
|
|
51
|
+
* @template TMessage The type of the messages discriminated union.
|
|
52
|
+
*/
|
|
53
|
+
type SubscriptionResult<TMessage> = [Cmd<TMessage>, (() => void)?] | SubscriptionFunction<TMessage>[];
|
|
54
|
+
type SubscriptionFunction<TMessage> = (dispatch: Dispatch<TMessage>) => (() => void) | undefined;
|
|
55
|
+
type Subscription<TProps, TModel, TMessage> = (model: TModel, props: TProps) => SubscriptionResult<TMessage>;
|
|
56
|
+
declare function subscriptionIsFunctionArray(subscription: SubscriptionResult<unknown>): subscription is SubscriptionFunction<unknown>[];
|
|
57
|
+
export type { CallBaseFunction, Cmd, DeferFunction, Dispatch, FallbackHandler, InitFunction, InitResult, Message, MsgSource, Nullable, Sub, Subscription, SubscriptionFunction, SubscriptionResult, UpdateFunction, UpdateFunctionOptions, UpdateMap, UpdateMapFunction, UpdateReturnType, };
|
|
58
|
+
export { subscriptionIsFunctionArray };
|
package/dist/Types.js
CHANGED
|
@@ -3,4 +3,38 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
6
|
+
exports.subscriptionIsFunctionArray = subscriptionIsFunctionArray;
|
|
7
|
+
/**
|
|
8
|
+
* Type of the dispatch function.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Type of a command.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Creates a MsgSource type.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The return type of the `init` function.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Type for the return value of the `update` function.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Type for mapping messages to functions.
|
|
29
|
+
* Use this type to create your update logic for the useElmish hook.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The return type of the `subscription` function.
|
|
34
|
+
* @template TMessage The type of the messages discriminated union.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
function subscriptionIsFunctionArray(subscription) {
|
|
38
|
+
return typeof subscription[0] === "function";
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdWJzY3JpcHRpb25Jc0Z1bmN0aW9uQXJyYXkiLCJzdWJzY3JpcHRpb24iXSwic291cmNlcyI6WyIuLi9zcmMvVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBOdWxsYWJsZTxUVHlwZT4gPSBUVHlwZSB8IG51bGw7XG5cbmludGVyZmFjZSBNZXNzYWdlIHtcblx0bmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgb2YgdGhlIGRpc3BhdGNoIGZ1bmN0aW9uLlxuICovXG50eXBlIERpc3BhdGNoPFRNZXNzYWdlPiA9IChtc2c6IFRNZXNzYWdlKSA9PiB2b2lkO1xuXG50eXBlIEZhbGxiYWNrSGFuZGxlciA9IChlcnJvcj86IEVycm9yKSA9PiB2b2lkO1xudHlwZSBTdWI8VE1zZz4gPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNc2c+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcikgPT4gdm9pZDtcblxuLyoqXG4gKiBUeXBlIG9mIGEgY29tbWFuZC5cbiAqL1xudHlwZSBDbWQ8VE1lc3NhZ2U+ID0gU3ViPFRNZXNzYWdlPltdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBNc2dTb3VyY2UgdHlwZS5cbiAqL1xuaW50ZXJmYWNlIE1zZ1NvdXJjZTxUU291cmNlIGV4dGVuZHMgc3RyaW5nPiB7XG5cdHNvdXJjZTogVFNvdXJjZTtcbn1cblxuLyoqXG4gKiBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGBpbml0YCBmdW5jdGlvbi5cbiAqL1xudHlwZSBJbml0UmVzdWx0PFRNb2RlbCwgVE1lc3NhZ2U+ID0gW1RNb2RlbCwgLi4uKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQpW11dO1xuXG50eXBlIEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKHByb3BzOiBUUHJvcHMpID0+IEluaXRSZXN1bHQ8VE1vZGVsLCBUTWVzc2FnZT47XG5cbi8qKlxuICogVHlwZSBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYHVwZGF0ZWAgZnVuY3Rpb24uXG4gKi9cbnR5cGUgVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiA9IFtQYXJ0aWFsPFRNb2RlbD4sIC4uLihDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdXTtcblxudHlwZSBEZWZlckZ1bmN0aW9uPFRNb2RlbCwgVE1lc3NhZ2U+ID0gKG1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4sIC4uLmNvbW1hbmRzOiAoQ21kPFRNZXNzYWdlPiB8IHVuZGVmaW5lZClbXSkgPT4gdm9pZDtcbnR5cGUgQ2FsbEJhc2VGdW5jdGlvbjxUTW9kZWwsIFRQcm9wcywgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IChcblx0Zm46IChcblx0XHRtc2c6IFRNZXNzYWdlLFxuXHRcdG1vZGVsOiBUTW9kZWwsXG5cdFx0cHJvcHM6IFRQcm9wcyxcblx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGFueSBpcyBuZWVkZWQgaGVyZSB0byBhbGxvdyBvcHRpb25zIG9mIGFueSB0eXBlXG5cdFx0Li4uYXJnczogYW55W11cblx0KSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgTWVzc2FnZT4sXG4pID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT47XG5cbnR5cGUgVXBkYXRlTWFwRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gPSAoXG5cdG1zZzogVE1lc3NhZ2UsXG5cdG1vZGVsOiBUTW9kZWwsXG5cdHByb3BzOiBUUHJvcHMsXG5cdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5pbnRlcmZhY2UgVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRTcGVjaWZpY01lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlID0gVE1lc3NhZ2U+IHtcblx0ZGVmZXI6IERlZmVyRnVuY3Rpb248VE1vZGVsLCBUTWVzc2FnZT47XG5cdGNhbGxCYXNlOiBDYWxsQmFzZUZ1bmN0aW9uPFRNb2RlbCwgVFByb3BzLCBUU3BlY2lmaWNNZXNzYWdlPjtcbn1cblxudHlwZSBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IChcblx0bW9kZWw6IFRNb2RlbCxcblx0bXNnOiBUTWVzc2FnZSxcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4pID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT47XG5cbi8qKlxuICogVHlwZSBmb3IgbWFwcGluZyBtZXNzYWdlcyB0byBmdW5jdGlvbnMuXG4gKiBVc2UgdGhpcyB0eXBlIHRvIGNyZWF0ZSB5b3VyIHVwZGF0ZSBsb2dpYyBmb3IgdGhlIHVzZUVsbWlzaCBob29rLlxuICovXG50eXBlIFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IHtcblx0W1RNZXNzYWdlTmFtZSBpbiBUTWVzc2FnZVtcIm5hbWVcIl1dOiAoXG5cdFx0bXNnOiBUTWVzc2FnZSAmIHsgbmFtZTogVE1lc3NhZ2VOYW1lIH0sXG5cdFx0bW9kZWw6IFRNb2RlbCxcblx0XHRwcm9wczogVFByb3BzLFxuXHRcdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UsIFRNZXNzYWdlICYgeyBuYW1lOiBUTWVzc2FnZU5hbWUgfT4sXG5cdCkgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPjtcbn07XG5cbi8qKlxuICogVGhlIHJldHVybiB0eXBlIG9mIHRoZSBgc3Vic2NyaXB0aW9uYCBmdW5jdGlvbi5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xudHlwZSBTdWJzY3JpcHRpb25SZXN1bHQ8VE1lc3NhZ2U+ID0gW0NtZDxUTWVzc2FnZT4sICgoKSA9PiB2b2lkKT9dIHwgU3Vic2NyaXB0aW9uRnVuY3Rpb248VE1lc3NhZ2U+W107XG50eXBlIFN1YnNjcmlwdGlvbkZ1bmN0aW9uPFRNZXNzYWdlPiA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+KSA9PiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG50eXBlIFN1YnNjcmlwdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpID0+IFN1YnNjcmlwdGlvblJlc3VsdDxUTWVzc2FnZT47XG5cbmZ1bmN0aW9uIHN1YnNjcmlwdGlvbklzRnVuY3Rpb25BcnJheShzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblJlc3VsdDx1bmtub3duPik6IHN1YnNjcmlwdGlvbiBpcyBTdWJzY3JpcHRpb25GdW5jdGlvbjx1bmtub3duPltdIHtcblx0cmV0dXJuIHR5cGVvZiBzdWJzY3JpcHRpb25bMF0gPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuZXhwb3J0IHR5cGUge1xuXHRDYWxsQmFzZUZ1bmN0aW9uLFxuXHRDbWQsXG5cdERlZmVyRnVuY3Rpb24sXG5cdERpc3BhdGNoLFxuXHRGYWxsYmFja0hhbmRsZXIsXG5cdEluaXRGdW5jdGlvbixcblx0SW5pdFJlc3VsdCxcblx0TWVzc2FnZSxcblx0TXNnU291cmNlLFxuXHROdWxsYWJsZSxcblx0U3ViLFxuXHRTdWJzY3JpcHRpb24sXG5cdFN1YnNjcmlwdGlvbkZ1bmN0aW9uLFxuXHRTdWJzY3JpcHRpb25SZXN1bHQsXG5cdFVwZGF0ZUZ1bmN0aW9uLFxuXHRVcGRhdGVGdW5jdGlvbk9wdGlvbnMsXG5cdFVwZGF0ZU1hcCxcblx0VXBkYXRlTWFwRnVuY3Rpb24sXG5cdFVwZGF0ZVJldHVyblR5cGUsXG59O1xuXG5leHBvcnQgeyBzdWJzY3JpcHRpb25Jc0Z1bmN0aW9uQXJyYXkgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUE7QUFDQTtBQUNBOztBQU1BO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTs7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7O0FBS0EsU0FBU0EsMkJBQTJCQSxDQUFDQyxZQUF5QyxFQUFtRDtFQUNoSSxPQUFPLE9BQU9BLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVO0FBQzdDIiwiaWdub3JlTGlzdCI6W119
|
package/dist/createCallBase.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Immutable } from "immer";
|
|
2
1
|
import type { CallBaseFunction, Message, UpdateFunctionOptions } from "./Types";
|
|
3
|
-
declare function createCallBase<TProps, TModel, TMessage extends Message>(msg: TMessage, model:
|
|
2
|
+
declare function createCallBase<TProps, TModel, TMessage extends Message>(msg: TMessage, model: TModel, props: TProps, options: Omit<UpdateFunctionOptions<TProps, TModel, TMessage>, "callBase">): CallBaseFunction<TModel, TProps, TMessage>;
|
|
4
3
|
export { createCallBase };
|
package/dist/createCallBase.js
CHANGED
|
@@ -21,4 +21,4 @@ function createCallBase(msg, model, props, options) {
|
|
|
21
21
|
};
|
|
22
22
|
return _callBase;
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDYWxsQmFzZSIsIm1zZyIsIm1vZGVsIiwicHJvcHMiLCJvcHRpb25zIiwiY2FsbEJhc2UiLCJmbiIsIl9vYmplY3RTcHJlYWQiXSwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlQ2FsbEJhc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWxsQmFzZUZ1bmN0aW9uLCBNZXNzYWdlLCBVcGRhdGVGdW5jdGlvbk9wdGlvbnMsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG5mdW5jdGlvbiBjcmVhdGVDYWxsQmFzZTxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPihcblx0bXNnOiBUTWVzc2FnZSxcblx0bW9kZWw6IFRNb2RlbCxcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogT21pdDxVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiwgXCJjYWxsQmFzZVwiPixcbik6IENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlPiB7XG5cdGNvbnN0IGNhbGxCYXNlOiBDYWxsQmFzZUZ1bmN0aW9uPFRNb2RlbCwgVFByb3BzLCBUTWVzc2FnZT4gPSAoZm4pID0+XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtdHlwZS1hc3NlcnRpb24gLS0gVGhlIGN1cnJlbnQgVE1lc3NhZ2UgbXVzdCBiZSBleHRlbmRlZCBmcm9tIE1lc3NhZ2Vcblx0XHRmbihtc2csIG1vZGVsLCBwcm9wcywgeyAuLi5vcHRpb25zLCBjYWxsQmFzZSB9KSBhcyBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5cdHJldHVybiBjYWxsQmFzZTtcbn1cblxuZXhwb3J0IHsgY3JlYXRlQ2FsbEJhc2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsY0FBY0EsQ0FDdEJDLEdBQWEsRUFDYkMsS0FBYSxFQUNiQyxLQUFhLEVBQ2JDLE9BQTBFLEVBQzdCO0VBQzdDLElBQU1DLFNBQW9ELEdBQUcsU0FBdkRBLFFBQW9EQSxDQUFJQyxFQUFFO0lBQUE7TUFDL0Q7TUFDQUEsRUFBRSxDQUFDTCxHQUFHLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFBSSxhQUFBLENBQUFBLGFBQUEsS0FBT0gsT0FBTztRQUFFQyxRQUFRLEVBQVJBO01BQVEsRUFBRTtJQUFDO0VBQUEsQ0FBc0M7RUFFdEYsT0FBT0EsU0FBUTtBQUNoQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type Immutable } from "immer";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import type { InitFunction, Message } from "../Types";
|
|
4
|
+
import type { UpdateFunction } from "./Types";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract class for a react class component using the Elmish pattern.
|
|
7
|
+
* @export
|
|
8
|
+
* @abstract
|
|
9
|
+
* @class ElmComponent
|
|
10
|
+
* @extends {Component<TProps, TModel>}
|
|
11
|
+
* @template TModel The type of the model.
|
|
12
|
+
* @template TMessage The type of the messages.
|
|
13
|
+
* @template TProps The type of the props.
|
|
14
|
+
*/
|
|
15
|
+
declare abstract class ElmComponent<TModel, TMessage extends Message, TProps> extends React.Component<TProps> {
|
|
16
|
+
private initCommands;
|
|
17
|
+
private readonly componentName;
|
|
18
|
+
private readonly buffer;
|
|
19
|
+
private running;
|
|
20
|
+
private mounted;
|
|
21
|
+
private currentModel;
|
|
22
|
+
/**
|
|
23
|
+
* Creates an instance of ElmComponent.
|
|
24
|
+
* @param {TProps} props The props for the component.
|
|
25
|
+
* @param {() => TModel} init The initializer function.
|
|
26
|
+
* @param name The name of the component.
|
|
27
|
+
* @memberof ElmComponent
|
|
28
|
+
*/
|
|
29
|
+
constructor(props: TProps, init: InitFunction<TProps, TModel, TMessage>, name: string);
|
|
30
|
+
/**
|
|
31
|
+
* Is called when the component is loaded.
|
|
32
|
+
* When implementing this method, the base implementation has to be called.
|
|
33
|
+
* @memberof ElmComponent
|
|
34
|
+
*/
|
|
35
|
+
componentDidMount(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Is called before unloading the component.
|
|
38
|
+
* When implementing this method, the base implementation has to be called.
|
|
39
|
+
* @memberof ElmComponent
|
|
40
|
+
*/
|
|
41
|
+
componentWillUnmount(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Returns the current model.
|
|
44
|
+
* @readonly
|
|
45
|
+
* @type {Readonly<TModel>}
|
|
46
|
+
* @memberof ElmComponent
|
|
47
|
+
*/
|
|
48
|
+
get model(): Immutable<TModel>;
|
|
49
|
+
/**
|
|
50
|
+
* Dispatches a message.
|
|
51
|
+
* @param {TMessage} msg The message to dispatch.
|
|
52
|
+
* @memberof ElmComponent
|
|
53
|
+
*/
|
|
54
|
+
readonly dispatch: (msg: TMessage) => void;
|
|
55
|
+
/**
|
|
56
|
+
* Function to modify the model based on a message.
|
|
57
|
+
* @param {TModel} model The current model.
|
|
58
|
+
* @param {TMessage} msg The message to process.
|
|
59
|
+
* @param {TProps} props The props of the component.
|
|
60
|
+
* @param options The options for the update function.
|
|
61
|
+
* @returns The new model (can also be an empty object {}) and an optional new message to dispatch.
|
|
62
|
+
* @abstract
|
|
63
|
+
* @memberof ElmComponent
|
|
64
|
+
*/
|
|
65
|
+
abstract update: UpdateFunction<TProps, TModel, TMessage>;
|
|
66
|
+
}
|
|
67
|
+
export { ElmComponent };
|