react-elmish 4.2.0-beta.5 → 4.3.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/.eslintrc CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "extends": "heck/node"
2
+ "extends": ["heck/node", "heck/groupImports"]
3
3
  }
@@ -0,0 +1,3 @@
1
+ {
2
+ "typescript.tsdk": "node_modules/typescript/lib"
3
+ }
package/README.md CHANGED
@@ -5,6 +5,35 @@
5
5
 
6
6
  This library brings the elmish pattern to react.
7
7
 
8
+ - [Installation](#installation)
9
+ - [Basic Usage](#basic-usage)
10
+ - [More on messages](#more-on-messages)
11
+ - [Message arguments](#message-arguments)
12
+ - [Symbols instead of strings](#symbols-instead-of-strings)
13
+ - [Dispatch commands in the update map or update function](#dispatch-commands-in-the-update-map-or-update-function)
14
+ - [Dispatch a message](#dispatch-a-message)
15
+ - [Call an async function](#call-an-async-function)
16
+ - [Dispatch a command from `init`](#dispatch-a-command-from-init)
17
+ - [Subscriptions](#subscriptions)
18
+ - [Working with external sources of events](#working-with-external-sources-of-events)
19
+ - [Cleanup subscriptions](#cleanup-subscriptions)
20
+ - [Setup](#setup)
21
+ - [Error handling](#error-handling)
22
+ - [React life cycle management](#react-life-cycle-management)
23
+ - [Composition](#composition)
24
+ - [With an `UpdateMap`](#with-an-updatemap)
25
+ - [With an update function](#with-an-update-function)
26
+ - [Call back parent components](#call-back-parent-components)
27
+ - [Testing](#testing)
28
+ - [Testing the model and simple message commands](#testing-the-model-and-simple-message-commands)
29
+ - [Testing all (async) messages](#testing-all-async-messages)
30
+ - [Testing with an UpdateMap](#testing-with-an-updatemap)
31
+ - [UI Tests](#ui-tests)
32
+ - [Migrations](#migrations)
33
+ - [From v1.x to v2.x](#from-v1x-to-v2x)
34
+ - [From v2.x to v3.x](#from-v2x-to-v3x)
35
+ - [From v3.x to v4.x](#from-v3x-to-v4x)
36
+
8
37
  ## Installation
9
38
 
10
39
  `npm install react-elmish`
@@ -13,14 +42,14 @@ This library brings the elmish pattern to react.
13
42
 
14
43
  An elmish component basically consists of the following parts:
15
44
 
16
- * The **Model** holding the state of the component.
17
- * The **Props** for the component.
18
- * The **Init** function to create the initial model based on the props.
19
- * The **Messages** to dispatch which modify the model.
20
- * The **Update** function to modify the model based on a specific message.
21
- * The **View** which renders the component based on the current model.
45
+ - The **Model** holding the state of the component.
46
+ - The **Props** for the component.
47
+ - The **Init** function to create the initial model based on the props.
48
+ - The **Messages** to dispatch which modify the model.
49
+ - The **Update** function to modify the model based on a specific message.
50
+ - The **View** which renders the component based on the current model.
22
51
 
23
- ### App.ts
52
+ **App.ts:**
24
53
 
25
54
  First import everything from `react-elmish` and declare the **Message** discriminated union type:
26
55
 
@@ -101,7 +130,7 @@ export const update = (model: Model, msg: Msg, props: Props): UpdateReturnType<M
101
130
 
102
131
  > **Note:** If you are using **typescript** and **typescript-eslint** you should enable the [switch-exhaustive-check](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md) rule.
103
132
 
104
- ### App.tsx
133
+ **App.tsx:**
105
134
 
106
135
  To put all this together and to render our component, we need a React component.
107
136
 
@@ -439,7 +468,7 @@ function subscription (model: Model): SubscriptionResult<Message> {
439
468
  }
440
469
 
441
470
  const destructor = () => {
442
- clearInterval(timer1);
471
+ clearInterval(timer);
443
472
  }
444
473
 
445
474
  return [cmd.ofSub(sub), destructor];
@@ -522,7 +551,7 @@ You can handle errors easily with the following pattern.
522
551
  };
523
552
  ```
524
553
 
525
- Your can also use the `errorHandler` helper function:
554
+ You can also use the `errorHandler` helper function:
526
555
 
527
556
  ```ts
528
557
  const updateMap = {
@@ -828,9 +857,7 @@ To inform the parent component about some action, let's say to close a dialog fo
828
857
  ```ts Dialog.ts
829
858
  ...
830
859
  case "close":
831
- props.onClose();
832
-
833
- return [{}];
860
+ return [{}, cmd.ofFunc.attempt(props.onClose, Msg.error)];
834
861
  ...
835
862
  ```
836
863
 
@@ -922,10 +949,54 @@ const update = getUpdateFn(updateMap);
922
949
  const [model, cmd] = update(msg, model, props);
923
950
  ```
924
951
 
925
- ## Migration from v1.x to v2.x
952
+ ### UI Tests
953
+
954
+ 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 or an options object, where you can also pass a fake `dispatch` function.
955
+
956
+ ```tsx
957
+ import { renderWithModel } from "react-elmish/dist/Testing";
958
+ import { fireEvent, render, screen } from "@testing-library/react";
959
+
960
+ it("renders the correct value", () => {
961
+ // arrange
962
+ const model: Model = { value: "It works" };
963
+
964
+ // act
965
+ renderWithModel(() => render(<TestComponent />), model);
966
+
967
+ // assert
968
+ expect(screen.getByText("It works")).not.toBeNull();
969
+ });
970
+
971
+ it("dispatches the correct message", async () => {
972
+ // arrange
973
+ const model: Model = { value: "" };
974
+ const mockDispatch = jest.fn();
975
+
976
+ renderWithModel(
977
+ () => render(<TestComponent />),
978
+ {
979
+ model,
980
+ dispatch: mockDispatch
981
+ }
982
+ );
983
+
984
+ // act
985
+ fireEvent.click(screen.getByText("Click"));
986
+
987
+ // assert
988
+ expect(mockDispatch).toHaveBeenCalledWith({ name: "click" });
989
+ });
990
+ ```
991
+
992
+ This works for function components using the `useElmish` hook and class components.
993
+
994
+ ## Migrations
995
+
996
+ ### From v1.x to v2.x
926
997
 
927
- * Use `Logger` and `Message` instead of `ILogger` and `IMessage`.
928
- * 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:
998
+ - Use `Logger` and `Message` instead of `ILogger` and `IMessage`.
999
+ - 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:
929
1000
 
930
1001
  ```ts
931
1002
  declare global {
@@ -933,7 +1004,7 @@ const [model, cmd] = update(msg, model, props);
933
1004
  }
934
1005
  ```
935
1006
 
936
- ## Migration from v2.x to v3.x
1007
+ ### From v2.x to v3.x
937
1008
 
938
1009
  The signature of `useElmish` has changed. It takes an options object now. Thus there is no need for the `useElmishMap` function. Use the new `useElmish` hook with an `UpdateMap` instead.
939
1010
 
@@ -946,6 +1017,6 @@ import { useElmishMap } from "react-elmish/dist/legacy/useElmishMap";
946
1017
 
947
1018
  **Notice**: These functions are marked as deprecated and will be removed in a later release.
948
1019
 
949
- ## Migration from v3.x to v4.x
1020
+ ### From v3.x to v4.x
950
1021
 
951
1022
  Because the legacy `useElmish` and `useElmishMap` have been removed, you have to convert all usages of `useElmish` to use the parameter object.
package/dist/Cmd.d.ts CHANGED
@@ -1,37 +1,38 @@
1
1
  /**
2
2
  * Type of the dispatch function.
3
3
  */
4
- declare type Dispatch<TMsg> = (msg: TMsg) => void;
4
+ declare type Dispatch<TMessage> = (msg: TMessage) => void;
5
5
  declare type FallbackHandler = (error?: Error) => void;
6
6
  declare type Sub<TMsg> = (dispatch: Dispatch<TMsg>, fallback?: FallbackHandler) => void;
7
7
  /**
8
8
  * Type of a command.
9
9
  */
10
- declare type Cmd<TMsg> = Sub<TMsg>[];
10
+ declare type Cmd<TMessage> = Sub<TMessage>[];
11
11
  /**
12
12
  * Contains functions to create commands.
13
- * @template TMsg Type of the Message discriminated union.
13
+ * @template TMessage Type of the Message discriminated union.
14
14
  */
15
- interface Command<TMsg> {
15
+ interface Command<TMessage> {
16
16
  /**
17
17
  * Represents an empty command.
18
+ * @deprecated Do return nothing (`undefined`) instead.
18
19
  */
19
20
  none: [];
20
21
  /**
21
22
  * Creates a command out of a specific message.
22
- * @param {TMsg} msg The specific message.
23
+ * @param {TMessage} msg The specific message.
23
24
  */
24
- ofMsg: (msg: TMsg) => Cmd<TMsg>;
25
+ ofMsg: (msg: TMessage) => Cmd<TMessage>;
25
26
  /**
26
27
  * Aggregates multiple commands.
27
- * @param {Cmd<TMsg> []} commands Array of commands.
28
+ * @param {Cmd<TMessage> []} commands Array of commands.
28
29
  */
29
- batch: (...commands: Cmd<TMsg>[]) => Cmd<TMsg>;
30
+ batch: (...commands: (Cmd<TMessage> | undefined | null)[]) => Cmd<TMessage>;
30
31
  /**
31
32
  * Command to call the subscriber.
32
- * @param {Sub<TMsg>} sub The subscriber function.
33
+ * @param {Sub<TMessage>} sub The subscriber function.
33
34
  */
34
- ofSub: (sub: Sub<TMsg>) => Cmd<TMsg>;
35
+ ofSub: (sub: Sub<TMessage>) => Cmd<TMessage>;
35
36
  /**
36
37
  * Provides functionalities to create commands from simple functions.
37
38
  */
@@ -43,21 +44,21 @@ interface Command<TMsg> {
43
44
  * @param ofError Creates the message to dispatch when an error occurred.
44
45
  * @param args The parameters of the task.
45
46
  */
46
- either: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: TReturn) => TMsg, ofError: (error: Error) => TMsg, ...args: TArgs) => Cmd<TMsg>;
47
+ either: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: TReturn) => TMessage, ofError: (error: Error) => TMessage, ...args: TArgs) => Cmd<TMessage>;
47
48
  /**
48
49
  * Creates a command out of a simple function and ignores the error case.
49
50
  * @param task The function to call.
50
51
  * @param ofSuccess Creates the message to dispatch after a successful call of the task.
51
52
  * @param args The parameters of the task.
52
53
  */
53
- perform: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: TReturn) => TMsg, ...args: TArgs) => Cmd<TMsg>;
54
+ perform: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: TReturn) => TMessage, ...args: TArgs) => Cmd<TMessage>;
54
55
  /**
55
56
  * Creates a command out of a simple function and ignores the success case.
56
57
  * @param task The function to call.
57
58
  * @param ofError Creates the message to dispatch when an error occurred.
58
59
  * @param args The parameters of the task.
59
60
  */
60
- attempt: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofError: (error: Error) => TMsg, ...args: TArgs) => Cmd<TMsg>;
61
+ attempt: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofError: (error: Error) => TMessage, ...args: TArgs) => Cmd<TMessage>;
61
62
  };
62
63
  /**
63
64
  * Provides functionalities to create commands from async functions.
@@ -70,27 +71,27 @@ interface Command<TMsg> {
70
71
  * @param ofError Creates the message to dispatch when the promise is rejected.
71
72
  * @param args The parameters of the task.
72
73
  */
73
- either: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => Promise<TReturn>, ofSuccess: (result: TReturn) => TMsg, ofError: (error: Error) => TMsg, ...args: TArgs) => Cmd<TMsg>;
74
+ either: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => Promise<TReturn>, ofSuccess: (result: TReturn) => TMessage, ofError: (error: Error) => TMessage, ...args: TArgs) => Cmd<TMessage>;
74
75
  /**
75
76
  * Creates a command out of an async function and ignores the error case.
76
77
  * @param task The async function to call.
77
78
  * @param ofSuccess Creates the message to dispatch when the promise is resolved.
78
79
  * @param args The parameters of the task.
79
80
  */
80
- perform: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => Promise<TReturn>, ofSuccess: (result: TReturn) => TMsg, ...args: TArgs) => Cmd<TMsg>;
81
+ perform: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => Promise<TReturn>, ofSuccess: (result: TReturn) => TMessage, ...args: TArgs) => Cmd<TMessage>;
81
82
  /**
82
83
  * Creates a command out of an async function and ignores the success case.
83
84
  * @param task The async function to call.
84
85
  * @param ofError Creates the message to dispatch when the promise is rejected.
85
86
  * @param args The parameters of the task.
86
87
  */
87
- attempt: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => Promise<TReturn>, ofError: (error: Error) => TMsg, ...args: TArgs) => Cmd<TMsg>;
88
+ attempt: <TArgs extends unknown[], TReturn>(task: (...args: TArgs) => Promise<TReturn>, ofError: (error: Error) => TMessage, ...args: TArgs) => Cmd<TMessage>;
88
89
  };
89
90
  }
90
91
  /**
91
92
  * Creates a typed instance of the Command class.
92
- * @template TMsg The type of the Msg discriminated union.
93
+ * @template TMessage The type of the Msg discriminated union.
93
94
  */
94
- declare function createCmd<TMsg>(): Command<TMsg>;
95
+ declare function createCmd<TMessage>(): Command<TMessage>;
95
96
  export type { Dispatch, Cmd, };
96
97
  export { createCmd, };
package/dist/Cmd.js CHANGED
@@ -15,12 +15,12 @@ exports.createCmd = createCmd;
15
15
 
16
16
  /**
17
17
  * Contains functions to create commands.
18
- * @template TMsg Type of the Message discriminated union.
18
+ * @template TMessage Type of the Message discriminated union.
19
19
  */
20
20
 
21
21
  /**
22
22
  * Creates a typed instance of the Command class.
23
- * @template TMsg The type of the Msg discriminated union.
23
+ * @template TMessage The type of the Msg discriminated union.
24
24
  */
25
25
  function createCmd() {
26
26
  return {
@@ -35,7 +35,7 @@ function createCmd() {
35
35
  commands[_key] = arguments[_key];
36
36
  }
37
37
 
38
- return commands.flat();
38
+ return commands.filter(Boolean).flat();
39
39
  },
40
40
  ofSub: function ofSub(sub) {
41
41
  return [sub];
@@ -150,4 +150,4 @@ function createCmd() {
150
150
  }
151
151
  };
152
152
  }
153
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDbWQiLCJub25lIiwib2ZNc2ciLCJtc2ciLCJkaXNwYXRjaCIsImJhdGNoIiwiY29tbWFuZHMiLCJmbGF0Iiwib2ZTdWIiLCJzdWIiLCJvZkZ1bmMiLCJlaXRoZXIiLCJ0YXNrIiwib2ZTdWNjZXNzIiwib2ZFcnJvciIsImFyZ3MiLCJiaW5kIiwicmVzdWx0IiwiZXgiLCJwZXJmb3JtIiwiZmFsbGJhY2siLCJhdHRlbXB0Iiwib2ZQcm9taXNlIiwidGhlbiIsImRlZmF1bHRGYWxsYmFja0hhbmRsZXIiXSwic291cmNlcyI6WyIuLi9zcmMvQ21kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZSBvZiB0aGUgZGlzcGF0Y2ggZnVuY3Rpb24uXG4gKi9cbnR5cGUgRGlzcGF0Y2g8VE1zZz4gPSAobXNnOiBUTXNnKSA9PiB2b2lkO1xuXG50eXBlIEZhbGxiYWNrSGFuZGxlciA9IChlcnJvcj86IEVycm9yKSA9PiB2b2lkO1xudHlwZSBTdWI8VE1zZz4gPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNc2c+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcikgPT4gdm9pZDtcblxuLyoqXG4gKiBUeXBlIG9mIGEgY29tbWFuZC5cbiAqL1xudHlwZSBDbWQ8VE1zZz4gPSBTdWI8VE1zZz4gW107XG5cbi8qKlxuICogQ29udGFpbnMgZnVuY3Rpb25zIHRvIGNyZWF0ZSBjb21tYW5kcy5cbiAqIEB0ZW1wbGF0ZSBUTXNnIFR5cGUgb2YgdGhlIE1lc3NhZ2UgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIENvbW1hbmQ8VE1zZz4ge1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYW4gZW1wdHkgY29tbWFuZC5cbiAgICAgKi9cbiAgICBub25lOiBbXSxcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1zZ30gbXNnIFRoZSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqL1xuICAgIG9mTXNnOiAobXNnOiBUTXNnKSA9PiBDbWQ8VE1zZz4sXG4gICAgLyoqXG4gICAgICogQWdncmVnYXRlcyBtdWx0aXBsZSBjb21tYW5kcy5cbiAgICAgKiBAcGFyYW0ge0NtZDxUTXNnPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g6ICguLi5jb21tYW5kczogQ21kPFRNc2c+IFtdKSA9PiBDbWQ8VE1zZz4sXG4gICAgLyoqXG4gICAgICogQ29tbWFuZCB0byBjYWxsIHRoZSBzdWJzY3JpYmVyLlxuICAgICAqIEBwYXJhbSB7U3ViPFRNc2c+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI6IChzdWI6IFN1YjxUTXNnPikgPT4gQ21kPFRNc2c+LFxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUgY29tbWFuZHMgZnJvbSBzaW1wbGUgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mRnVuYzoge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzaW1wbGUgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBlaXRoZXI6IDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTXNnLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTXNnLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNc2c+LFxuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzaW1wbGUgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSB0YXNrLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBwZXJmb3JtOiA8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1zZywgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTXNnPixcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0OiA8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNc2csIC4uLmFyZ3M6IFRBcmdzKSA9PiBDbWQ8VE1zZz4sXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gYXN5bmMgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mUHJvbWlzZToge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNc2csIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNc2csIC4uLmFyZ3M6IFRBcmdzKSA9PiBDbWQ8VE1zZz4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgcGVyZm9ybTogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNc2csIC4uLmFyZ3M6IFRBcmdzKSA9PiBDbWQ8VE1zZz4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTXNnLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNc2c+LFxuICAgIH0sXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHR5cGVkIGluc3RhbmNlIG9mIHRoZSBDb21tYW5kIGNsYXNzLlxuICogQHRlbXBsYXRlIFRNc2cgVGhlIHR5cGUgb2YgdGhlIE1zZyBkaXNjcmltaW5hdGVkIHVuaW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDbWQ8VE1zZz4gKCk6IENvbW1hbmQ8VE1zZz4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vbmU6IFtdLFxuICAgICAgICBvZk1zZyAobXNnOiBUTXNnKTogQ21kPFRNc2c+IHtcbiAgICAgICAgICAgIHJldHVybiBbZGlzcGF0Y2ggPT4gZGlzcGF0Y2gobXNnKV07XG4gICAgICAgIH0sXG4gICAgICAgIGJhdGNoICguLi5jb21tYW5kczogQ21kPFRNc2c+IFtdKTogQ21kPFRNc2c+IHtcbiAgICAgICAgICAgIHJldHVybiBjb21tYW5kcy5mbGF0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9mU3ViIChzdWI6IFN1YjxUTXNnPik6IENtZDxUTXNnPiB7XG4gICAgICAgICAgICByZXR1cm4gW3N1Yl07XG4gICAgICAgIH0sXG4gICAgICAgIG9mRnVuYzoge1xuICAgICAgICAgICAgZWl0aGVyPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNc2csIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNc2csIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNc2c+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTXNnPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGVyZm9ybTxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTXNnLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTXNnPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1zZz4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayhleCBhcyBFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRlbXB0PFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTXNnLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTXNnPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1zZz4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBvZlByb21pc2U6IHtcbiAgICAgICAgICAgIGVpdGhlcjxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTXNnLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTXNnLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTXNnPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1zZz4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKS50aGVuKHJlc3VsdCA9PiBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwZXJmb3JtPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNc2csIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNc2c+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBibGFua1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTXNnPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKS50aGVuKHJlc3VsdCA9PiBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZmFsbGJhY2spO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dGVtcHQ8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNc2csIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNc2c+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTXNnPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuZXhwb3J0IHR5cGUge1xuICAgIERpc3BhdGNoLFxuICAgIENtZCxcbn07XG5cbmV4cG9ydCB7XG4gICAgY3JlYXRlQ21kLFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBTUE7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQTZFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVQsR0FBMkM7RUFDdkMsT0FBTztJQUNIQyxJQUFJLEVBQUUsRUFESDtJQUVIQyxLQUZHLGlCQUVJQyxHQUZKLEVBRTBCO01BQ3pCLE9BQU8sQ0FBQyxVQUFBQyxRQUFRO1FBQUEsT0FBSUEsUUFBUSxDQUFDRCxHQUFELENBQVo7TUFBQSxDQUFULENBQVA7SUFDSCxDQUpFO0lBS0hFLEtBTEcsbUJBSzBDO01BQUEsa0NBQW5DQyxRQUFtQztRQUFuQ0EsUUFBbUM7TUFBQTs7TUFDekMsT0FBT0EsUUFBUSxDQUFDQyxJQUFU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
153
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDbWQiLCJub25lIiwib2ZNc2ciLCJtc2ciLCJkaXNwYXRjaCIsImJhdGNoIiwiY29tbWFuZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZGdW5jIiwiZWl0aGVyIiwidGFzayIsIm9mU3VjY2VzcyIsIm9mRXJyb3IiLCJhcmdzIiwiYmluZCIsInJlc3VsdCIsImV4IiwicGVyZm9ybSIsImZhbGxiYWNrIiwiYXR0ZW1wdCIsIm9mUHJvbWlzZSIsInRoZW4iLCJkZWZhdWx0RmFsbGJhY2tIYW5kbGVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL0NtZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgb2YgdGhlIGRpc3BhdGNoIGZ1bmN0aW9uLlxuICovXG50eXBlIERpc3BhdGNoPFRNZXNzYWdlPiA9IChtc2c6IFRNZXNzYWdlKSA9PiB2b2lkO1xuXG50eXBlIEZhbGxiYWNrSGFuZGxlciA9IChlcnJvcj86IEVycm9yKSA9PiB2b2lkO1xudHlwZSBTdWI8VE1zZz4gPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNc2c+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcikgPT4gdm9pZDtcblxuLyoqXG4gKiBUeXBlIG9mIGEgY29tbWFuZC5cbiAqL1xudHlwZSBDbWQ8VE1lc3NhZ2U+ID0gU3ViPFRNZXNzYWdlPiBbXTtcblxuLyoqXG4gKiBDb250YWlucyBmdW5jdGlvbnMgdG8gY3JlYXRlIGNvbW1hbmRzLlxuICogQHRlbXBsYXRlIFRNZXNzYWdlIFR5cGUgb2YgdGhlIE1lc3NhZ2UgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIENvbW1hbmQ8VE1lc3NhZ2U+IHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGVtcHR5IGNvbW1hbmQuXG4gICAgICogQGRlcHJlY2F0ZWQgRG8gcmV0dXJuIG5vdGhpbmcgKGB1bmRlZmluZWRgKSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIG5vbmU6IFtdLFxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTWVzc2FnZX0gbXNnIFRoZSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqL1xuICAgIG9mTXNnOiAobXNnOiBUTWVzc2FnZSkgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g6ICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSkgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI6IChzdWI6IFN1YjxUTWVzc2FnZT4pID0+IENtZDxUTWVzc2FnZT4sXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIHNpbXBsZSBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZGdW5jOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm06IDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gYXN5bmMgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mUHJvbWlzZToge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpID0+IENtZDxUTWVzc2FnZT4sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgcGVyZm9ybTogPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNZXNzYWdlPixcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0OiA8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncykgPT4gQ21kPFRNZXNzYWdlPixcbiAgICB9LFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0eXBlZCBpbnN0YW5jZSBvZiB0aGUgQ29tbWFuZCBjbGFzcy5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgTXNnIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNtZDxUTWVzc2FnZT4gKCk6IENvbW1hbmQ8VE1lc3NhZ2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub25lOiBbXSxcbiAgICAgICAgb2ZNc2cgKG1zZzogVE1lc3NhZ2UpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIHJldHVybiBbZGlzcGF0Y2ggPT4gZGlzcGF0Y2gobXNnKV07XG4gICAgICAgIH0sXG4gICAgICAgIGJhdGNoICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvZlN1YiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICByZXR1cm4gW3N1Yl07XG4gICAgICAgIH0sXG4gICAgICAgIG9mRnVuYzoge1xuICAgICAgICAgICAgZWl0aGVyPFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmZvcm08VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0ZW1wdDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb2ZQcm9taXNlOiB7XG4gICAgICAgICAgICBlaXRoZXI8VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmZvcm08VEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZhbGxiYWNrSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYmxhbmtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjazogRmFsbGJhY2tIYW5kbGVyID0gZGVmYXVsdEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0ZW1wdDxUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSB7XG4gICAgRGlzcGF0Y2gs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
@@ -1,17 +1,17 @@
1
- import { InitFunction, UpdateFunction } from "./Types";
2
- import { Message } from "./Init";
3
1
  import React from "react";
2
+ import { Message } from "./Init";
3
+ import { InitFunction, UpdateFunction } from "./Types";
4
4
  /**
5
- * Abstract class for a react class component using the elmish pattern.
5
+ * Abstract class for a react class component using the Elmish pattern.
6
6
  * @export
7
7
  * @abstract
8
8
  * @class ElmComponent
9
9
  * @extends {Component<TProps, TModel>}
10
10
  * @template TModel The type of the model.
11
- * @template TMsg The type of the messages.
11
+ * @template TMessage The type of the messages.
12
12
  * @template TProps The type of the props.
13
13
  */
14
- declare abstract class ElmComponent<TModel, TMsg extends Message, TProps> extends React.Component<TProps> {
14
+ declare abstract class ElmComponent<TModel, TMessage extends Message, TProps> extends React.Component<TProps> {
15
15
  private initCmd;
16
16
  private readonly componentName;
17
17
  private readonly buffer;
@@ -25,7 +25,7 @@ declare abstract class ElmComponent<TModel, TMsg extends Message, TProps> extend
25
25
  * @param name The name of the component.
26
26
  * @memberof ElmComponent
27
27
  */
28
- constructor(props: TProps, init: InitFunction<TProps, TModel, TMsg>, name: string);
28
+ constructor(props: TProps, init: InitFunction<TProps, TModel, TMessage>, name: string);
29
29
  /**
30
30
  * Is called when the component is loaded.
31
31
  * When implementing this method, the base implementation has to be called.
@@ -48,19 +48,19 @@ declare abstract class ElmComponent<TModel, TMsg extends Message, TProps> extend
48
48
  get model(): Readonly<TModel>;
49
49
  /**
50
50
  * Dispatches a message.
51
- * @param {TMsg} msg The message to dispatch.
51
+ * @param {TMessage} msg The message to dispatch.
52
52
  * @memberof ElmComponent
53
53
  */
54
- readonly dispatch: (msg: TMsg) => void;
54
+ readonly dispatch: (msg: TMessage) => void;
55
55
  /**
56
56
  * Function to modify the model based on a message.
57
57
  * @param {TModel} model The current model.
58
- * @param {TMsg} msg The message to process.
58
+ * @param {TMessage} msg The message to process.
59
59
  * @param {TProps} props The props of the component.
60
60
  * @returns The new model (can also be an empty object {}) and an optional new message to dispatch.
61
61
  * @abstract
62
62
  * @memberof ElmComponent
63
63
  */
64
- abstract update: UpdateFunction<TProps, TModel, TMsg>;
64
+ abstract update: UpdateFunction<TProps, TModel, TMessage>;
65
65
  }
66
66
  export { ElmComponent, };
@@ -7,11 +7,11 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.ElmComponent = void 0;
9
9
 
10
- var _Init = require("./Init");
10
+ var _react = _interopRequireDefault(require("react"));
11
11
 
12
- var _fakeInitResult = require("./Testing/fakeInitResult");
12
+ var _Init = require("./Init");
13
13
 
14
- var _react = _interopRequireDefault(require("react"));
14
+ var _fakeOptions = require("./Testing/fakeOptions");
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
17
 
@@ -54,13 +54,13 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
54
54
  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; }
55
55
 
56
56
  /**
57
- * Abstract class for a react class component using the elmish pattern.
57
+ * Abstract class for a react class component using the Elmish pattern.
58
58
  * @export
59
59
  * @abstract
60
60
  * @class ElmComponent
61
61
  * @extends {Component<TProps, TModel>}
62
62
  * @template TModel The type of the model.
63
- * @template TMsg The type of the messages.
63
+ * @template TMessage The type of the messages.
64
64
  * @template TProps The type of the props.
65
65
  */
66
66
  var ElmComponent = /*#__PURE__*/function (_React$Component) {
@@ -153,7 +153,7 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
153
153
 
154
154
  _defineProperty(_assertThisInitialized(_this), "update", void 0);
155
155
 
156
- var fakeOptions = (0, _fakeInitResult.getFakeOptionsOnce)();
156
+ var fakeOptions = (0, _fakeOptions.getFakeOptionsOnce)();
157
157
 
158
158
  if (fakeOptions !== null && fakeOptions !== void 0 && fakeOptions.dispatch) {
159
159
  _this.dispatch = fakeOptions.dispatch;
@@ -226,7 +226,7 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
226
226
  }
227
227
  /**
228
228
  * Dispatches a message.
229
- * @param {TMsg} msg The message to dispatch.
229
+ * @param {TMessage} msg The message to dispatch.
230
230
  * @memberof ElmComponent
231
231
  */
232
232
 
@@ -236,4 +236,4 @@ var ElmComponent = /*#__PURE__*/function (_React$Component) {
236
236
  }(_react["default"].Component);
237
237
 
238
238
  exports.ElmComponent = ElmComponent;
239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbG1Db21wb25lbnQiLCJwcm9wcyIsImluaXQiLCJuYW1lIiwibXNnIiwibW9kZWxIYXNDaGFuZ2VkIiwibW9kZWwiLCJjdXJyZW50TW9kZWwiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibGVuZ3RoIiwicmVlbnRlcmVkIiwiYnVmZmVyIiwicHVzaCIsIm5leHRNc2ciLCJtb2RpZmllZCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiaW5mbyIsImNvbXBvbmVudE5hbWUiLCJkZWJ1ZyIsImRpc3BhdGNoTWlkZGxld2FyZSIsInVwZGF0ZSIsImNtZCIsImV4ZWNDbWQiLCJleCIsImVycm9yIiwic2hpZnQiLCJtb3VudGVkIiwiZm9yY2VVcGRhdGUiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsImRpc3BhdGNoIiwiaW5pdENtZCIsImZvckVhY2giLCJjYWxsIiwiUmVhY3QiLCJDb21wb25lbnQiXSwic291cmNlcyI6WyIuLi9zcmMvRWxtQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluaXRGdW5jdGlvbiwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSBcIi4vVHlwZXNcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIFNlcnZpY2VzIH0gZnJvbSBcIi4vSW5pdFwiO1xuaW1wb3J0IHsgQ21kIH0gZnJvbSBcIi4vQ21kXCI7XG5pbXBvcnQgeyBnZXRGYWtlT3B0aW9uc09uY2UgfSBmcm9tIFwiLi9UZXN0aW5nL2Zha2VJbml0UmVzdWx0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZm9yIGEgcmVhY3QgY2xhc3MgY29tcG9uZW50IHVzaW5nIHRoZSBlbG1pc2ggcGF0dGVybi5cbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIEVsbUNvbXBvbmVudFxuICogQGV4dGVuZHMge0NvbXBvbmVudDxUUHJvcHMsIFRNb2RlbD59XG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTXNnIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlcy5cbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgVGhlIHR5cGUgb2YgdGhlIHByb3BzLlxuICovXG5hYnN0cmFjdCBjbGFzcyBFbG1Db21wb25lbnQ8VE1vZGVsLCBUTXNnIGV4dGVuZHMgTWVzc2FnZSwgVFByb3BzPiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxUUHJvcHM+IHtcbiAgICBwcml2YXRlIGluaXRDbWQ6IE51bGxhYmxlPENtZDxUTXNnPj4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnROYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWZmZXI6IFRNc2cgW10gPSBbXTtcbiAgICBwcml2YXRlIHJlZW50ZXJlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbW91bnRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgY3VycmVudE1vZGVsOiBUTW9kZWw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEVsbUNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSB7KCkgPT4gVE1vZGVsfSBpbml0IFRoZSBpbml0aWFsaXplciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHByb3BzOiBUUHJvcHMsIGluaXQ6IEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1zZz4sIG5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgY29uc3QgZmFrZU9wdGlvbnMgPSBnZXRGYWtlT3B0aW9uc09uY2UoKTtcblxuICAgICAgICBpZiAoZmFrZU9wdGlvbnM/LmRpc3BhdGNoKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoID0gZmFrZU9wdGlvbnMuZGlzcGF0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbbW9kZWwsIGNtZF0gPSBmYWtlT3B0aW9ucz8ubW9kZWwgPyBbZmFrZU9wdGlvbnMubW9kZWwgYXMgVE1vZGVsXSA6IGluaXQodGhpcy5wcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5pbml0Q21kID0gY21kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuICAgICAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRDbWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY0NtZCh0aGlzLmluaXRDbWQpO1xuICAgICAgICAgICAgdGhpcy5pbml0Q21kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY0NtZCAoY21kOiBDbWQ8VE1zZz4pOiB2b2lkIHtcbiAgICAgICAgY21kLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGwodGhpcy5kaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZXJyb3IoZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG1vZGVsLlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEB0eXBlIHtSZWFkb25seTxUTW9kZWw+fVxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1vZGVsICgpOiBSZWFkb25seTxUTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1vZGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BhdGNoZXMgYSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1zZ30gbXNnIFRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoLlxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGF0Y2ggPSAobXNnOiBUTXNnKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGVsSGFzQ2hhbmdlZCA9IChtb2RlbDogUGFydGlhbDxUTW9kZWw+KTogYm9vbGVhbiA9PiBtb2RlbCAhPT0gdGhpcy5jdXJyZW50TW9kZWwgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobW9kZWwpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgaWYgKHRoaXMucmVlbnRlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKG1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBuZXh0TXNnOiBUTXNnIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5pbmZvKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIHRoaXMuY29tcG9uZW50TmFtZSwgbmV4dE1zZy5uYW1lKTtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIHRoaXMuY29tcG9uZW50TmFtZSwgbmV4dE1zZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzLmRpc3BhdGNoTWlkZGxld2FyZShuZXh0TXNnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbbW9kZWwsIGNtZF0gPSB0aGlzLnVwZGF0ZSh0aGlzLmN1cnJlbnRNb2RlbCwgbmV4dE1zZywgdGhpcy5wcm9wcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGVsSGFzQ2hhbmdlZChtb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsID0geyAuLi50aGlzLmN1cnJlbnRNb2RlbCwgLi4ubW9kZWwgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY0NtZChjbWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5lcnJvcihleCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV4dE1zZyA9IHRoaXMuYnVmZmVyLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkVsbVwiLCBcInVwZGF0ZSBtb2RlbCBmb3JcIiwgdGhpcy5jb21wb25lbnROYW1lLCB0aGlzLmN1cnJlbnRNb2RlbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgbW9kZWwgYmFzZWQgb24gYSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1vZGVsfSBtb2RlbCBUaGUgY3VycmVudCBtb2RlbC5cbiAgICAgKiBAcGFyYW0ge1RNc2d9IG1zZyBUaGUgbWVzc2FnZSB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7VFByb3BzfSBwcm9wcyBUaGUgcHJvcHMgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IG1vZGVsIChjYW4gYWxzbyBiZSBhbiBlbXB0eSBvYmplY3Qge30pIGFuZCBhbiBvcHRpb25hbCBuZXcgbWVzc2FnZSB0byBkaXNwYXRjaC5cbiAgICAgKiBAYWJzdHJhY3RcbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IHVwZGF0ZTogVXBkYXRlRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNc2c+O1xufVxuXG5leHBvcnQge1xuICAgIEVsbUNvbXBvbmVudCxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDZUEsWTs7Ozs7RUFRWDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNJLHNCQUFvQkMsS0FBcEIsRUFBbUNDLElBQW5DLEVBQTZFQyxJQUE3RSxFQUEyRjtJQUFBOztJQUFBOztJQUN2RiwwQkFBTUYsS0FBTjs7SUFEdUY7O0lBQUE7O0lBQUEseURBWnhELEVBWXdEOztJQUFBLDREQVh2RSxLQVd1RTs7SUFBQSwwREFWekUsS0FVeUU7O0lBQUE7O0lBQUEsMkRBZ0VoRSxVQUFDRyxHQUFELEVBQXFCO01BQzVDLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsS0FBRDtRQUFBLE9BQXFDQSxLQUFLLEtBQUssTUFBS0MsWUFBZixJQUErQkMsTUFBTSxDQUFDQyxtQkFBUCxDQUEyQkgsS0FBM0IsRUFBa0NJLE1BQWxDLEdBQTJDLENBQS9HO01BQUEsQ0FBeEI7O01BRUEsSUFBSSxNQUFLQyxTQUFULEVBQW9CO1FBQ2hCLE1BQUtDLE1BQUwsQ0FBWUMsSUFBWixDQUFpQlQsR0FBakI7TUFDSCxDQUZELE1BRU87UUFDSCxNQUFLTyxTQUFMLEdBQWlCLElBQWpCO1FBRUEsSUFBSUcsT0FBeUIsR0FBR1YsR0FBaEM7UUFDQSxJQUFJVyxRQUFRLEdBQUcsS0FBZjs7UUFFQSxPQUFPRCxPQUFQLEVBQWdCO1VBQUE7O1VBQ1osb0JBQUFFLGNBQUEsQ0FBU0MsTUFBVCxzRUFBaUJDLElBQWpCLENBQXNCLEtBQXRCLEVBQTZCLGNBQTdCLEVBQTZDLE1BQUtDLGFBQWxELEVBQWlFTCxPQUFPLENBQUNYLElBQXpFO1VBQ0EscUJBQUFhLGNBQUEsQ0FBU0MsTUFBVCx3RUFBaUJHLEtBQWpCLENBQXVCLEtBQXZCLEVBQThCLGNBQTlCLEVBQThDLE1BQUtELGFBQW5ELEVBQWtFTCxPQUFsRTs7VUFFQSxJQUFJRSxjQUFBLENBQVNLLGtCQUFiLEVBQWlDO1lBQzdCTCxjQUFBLENBQVNLLGtCQUFULENBQTRCUCxPQUE1QjtVQUNIOztVQUVELElBQUk7WUFDQSxtQkFBcUIsTUFBS1EsTUFBTCxDQUFZLE1BQUtmLFlBQWpCLEVBQStCTyxPQUEvQixFQUF3QyxNQUFLYixLQUE3QyxDQUFyQjtZQUFBO1lBQUEsSUFBT0ssS0FBUDtZQUFBLElBQWNpQixHQUFkOztZQUVBLElBQUlsQixlQUFlLENBQUNDLEtBQUQsQ0FBbkIsRUFBNEI7Y0FDeEIsTUFBS0MsWUFBTCxtQ0FBeUIsTUFBS0EsWUFBOUIsR0FBK0NELEtBQS9DO2NBQ0FTLFFBQVEsR0FBRyxJQUFYO1lBQ0g7O1lBRUQsSUFBSVEsR0FBSixFQUFTO2NBQ0wsTUFBS0MsT0FBTCxDQUFhRCxHQUFiO1lBQ0g7VUFDSixDQVhELENBV0UsT0FBT0UsRUFBUCxFQUFvQjtZQUFBOztZQUNsQixxQkFBQVQsY0FBQSxDQUFTQyxNQUFULHdFQUFpQlMsS0FBakIsQ0FBdUJELEVBQXZCO1VBQ0g7O1VBRURYLE9BQU8sR0FBRyxNQUFLRixNQUFMLENBQVllLEtBQVosRUFBVjtRQUNIOztRQUNELE1BQUtoQixTQUFMLEdBQWlCLEtBQWpCOztRQUVBLElBQUksTUFBS2lCLE9BQUwsSUFBZ0JiLFFBQXBCLEVBQThCO1VBQUE7O1VBQzFCLHFCQUFBQyxjQUFBLENBQVNDLE1BQVQsd0VBQWlCRyxLQUFqQixDQUF1QixLQUF2QixFQUE4QixrQkFBOUIsRUFBa0QsTUFBS0QsYUFBdkQsRUFBc0UsTUFBS1osWUFBM0U7O1VBQ0EsTUFBS3NCLFdBQUw7UUFDSDtNQUNKO0lBQ0osQ0EzRzBGOztJQUFBOztJQUd2RixJQUFNQyxXQUFXLEdBQUcsSUFBQUMsa0NBQUEsR0FBcEI7O0lBRUEsSUFBSUQsV0FBSixhQUFJQSxXQUFKLGVBQUlBLFdBQVcsQ0FBRUUsUUFBakIsRUFBMkI7TUFDdkIsTUFBS0EsUUFBTCxHQUFnQkYsV0FBVyxDQUFDRSxRQUE1QjtJQUNIOztJQUVELFdBQXFCRixXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLElBQUFBLFdBQVcsQ0FBRXhCLEtBQWIsR0FBcUIsQ0FBQ3dCLFdBQVcsQ0FBQ3hCLEtBQWIsQ0FBckIsR0FBcURKLElBQUksQ0FBQyxNQUFLRCxLQUFOLENBQTlFO0lBQUE7SUFBQSxJQUFPSyxNQUFQO0lBQUEsSUFBY2lCLElBQWQ7O0lBRUEsTUFBS0osYUFBTCxHQUFxQmhCLElBQXJCO0lBQ0EsTUFBS0ksWUFBTCxHQUFvQkQsTUFBcEI7SUFDQSxNQUFLMkIsT0FBTCxHQUFlVixJQUFmO0lBYnVGO0VBYzFGO0VBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7Ozs7V0FDSSw2QkFBa0M7TUFDOUIsS0FBS0ssT0FBTCxHQUFlLElBQWY7O01BRUEsSUFBSSxLQUFLSyxPQUFULEVBQWtCO1FBQ2QsS0FBS1QsT0FBTCxDQUFhLEtBQUtTLE9BQWxCO1FBQ0EsS0FBS0EsT0FBTCxHQUFlLElBQWY7TUFDSDtJQUNKO0lBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7OztXQUNJLGdDQUFxQztNQUNqQyxLQUFLTCxPQUFMLEdBQWUsS0FBZjtJQUNIOzs7V0FFRCxpQkFBaUJMLEdBQWpCLEVBQXVDO01BQUE7O01BQ25DQSxHQUFHLENBQUNXLE9BQUosQ0FBWSxVQUFBQyxJQUFJLEVBQUk7UUFDaEIsSUFBSTtVQUNBQSxJQUFJLENBQUMsTUFBSSxDQUFDSCxRQUFOLENBQUo7UUFDSCxDQUZELENBRUUsT0FBT1AsRUFBUCxFQUFvQjtVQUFBOztVQUNsQixxQkFBQVQsY0FBQSxDQUFTQyxNQUFULHdFQUFpQlMsS0FBakIsQ0FBdUJELEVBQXZCO1FBQ0g7TUFDSixDQU5EO0lBT0g7SUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7U0FDSSxlQUFzQztNQUNsQyxPQUFPLEtBQUtsQixZQUFaO0lBQ0g7SUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7OztFQTlFMEU2QixpQkFBQSxDQUFNQyxTIn0=
239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbG1Db21wb25lbnQiLCJwcm9wcyIsImluaXQiLCJuYW1lIiwibXNnIiwibW9kZWxIYXNDaGFuZ2VkIiwibW9kZWwiLCJjdXJyZW50TW9kZWwiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibGVuZ3RoIiwicmVlbnRlcmVkIiwiYnVmZmVyIiwicHVzaCIsIm5leHRNc2ciLCJtb2RpZmllZCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiaW5mbyIsImNvbXBvbmVudE5hbWUiLCJkZWJ1ZyIsImRpc3BhdGNoTWlkZGxld2FyZSIsInVwZGF0ZSIsImNtZCIsImV4ZWNDbWQiLCJleCIsImVycm9yIiwic2hpZnQiLCJtb3VudGVkIiwiZm9yY2VVcGRhdGUiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsImRpc3BhdGNoIiwiaW5pdENtZCIsImZvckVhY2giLCJjYWxsIiwiUmVhY3QiLCJDb21wb25lbnQiXSwic291cmNlcyI6WyIuLi9zcmMvRWxtQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENtZCB9IGZyb20gXCIuL0NtZFwiO1xuaW1wb3J0IHsgTWVzc2FnZSwgU2VydmljZXMgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBnZXRGYWtlT3B0aW9uc09uY2UgfSBmcm9tIFwiLi9UZXN0aW5nL2Zha2VPcHRpb25zXCI7XG5pbXBvcnQgeyBJbml0RnVuY3Rpb24sIE51bGxhYmxlLCBVcGRhdGVGdW5jdGlvbiB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZm9yIGEgcmVhY3QgY2xhc3MgY29tcG9uZW50IHVzaW5nIHRoZSBFbG1pc2ggcGF0dGVybi5cbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIEVsbUNvbXBvbmVudFxuICogQGV4dGVuZHMge0NvbXBvbmVudDxUUHJvcHMsIFRNb2RlbD59XG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRWxtQ29tcG9uZW50PFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUUHJvcHM+IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFRQcm9wcz4ge1xuICAgIHByaXZhdGUgaW5pdENtZDogTnVsbGFibGU8Q21kPFRNZXNzYWdlPj4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnROYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWZmZXI6IFRNZXNzYWdlIFtdID0gW107XG4gICAgcHJpdmF0ZSByZWVudGVyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1vdW50ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRNb2RlbDogVE1vZGVsO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBFbG1Db21wb25lbnQuXG4gICAgICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0geygpID0+IFRNb2RlbH0gaW5pdCBUaGUgaW5pdGlhbGl6ZXIgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwcm9wczogVFByb3BzLCBpbml0OiBJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICBjb25zdCBmYWtlT3B0aW9ucyA9IGdldEZha2VPcHRpb25zT25jZSgpO1xuXG4gICAgICAgIGlmIChmYWtlT3B0aW9ucz8uZGlzcGF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2ggPSBmYWtlT3B0aW9ucy5kaXNwYXRjaDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFttb2RlbCwgY21kXSA9IGZha2VPcHRpb25zPy5tb2RlbCA/IFtmYWtlT3B0aW9ucy5tb2RlbCBhcyBUTW9kZWxdIDogaW5pdCh0aGlzLnByb3BzKTtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmluaXRDbWQgPSBjbWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQuXG4gICAgICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5pdENtZCkge1xuICAgICAgICAgICAgdGhpcy5leGVjQ21kKHRoaXMuaW5pdENtZCk7XG4gICAgICAgICAgICB0aGlzLmluaXRDbWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIGJlZm9yZSB1bmxvYWRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBXaGVuIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGNhbGxlZC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGNvbXBvbmVudFdpbGxVbm1vdW50ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleGVjQ21kIChjbWQ6IENtZDxUTWVzc2FnZT4pOiB2b2lkIHtcbiAgICAgICAgY21kLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGwodGhpcy5kaXNwYXRjaCk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZXJyb3IoZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG1vZGVsLlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEB0eXBlIHtSZWFkb25seTxUTW9kZWw+fVxuICAgICAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1vZGVsICgpOiBSZWFkb25seTxUTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1vZGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BhdGNoZXMgYSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBkaXNwYXRjaC5cbiAgICAgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BhdGNoID0gKG1zZzogVE1lc3NhZ2UpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW9kZWxIYXNDaGFuZ2VkID0gKG1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4pOiBib29sZWFuID0+IG1vZGVsICE9PSB0aGlzLmN1cnJlbnRNb2RlbCAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtb2RlbCkubGVuZ3RoID4gMDtcblxuICAgICAgICBpZiAodGhpcy5yZWVudGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyLnB1c2gobXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVlbnRlcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgbGV0IG5leHRNc2c6IFRNZXNzYWdlIHwgdW5kZWZpbmVkID0gbXNnO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHdoaWxlIChuZXh0TXNnKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5pbmZvKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIHRoaXMuY29tcG9uZW50TmFtZSwgbmV4dE1zZy5uYW1lKTtcbiAgICAgICAgICAgICAgICBTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiRWxtXCIsIFwibWVzc2FnZSBmcm9tXCIsIHRoaXMuY29tcG9uZW50TmFtZSwgbmV4dE1zZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzLmRpc3BhdGNoTWlkZGxld2FyZShuZXh0TXNnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbbW9kZWwsIGNtZF0gPSB0aGlzLnVwZGF0ZSh0aGlzLmN1cnJlbnRNb2RlbCwgbmV4dE1zZywgdGhpcy5wcm9wcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGVsSGFzQ2hhbmdlZChtb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsID0geyAuLi50aGlzLmN1cnJlbnRNb2RlbCwgLi4ubW9kZWwgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY0NtZChjbWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5lcnJvcihleCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV4dE1zZyA9IHRoaXMuYnVmZmVyLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkVsbVwiLCBcInVwZGF0ZSBtb2RlbCBmb3JcIiwgdGhpcy5jb21wb25lbnROYW1lLCB0aGlzLmN1cnJlbnRNb2RlbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgbW9kZWwgYmFzZWQgb24gYSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1vZGVsfSBtb2RlbCBUaGUgY3VycmVudCBtb2RlbC5cbiAgICAgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIG1lc3NhZ2UgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBtb2RlbCAoY2FuIGFsc28gYmUgYW4gZW1wdHkgb2JqZWN0IHt9KSBhbmQgYW4gb3B0aW9uYWwgbmV3IG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG4gICAgICogQGFic3RyYWN0XG4gICAgICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG59XG5cbmV4cG9ydCB7XG4gICAgRWxtQ29tcG9uZW50LFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNlQSxZOzs7OztFQVFYO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0ksc0JBQW9CQyxLQUFwQixFQUFtQ0MsSUFBbkMsRUFBaUZDLElBQWpGLEVBQStGO0lBQUE7O0lBQUE7O0lBQzNGLDBCQUFNRixLQUFOOztJQUQyRjs7SUFBQTs7SUFBQSx5REFaeEQsRUFZd0Q7O0lBQUEsNERBWDNFLEtBVzJFOztJQUFBLDBEQVY3RSxLQVU2RTs7SUFBQTs7SUFBQSwyREFnRXBFLFVBQUNHLEdBQUQsRUFBeUI7TUFDaEQsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDQyxLQUFEO1FBQUEsT0FBcUNBLEtBQUssS0FBSyxNQUFLQyxZQUFmLElBQStCQyxNQUFNLENBQUNDLG1CQUFQLENBQTJCSCxLQUEzQixFQUFrQ0ksTUFBbEMsR0FBMkMsQ0FBL0c7TUFBQSxDQUF4Qjs7TUFFQSxJQUFJLE1BQUtDLFNBQVQsRUFBb0I7UUFDaEIsTUFBS0MsTUFBTCxDQUFZQyxJQUFaLENBQWlCVCxHQUFqQjtNQUNILENBRkQsTUFFTztRQUNILE1BQUtPLFNBQUwsR0FBaUIsSUFBakI7UUFFQSxJQUFJRyxPQUE2QixHQUFHVixHQUFwQztRQUNBLElBQUlXLFFBQVEsR0FBRyxLQUFmOztRQUVBLE9BQU9ELE9BQVAsRUFBZ0I7VUFBQTs7VUFDWixvQkFBQUUsY0FBQSxDQUFTQyxNQUFULHNFQUFpQkMs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
@@ -28,6 +28,6 @@ declare function errorHandler<TModel, TMessage>(): {
28
28
  * Calls the error handling middleware if specified.
29
29
  * @param {Error} error The error.
30
30
  */
31
- declare function handleError<TModel, TMsg>(error: Error): UpdateReturnType<TModel, TMsg>;
31
+ declare function handleError<TModel, TMessage>(error: Error): UpdateReturnType<TModel, TMessage>;
32
32
  export type { ErrorMessage };
33
33
  export { errorMsg, errorHandler, handleError, };
@@ -55,4 +55,4 @@ function handleError(error) {
55
55
  (_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 ? void 0 : _Services$logger.error(error);
56
56
  return [{}];
57
57
  }
58
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcnJvck1zZyIsImVycm9yIiwibmFtZSIsImVycm9ySGFuZGxlciIsImhhbmRsZUVycm9yIiwiU2VydmljZXMiLCJlcnJvck1pZGRsZXdhcmUiLCJsb2dnZXIiXSwic291cmNlcyI6WyIuLi9zcmMvRXJyb3JIYW5kbGluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG4vKipcbiAqIEVycm9yIG1lc3NhZ2Ugb2JqZWN0LlxuICogQWRkIHRoaXMgdG8geW91ciBNZXNzYWdlIHR5cGUuXG4gKi9cbmludGVyZmFjZSBFcnJvck1lc3NhZ2Uge1xuICAgIG5hbWU6IFwiZXJyb3JcIixcbiAgICBlcnJvcjogRXJyb3IsXG59XG5cbi8qKlxuICogVGhpcyBvYmplY3QgY29udGFpbnMgdGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBlcnJvciBtZXNzYWdlLlxuICogU3ByZWFkIHRoaXMgaW50byB5b3VyIE1zZyBvYmplY3QuXG4gKi9cbmNvbnN0IGVycm9yTXNnID0ge1xuICAgIGVycm9yOiAoZXJyb3I6IEVycm9yKTogRXJyb3JNZXNzYWdlID0+ICh7IG5hbWU6IFwiZXJyb3JcIiwgZXJyb3IgfSksXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBpbiBhbiB1cGRhdGUgbWFwLlxuICogU3ByZWFkIHRoaXMgaW50byB5b3VyIGBVcGRhdGVNYXBgLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgYW4gZXJyb3IgaGFuZGxlciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyPFRNb2RlbCwgVE1lc3NhZ2U+ICgpOiB7IGVycm9yOiAobXNnOiBFcnJvck1lc3NhZ2UpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZXJyb3IgKHsgZXJyb3IgfSkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYW4gZXJyb3IuXG4gKiBMb2dzIHRoZSBlcnJvciBpZiBhIExvZ2dlciB3YXMgc3BlY2lmaWVkLlxuICogQ2FsbHMgdGhlIGVycm9yIGhhbmRsaW5nIG1pZGRsZXdhcmUgaWYgc3BlY2lmaWVkLlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgVGhlIGVycm9yLlxuICovXG5mdW5jdGlvbiBoYW5kbGVFcnJvcjxUTW9kZWwsIFRNc2c+IChlcnJvcjogRXJyb3IpOiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1zZz4ge1xuICAgIGlmIChTZXJ2aWNlcy5lcnJvck1pZGRsZXdhcmUpIHtcbiAgICAgICAgU2VydmljZXMuZXJyb3JNaWRkbGV3YXJlKGVycm9yKTtcbiAgICB9XG4gICAgU2VydmljZXMubG9nZ2VyPy5lcnJvcihlcnJvcik7XG5cbiAgICByZXR1cm4gW3t9XTtcbn1cblxuZXhwb3J0IHR5cGUgeyBFcnJvck1lc3NhZ2UgfTtcblxuZXhwb3J0IHtcbiAgICBlcnJvck1zZyxcbiAgICBlcnJvckhhbmRsZXIsXG4gICAgaGFuZGxlRXJyb3IsXG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxRQUFRLEdBQUc7RUFDYkMsS0FBSyxFQUFFLGVBQUNBLE1BQUQ7SUFBQSxPQUFpQztNQUFFQyxJQUFJLEVBQUUsT0FBUjtNQUFpQkQsS0FBSyxFQUFMQTtJQUFqQixDQUFqQztFQUFBO0FBRE0sQ0FBakI7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBQ0EsU0FBU0UsWUFBVCxHQUFpSDtFQUM3RyxPQUFPO0lBQ0hGLEtBREcsdUJBQ2U7TUFBQSxJQUFUQSxLQUFTLFFBQVRBLEtBQVM7TUFDZCxPQUFPRyxXQUFXLENBQUNILEtBQUQsQ0FBbEI7SUFDSDtFQUhFLENBQVA7QUFLSDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU0csV0FBVCxDQUFvQ0gsS0FBcEMsRUFBa0Y7RUFBQTs7RUFDOUUsSUFBSUksY0FBQSxDQUFTQyxlQUFiLEVBQThCO0lBQzFCRCxjQUFBLENBQVNDLGVBQVQsQ0FBeUJMLEtBQXpCO0VBQ0g7O0VBQ0Qsb0JBQUFJLGNBQUEsQ0FBU0UsTUFBVCxzRUFBaUJOLEtBQWpCLENBQXVCQSxLQUF2QjtFQUVBLE9BQU8sQ0FBQyxFQUFELENBQVA7QUFDSCJ9
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcnJvck1zZyIsImVycm9yIiwibmFtZSIsImVycm9ySGFuZGxlciIsImhhbmRsZUVycm9yIiwiU2VydmljZXMiLCJlcnJvck1pZGRsZXdhcmUiLCJsb2dnZXIiXSwic291cmNlcyI6WyIuLi9zcmMvRXJyb3JIYW5kbGluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG4vKipcbiAqIEVycm9yIG1lc3NhZ2Ugb2JqZWN0LlxuICogQWRkIHRoaXMgdG8geW91ciBNZXNzYWdlIHR5cGUuXG4gKi9cbmludGVyZmFjZSBFcnJvck1lc3NhZ2Uge1xuICAgIG5hbWU6IFwiZXJyb3JcIixcbiAgICBlcnJvcjogRXJyb3IsXG59XG5cbi8qKlxuICogVGhpcyBvYmplY3QgY29udGFpbnMgdGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBlcnJvciBtZXNzYWdlLlxuICogU3ByZWFkIHRoaXMgaW50byB5b3VyIE1zZyBvYmplY3QuXG4gKi9cbmNvbnN0IGVycm9yTXNnID0ge1xuICAgIGVycm9yOiAoZXJyb3I6IEVycm9yKTogRXJyb3JNZXNzYWdlID0+ICh7IG5hbWU6IFwiZXJyb3JcIiwgZXJyb3IgfSksXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBpbiBhbiB1cGRhdGUgbWFwLlxuICogU3ByZWFkIHRoaXMgaW50byB5b3VyIGBVcGRhdGVNYXBgLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgYW4gZXJyb3IgaGFuZGxlciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyPFRNb2RlbCwgVE1lc3NhZ2U+ICgpOiB7IGVycm9yOiAobXNnOiBFcnJvck1lc3NhZ2UpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZXJyb3IgKHsgZXJyb3IgfSkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYW4gZXJyb3IuXG4gKiBMb2dzIHRoZSBlcnJvciBpZiBhIExvZ2dlciB3YXMgc3BlY2lmaWVkLlxuICogQ2FsbHMgdGhlIGVycm9yIGhhbmRsaW5nIG1pZGRsZXdhcmUgaWYgc3BlY2lmaWVkLlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgVGhlIGVycm9yLlxuICovXG5mdW5jdGlvbiBoYW5kbGVFcnJvcjxUTW9kZWwsIFRNZXNzYWdlPiAoZXJyb3I6IEVycm9yKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG4gICAgaWYgKFNlcnZpY2VzLmVycm9yTWlkZGxld2FyZSkge1xuICAgICAgICBTZXJ2aWNlcy5lcnJvck1pZGRsZXdhcmUoZXJyb3IpO1xuICAgIH1cbiAgICBTZXJ2aWNlcy5sb2dnZXI/LmVycm9yKGVycm9yKTtcblxuICAgIHJldHVybiBbe31dO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yTWVzc2FnZSB9O1xuXG5leHBvcnQge1xuICAgIGVycm9yTXNnLFxuICAgIGVycm9ySGFuZGxlcixcbiAgICBoYW5kbGVFcnJvcixcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLFFBQVEsR0FBRztFQUNiQyxLQUFLLEVBQUUsZUFBQ0EsTUFBRDtJQUFBLE9BQWlDO01BQUVDLElBQUksRUFBRSxPQUFSO01BQWlCRCxLQUFLLEVBQUxBO0lBQWpCLENBQWpDO0VBQUE7QUFETSxDQUFqQjtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFDQSxTQUFTRSxZQUFULEdBQWlIO0VBQzdHLE9BQU87SUFDSEYsS0FERyx1QkFDZTtNQUFBLElBQVRBLEtBQVMsUUFBVEEsS0FBUztNQUNkLE9BQU9HLFdBQVcsQ0FBQ0gsS0FBRCxDQUFsQjtJQUNIO0VBSEUsQ0FBUDtBQUtIO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxTQUFTRyxXQUFULENBQXdDSCxLQUF4QyxFQUEwRjtFQUFBOztFQUN0RixJQUFJSSxjQUFBLENBQVNDLGVBQWIsRUFBOEI7SUFDMUJELGNBQUEsQ0FBU0MsZUFBVCxDQUF5QkwsS0FBekI7RUFDSDs7RUFDRCxvQkFBQUksY0FBQSxDQUFTRSxNQUFULHNFQUFpQk4sS0FBakIsQ0FBdUJBLEtBQXZCO0VBRUEsT0FBTyxDQUFDLEVBQUQsQ0FBUDtBQUNIIn0=
package/dist/Init.d.ts CHANGED
@@ -9,11 +9,28 @@ interface Message {
9
9
  declare type ErrorMiddlewareFunc = (error: Error) => void;
10
10
  declare type DispatchMiddlewareFunc = (msg: Message) => void;
11
11
  interface ElmOptions {
12
+ /**
13
+ * The logger to use for logging called messages and updated models.
14
+ * @type {Logger}
15
+ */
12
16
  logger?: Logger;
17
+ /**
18
+ * Middleware to call when error messages are handled by the `handleError` function.
19
+ * @type {ErrorMiddlewareFunc}
20
+ */
13
21
  errorMiddleware?: ErrorMiddlewareFunc;
22
+ /**
23
+ * Middleware to call for every processed message.
24
+ * @type {DispatchMiddlewareFunc}
25
+ */
14
26
  dispatchMiddleware?: DispatchMiddlewareFunc;
15
27
  }
16
28
  declare const Services: ElmOptions;
29
+ /**
30
+ * This initializes the Elmish module.
31
+ * You only need to call this function if you want to set some of the options.
32
+ * @param {ElmOptions} options
33
+ */
17
34
  declare function init(options: ElmOptions): void;
18
35
  export type { Logger, Message, ErrorMiddlewareFunc, DispatchMiddlewareFunc, ElmOptions, };
19
36
  export { Services, init, };
package/dist/Init.js CHANGED
@@ -10,6 +10,12 @@ var Services = {
10
10
  errorMiddleware: undefined,
11
11
  dispatchMiddleware: undefined
12
12
  };
13
+ /**
14
+ * This initializes the Elmish module.
15
+ * You only need to call this function if you want to set some of the options.
16
+ * @param {ElmOptions} options
17
+ */
18
+
13
19
  exports.Services = Services;
14
20
 
15
21
  function init(options) {
@@ -17,4 +23,4 @@ function init(options) {
17
23
  Services.errorMiddleware = options.errorMiddleware;
18
24
  Services.dispatchMiddleware = options.dispatchMiddleware;
19
25
  }
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXJ2aWNlcyIsImxvZ2dlciIsInVuZGVmaW5lZCIsImVycm9yTWlkZGxld2FyZSIsImRpc3BhdGNoTWlkZGxld2FyZSIsImluaXQiLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vc3JjL0luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIExvZ2dlciB7XG4gICAgZGVidWc6ICguLi5hcmdzOiB1bmtub3duIFtdKSA9PiB2b2lkLFxuICAgIGluZm86ICguLi5hcmdzOiB1bmtub3duIFtdKSA9PiB2b2lkLFxuICAgIGVycm9yOiAoLi4uYXJnczogdW5rbm93biBbXSkgPT4gdm9pZCxcbn1cblxuaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICAgIG5hbWU6IHN0cmluZyB8IHN5bWJvbCxcbn1cblxudHlwZSBFcnJvck1pZGRsZXdhcmVGdW5jID0gKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbnR5cGUgRGlzcGF0Y2hNaWRkbGV3YXJlRnVuYyA9IChtc2c6IE1lc3NhZ2UpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBFbG1PcHRpb25zIHtcbiAgICBsb2dnZXI/OiBMb2dnZXIsXG4gICAgZXJyb3JNaWRkbGV3YXJlPzogRXJyb3JNaWRkbGV3YXJlRnVuYyxcbiAgICBkaXNwYXRjaE1pZGRsZXdhcmU/OiBEaXNwYXRjaE1pZGRsZXdhcmVGdW5jLFxufVxuXG5jb25zdCBTZXJ2aWNlczogRWxtT3B0aW9ucyA9IHtcbiAgICBsb2dnZXI6IHVuZGVmaW5lZCxcbiAgICBlcnJvck1pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbiAgICBkaXNwYXRjaE1pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbn07XG5cbmZ1bmN0aW9uIGluaXQgKG9wdGlvbnM6IEVsbU9wdGlvbnMpOiB2b2lkIHtcbiAgICBTZXJ2aWNlcy5sb2dnZXIgPSBvcHRpb25zLmxvZ2dlcjtcbiAgICBTZXJ2aWNlcy5lcnJvck1pZGRsZXdhcmUgPSBvcHRpb25zLmVycm9yTWlkZGxld2FyZTtcbiAgICBTZXJ2aWNlcy5kaXNwYXRjaE1pZGRsZXdhcmUgPSBvcHRpb25zLmRpc3BhdGNoTWlkZGxld2FyZTtcbn1cblxuZXhwb3J0IHR5cGUge1xuICAgIExvZ2dlcixcbiAgICBNZXNzYWdlLFxuICAgIEVycm9yTWlkZGxld2FyZUZ1bmMsXG4gICAgRGlzcGF0Y2hNaWRkbGV3YXJlRnVuYyxcbiAgICBFbG1PcHRpb25zLFxufTtcblxuZXhwb3J0IHtcbiAgICBTZXJ2aWNlcyxcbiAgICBpbml0LFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFtQkEsSUFBTUEsUUFBb0IsR0FBRztFQUN6QkMsTUFBTSxFQUFFQyxTQURpQjtFQUV6QkMsZUFBZSxFQUFFRCxTQUZRO0VBR3pCRSxrQkFBa0IsRUFBRUY7QUFISyxDQUE3Qjs7O0FBTUEsU0FBU0csSUFBVCxDQUFlQyxPQUFmLEVBQTBDO0VBQ3RDTixRQUFRLENBQUNDLE1BQVQsR0FBa0JLLE9BQU8sQ0FBQ0wsTUFBMUI7RUFDQUQsUUFBUSxDQUFDRyxlQUFULEdBQTJCRyxPQUFPLENBQUNILGVBQW5DO0VBQ0FILFFBQVEsQ0FBQ0ksa0JBQVQsR0FBOEJFLE9BQU8sQ0FBQ0Ysa0JBQXRDO0FBQ0gifQ==
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXJ2aWNlcyIsImxvZ2dlciIsInVuZGVmaW5lZCIsImVycm9yTWlkZGxld2FyZSIsImRpc3BhdGNoTWlkZGxld2FyZSIsImluaXQiLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vc3JjL0luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIExvZ2dlciB7XG4gICAgZGVidWc6ICguLi5hcmdzOiB1bmtub3duIFtdKSA9PiB2b2lkLFxuICAgIGluZm86ICguLi5hcmdzOiB1bmtub3duIFtdKSA9PiB2b2lkLFxuICAgIGVycm9yOiAoLi4uYXJnczogdW5rbm93biBbXSkgPT4gdm9pZCxcbn1cblxuaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICAgIG5hbWU6IHN0cmluZyB8IHN5bWJvbCxcbn1cblxudHlwZSBFcnJvck1pZGRsZXdhcmVGdW5jID0gKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbnR5cGUgRGlzcGF0Y2hNaWRkbGV3YXJlRnVuYyA9IChtc2c6IE1lc3NhZ2UpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBFbG1PcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbG9nZ2VyIHRvIHVzZSBmb3IgbG9nZ2luZyBjYWxsZWQgbWVzc2FnZXMgYW5kIHVwZGF0ZWQgbW9kZWxzLlxuICAgICAqIEB0eXBlIHtMb2dnZXJ9XG4gICAgICovXG4gICAgbG9nZ2VyPzogTG9nZ2VyLFxuXG4gICAgLyoqXG4gICAgICogTWlkZGxld2FyZSB0byBjYWxsIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGBoYW5kbGVFcnJvcmAgZnVuY3Rpb24uXG4gICAgICogQHR5cGUge0Vycm9yTWlkZGxld2FyZUZ1bmN9XG4gICAgICovXG4gICAgZXJyb3JNaWRkbGV3YXJlPzogRXJyb3JNaWRkbGV3YXJlRnVuYyxcblxuICAgIC8qKlxuICAgICAqIE1pZGRsZXdhcmUgdG8gY2FsbCBmb3IgZXZlcnkgcHJvY2Vzc2VkIG1lc3NhZ2UuXG4gICAgICogQHR5cGUge0Rpc3BhdGNoTWlkZGxld2FyZUZ1bmN9XG4gICAgICovXG4gICAgZGlzcGF0Y2hNaWRkbGV3YXJlPzogRGlzcGF0Y2hNaWRkbGV3YXJlRnVuYyxcbn1cblxuY29uc3QgU2VydmljZXM6IEVsbU9wdGlvbnMgPSB7XG4gICAgbG9nZ2VyOiB1bmRlZmluZWQsXG4gICAgZXJyb3JNaWRkbGV3YXJlOiB1bmRlZmluZWQsXG4gICAgZGlzcGF0Y2hNaWRkbGV3YXJlOiB1bmRlZmluZWQsXG59O1xuXG4vKipcbiAqIFRoaXMgaW5pdGlhbGl6ZXMgdGhlIEVsbWlzaCBtb2R1bGUuXG4gKiBZb3Ugb25seSBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB5b3Ugd2FudCB0byBzZXQgc29tZSBvZiB0aGUgb3B0aW9ucy5cbiAqIEBwYXJhbSB7RWxtT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBpbml0IChvcHRpb25zOiBFbG1PcHRpb25zKTogdm9pZCB7XG4gICAgU2VydmljZXMubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXI7XG4gICAgU2VydmljZXMuZXJyb3JNaWRkbGV3YXJlID0gb3B0aW9ucy5lcnJvck1pZGRsZXdhcmU7XG4gICAgU2VydmljZXMuZGlzcGF0Y2hNaWRkbGV3YXJlID0gb3B0aW9ucy5kaXNwYXRjaE1pZGRsZXdhcmU7XG59XG5cbmV4cG9ydCB0eXBlIHtcbiAgICBMb2dnZXIsXG4gICAgTWVzc2FnZSxcbiAgICBFcnJvck1pZGRsZXdhcmVGdW5jLFxuICAgIERpc3BhdGNoTWlkZGxld2FyZUZ1bmMsXG4gICAgRWxtT3B0aW9ucyxcbn07XG5cbmV4cG9ydCB7XG4gICAgU2VydmljZXMsXG4gICAgaW5pdCxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBaUNBLElBQU1BLFFBQW9CLEdBQUc7RUFDekJDLE1BQU0sRUFBRUMsU0FEaUI7RUFFekJDLGVBQWUsRUFBRUQsU0FGUTtFQUd6QkUsa0JBQWtCLEVBQUVGO0FBSEssQ0FBN0I7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBQ0EsU0FBU0csSUFBVCxDQUFlQyxPQUFmLEVBQTBDO0VBQ3RDTixRQUFRLENBQUNDLE1BQVQsR0FBa0JLLE9BQU8sQ0FBQ0wsTUFBMUI7RUFDQUQsUUFBUSxDQUFDRyxlQUFULEdBQTJCRyxPQUFPLENBQUNILGVBQW5DO0VBQ0FILFFBQVEsQ0FBQ0ksa0JBQVQsR0FBOEJFLE9BQU8sQ0FBQ0Ysa0JBQXRDO0FBQ0gifQ==