@nice-code/action 0.2.1 → 0.2.3
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/build/index.js +1128 -1112
- package/build/react-query/index.js +10 -9
- package/build/types/ActionDefinition/Action/Action.combined.types.d.ts +8 -8
- package/build/types/ActionDefinition/Action/ActionBase.d.ts +2 -2
- package/build/types/ActionDefinition/Action/ActionBase.types.d.ts +4 -4
- package/build/types/ActionDefinition/Action/Context/ActionContext.d.ts +5 -5
- package/build/types/ActionDefinition/Action/Context/ActionContext.types.d.ts +2 -2
- package/build/types/ActionDefinition/Action/Core/ActionCore.d.ts +6 -6
- package/build/types/ActionDefinition/Action/Core/ActionCore.types.d.ts +2 -2
- package/build/types/ActionDefinition/Action/Payload/ActionPayload.d.ts +1 -1
- package/build/types/ActionDefinition/Action/Payload/ActionPayload.types.d.ts +14 -13
- package/build/types/ActionDefinition/Action/Payload/ActionPayload_Progress.d.ts +1 -1
- package/build/types/ActionDefinition/Action/Payload/ActionPayload_Request.d.ts +6 -6
- package/build/types/ActionDefinition/Action/Payload/ActionPayload_Result.d.ts +3 -3
- package/build/types/ActionDefinition/Action/RunningAction.d.ts +1 -1
- package/build/types/ActionDefinition/Action/RunningAction.types.d.ts +16 -16
- package/build/types/ActionDefinition/Domain/ActionDomain.d.ts +17 -7
- package/build/types/ActionDefinition/Domain/ActionDomain.types.d.ts +9 -6
- package/build/types/ActionDefinition/Domain/ActionDomainBase.d.ts +3 -3
- package/build/types/ActionDefinition/Domain/ActionRootDomain.d.ts +1 -1
- package/build/types/ActionRuntime/ActionDomainManager.d.ts +1 -1
- package/build/types/ActionRuntime/ActionRuntime.d.ts +2 -7
- package/build/types/ActionRuntime/Handler/ActionHandler.d.ts +1 -1
- package/build/types/ActionRuntime/Handler/ActionHandler.types.d.ts +3 -6
- package/build/types/ActionRuntime/Handler/ExternalClient/ActionExternalClientHandler.d.ts +3 -3
- package/build/types/ActionRuntime/Handler/Local/ActionLocalHandler.d.ts +4 -4
- package/build/types/ActionRuntime/Handler/Local/ActionLocalHandler.types.d.ts +1 -1
- package/build/types/ActionRuntime/Routing/ActionRouter.d.ts +7 -7
- package/build/types/errors/err_nice_action.d.ts +2 -2
- package/build/types/react-query/hooks/useActionMutation.d.ts +6 -0
- package/build/types/react-query/hooks/useActionQuery.d.ts +15 -0
- package/build/types/react-query/index.d.ts +2 -72
- package/package.json +1 -1
|
@@ -3099,7 +3099,15 @@ function useMutation(options, queryClient) {
|
|
|
3099
3099
|
}
|
|
3100
3100
|
return { ...result, mutate, mutateAsync: result.mutate };
|
|
3101
3101
|
}
|
|
3102
|
-
// src/react-query/
|
|
3102
|
+
// src/react-query/hooks/useActionMutation.ts
|
|
3103
|
+
function useActionMutation(action, options) {
|
|
3104
|
+
const mutationOptions2 = options ?? {};
|
|
3105
|
+
return useMutation({
|
|
3106
|
+
mutationFn: (input) => action.request(input).runToOutput(),
|
|
3107
|
+
...mutationOptions2
|
|
3108
|
+
});
|
|
3109
|
+
}
|
|
3110
|
+
// src/react-query/hooks/useActionQuery.ts
|
|
3103
3111
|
function niceActionQueryKey(action, input) {
|
|
3104
3112
|
if (input === undefined) {
|
|
3105
3113
|
return ["nice-action", action.domain, action.allDomains, action.id];
|
|
@@ -3115,15 +3123,8 @@ function useNiceQuery(action, input, options) {
|
|
|
3115
3123
|
...queryOptions2
|
|
3116
3124
|
});
|
|
3117
3125
|
}
|
|
3118
|
-
function useNiceMutation(action, options) {
|
|
3119
|
-
const mutationOptions2 = options ?? {};
|
|
3120
|
-
return useMutation({
|
|
3121
|
-
mutationFn: (input) => action.request(input).runToOutput(),
|
|
3122
|
-
...mutationOptions2
|
|
3123
|
-
});
|
|
3124
|
-
}
|
|
3125
3126
|
export {
|
|
3126
3127
|
useNiceQuery,
|
|
3127
|
-
|
|
3128
|
+
useActionMutation,
|
|
3128
3129
|
niceActionQueryKey
|
|
3129
3130
|
};
|
|
@@ -12,26 +12,26 @@ import type { ActionPayload_Result } from "./Payload/ActionPayload_Result";
|
|
|
12
12
|
* Distributes a union ID into a proper discriminated union of ActionPayload_Request instances,
|
|
13
13
|
* so that narrowing on `.id` also narrows `.input`.
|
|
14
14
|
*/
|
|
15
|
-
export type TDistributeActionPayload_Request<DOM extends IActionDomain, ID extends keyof DOM["
|
|
15
|
+
export type TDistributeActionPayload_Request<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> = ID extends keyof DOM["actionSchema"] & string ? ActionPayload_Request<DOM, ID> : never;
|
|
16
16
|
/**
|
|
17
17
|
* Distributes a union ID into a proper discriminated union of ActionPayload_Result instances,
|
|
18
18
|
* so that narrowing on `.id` also narrows `.result`.
|
|
19
19
|
*/
|
|
20
|
-
export type TDistributeActionPayload_Result<DOM extends IActionDomain, ID extends keyof DOM["
|
|
21
|
-
export type TAction_Any_Instance<DOM extends IActionDomain, ID extends keyof DOM["
|
|
20
|
+
export type TDistributeActionPayload_Result<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> = ID extends keyof DOM["actionSchema"] & string ? ActionPayload_Result<DOM, ID> : never;
|
|
21
|
+
export type TAction_Any_Instance<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = ActionCore<DOM, ID> | TActionPayload_Any_Instance<DOM, ID> | ActionContext<DOM, ID>;
|
|
22
22
|
/**
|
|
23
23
|
*
|
|
24
24
|
* COMBINED JSON TYPES
|
|
25
25
|
*
|
|
26
26
|
*/
|
|
27
|
-
export type TAction_Any_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
27
|
+
export type TAction_Any_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = IActionCore_JsonObject<DOM, ID> | TActionPayload_Any_JsonObject<DOM, ID> | IActionContext_JsonObject<DOM, ID>;
|
|
28
28
|
/**
|
|
29
29
|
*
|
|
30
30
|
* UTILITY TYPES
|
|
31
31
|
*
|
|
32
32
|
*/
|
|
33
33
|
export type TDistributedDomainActions<DOM extends IActionDomain, ACT extends IActionBase<any, DOM, any>> = {
|
|
34
|
-
[ID in keyof DOM["
|
|
35
|
-
}[keyof DOM["
|
|
36
|
-
export type TNarrowActionType<DOM extends IActionDomain, ACT extends IActionBase<any, DOM, any>, ID extends keyof DOM["
|
|
37
|
-
export type TNarrowActionJsonTypeToActionInstanceType<DOM extends IActionDomain, ACT extends TAction_Any_JsonObject<DOM>, ID extends keyof DOM["
|
|
34
|
+
[ID in keyof DOM["actionSchema"] & string]: TNarrowActionType<DOM, ACT, ID>;
|
|
35
|
+
}[keyof DOM["actionSchema"] & string];
|
|
36
|
+
export type TNarrowActionType<DOM extends IActionDomain, ACT extends IActionBase<any, DOM, any>, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = ACT extends ActionPayload_Result<any> ? ActionPayload_Result<DOM, ID> : ACT extends ActionPayload_Request<any> ? ActionPayload_Request<DOM, ID> : ACT extends ActionPayload_Progress<any> ? ActionPayload_Progress<DOM, ID> : ACT extends ActionCore<any> ? ActionCore<DOM, ID> : never;
|
|
37
|
+
export type TNarrowActionJsonTypeToActionInstanceType<DOM extends IActionDomain, ACT extends TAction_Any_JsonObject<DOM>, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = ACT extends IActionPayload_Request_JsonObject<any> ? ActionPayload_Request<DOM, ID> : ACT extends IActionPayload_Result_JsonObject<any> ? ActionPayload_Result<DOM, ID> : ACT extends IActionPayload_Progress_JsonObject<any> ? ActionPayload_Progress<DOM, ID> : ACT extends IActionCore_JsonObject<any> ? ActionCore<DOM, ID> : never;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ActionDomain } from "../Domain/ActionDomain";
|
|
2
2
|
import type { IActionDomain } from "../Domain/ActionDomain.types";
|
|
3
3
|
import type { EActionForm, IActionBase, IActionBase_JsonObject } from "./ActionBase.types";
|
|
4
|
-
export declare abstract class ActionBase<FORM extends EActionForm, DOM extends IActionDomain, ID extends keyof DOM["
|
|
4
|
+
export declare abstract class ActionBase<FORM extends EActionForm, DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> implements IActionBase<FORM, DOM, ID> {
|
|
5
5
|
readonly form: FORM;
|
|
6
6
|
readonly _domain: ActionDomain<DOM>;
|
|
7
7
|
readonly id: ID;
|
|
8
8
|
readonly domain: DOM["domain"];
|
|
9
9
|
readonly allDomains: DOM["allDomains"];
|
|
10
|
-
readonly schema: DOM["
|
|
10
|
+
readonly schema: DOM["actionSchema"][ID];
|
|
11
11
|
constructor(form: FORM, _domain: ActionDomain<DOM>, id: ID);
|
|
12
12
|
protected toJsonObject(): IActionBase_JsonObject<FORM, DOM, ID>;
|
|
13
13
|
protected toJsonString(): string;
|
|
@@ -7,16 +7,16 @@ export declare enum EActionForm {
|
|
|
7
7
|
}
|
|
8
8
|
export interface INiceActionIdAndDomain<DOM extends IActionDomain = IActionDomain> {
|
|
9
9
|
domain: DOM["domain"];
|
|
10
|
-
id: keyof DOM["
|
|
10
|
+
id: keyof DOM["actionSchema"] & string;
|
|
11
11
|
}
|
|
12
|
-
export interface IActionBase<FORM extends EActionForm, DOM extends IActionDomain, ID extends keyof DOM["
|
|
12
|
+
export interface IActionBase<FORM extends EActionForm, DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends INiceActionIdAndDomain<DOM> {
|
|
13
13
|
id: ID;
|
|
14
14
|
form: FORM;
|
|
15
15
|
_domain: ActionDomain<DOM>;
|
|
16
16
|
allDomains: DOM["allDomains"];
|
|
17
|
-
schema: DOM["
|
|
17
|
+
schema: DOM["actionSchema"][ID];
|
|
18
18
|
}
|
|
19
|
-
export interface IActionBase_JsonObject<FORM extends EActionForm = EActionForm, DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
19
|
+
export interface IActionBase_JsonObject<FORM extends EActionForm = EActionForm, DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> {
|
|
20
20
|
form: FORM;
|
|
21
21
|
domain: DOM["domain"];
|
|
22
22
|
allDomains: DOM["allDomains"];
|
|
@@ -4,7 +4,7 @@ import type { IActionDomain, TInferInputFromSchema, TInferOutputFromSchema } fro
|
|
|
4
4
|
import { ActionBase } from "../ActionBase";
|
|
5
5
|
import { EActionForm } from "../ActionBase.types";
|
|
6
6
|
import type { IActionContext, IActionContext_Data, IActionContext_Data_JsonObject, IActionContext_JsonObject, IActionRouteItem } from "./ActionContext.types";
|
|
7
|
-
export declare class ActionContext<DOM extends IActionDomain, ID extends keyof DOM["
|
|
7
|
+
export declare class ActionContext<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends ActionBase<EActionForm.context, DOM, ID> implements IActionContext<DOM, ID> {
|
|
8
8
|
readonly _domain: ActionDomain<DOM>;
|
|
9
9
|
readonly form = EActionForm.context;
|
|
10
10
|
readonly _routing: IActionRouteItem[];
|
|
@@ -18,8 +18,8 @@ export declare class ActionContext<DOM extends IActionDomain, ID extends keyof D
|
|
|
18
18
|
toJsonObject(): IActionContext_JsonObject<DOM, ID>;
|
|
19
19
|
get routing(): IActionRouteItem[];
|
|
20
20
|
addRouteItem(item: IActionRouteItem): void;
|
|
21
|
-
deserializeInput(serialized: TInferInputFromSchema<DOM["
|
|
22
|
-
serializeInput(raw: TInferInputFromSchema<DOM["
|
|
23
|
-
validateInput(input: unknown): TInferInputFromSchema<DOM["
|
|
24
|
-
validateOutput(output: unknown): TInferOutputFromSchema<DOM["
|
|
21
|
+
deserializeInput(serialized: TInferInputFromSchema<DOM["actionSchema"][ID]>["SerdeInput"]): TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"];
|
|
22
|
+
serializeInput(raw: TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"]): TInferInputFromSchema<DOM["actionSchema"][ID]>["SerdeInput"];
|
|
23
|
+
validateInput(input: unknown): TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"];
|
|
24
|
+
validateOutput(output: unknown): TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"];
|
|
25
25
|
}
|
|
@@ -13,7 +13,7 @@ export interface IActionContext_Data {
|
|
|
13
13
|
routing: IActionRouteItem[];
|
|
14
14
|
originClient: ActionClientSpecifier;
|
|
15
15
|
}
|
|
16
|
-
export interface IActionContext<DOM extends IActionDomain, ID extends keyof DOM["
|
|
16
|
+
export interface IActionContext<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionBase<EActionForm.context, DOM, ID>, IActionContext_Data {
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
*
|
|
@@ -31,5 +31,5 @@ export interface IActionContext_Data_JsonObject {
|
|
|
31
31
|
routing: IActionRouteItem_JsonObject[];
|
|
32
32
|
originClient: IActionClientSpecifier;
|
|
33
33
|
}
|
|
34
|
-
export interface IActionContext_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
34
|
+
export interface IActionContext_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionBase_JsonObject<EActionForm.context, DOM, ID>, IActionContext_Data_JsonObject {
|
|
35
35
|
}
|
|
@@ -5,15 +5,15 @@ import { ActionBase } from "../ActionBase";
|
|
|
5
5
|
import { EActionForm, type IActionBase, type IActionBase_JsonObject } from "../ActionBase.types";
|
|
6
6
|
import { ActionPayload_Request } from "../Payload/ActionPayload_Request";
|
|
7
7
|
import type { IActionCore } from "./ActionCore.types";
|
|
8
|
-
export declare class ActionCore<DOM extends IActionDomain, ID extends keyof DOM["
|
|
8
|
+
export declare class ActionCore<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends ActionBase<EActionForm.core, DOM, ID> implements IActionCore<DOM, ID> {
|
|
9
9
|
readonly _domain: ActionDomain<DOM>;
|
|
10
10
|
readonly form = EActionForm.core;
|
|
11
11
|
constructor(_domain: ActionDomain<DOM>, id: ID);
|
|
12
12
|
is<ACT extends IActionBase<any, any, any>>(action: ACT | unknown | null | undefined): action is TNarrowActionType<DOM, ACT, ID>;
|
|
13
13
|
toJsonObject(): IActionBase_JsonObject<EActionForm.core, DOM, ID>;
|
|
14
|
-
request(input: TInferInputFromSchema<DOM["
|
|
15
|
-
deserializeInput(serialized: TInferInputFromSchema<DOM["
|
|
16
|
-
serializeInput(raw: TInferInputFromSchema<DOM["
|
|
17
|
-
validateInput(input: unknown): TInferInputFromSchema<DOM["
|
|
18
|
-
validateOutput(output: unknown): TInferOutputFromSchema<DOM["
|
|
14
|
+
request(input: TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"]): ActionPayload_Request<DOM, ID>;
|
|
15
|
+
deserializeInput(serialized: TInferInputFromSchema<DOM["actionSchema"][ID]>["SerdeInput"]): TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"];
|
|
16
|
+
serializeInput(raw: TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"]): TInferInputFromSchema<DOM["actionSchema"][ID]>["SerdeInput"];
|
|
17
|
+
validateInput(input: unknown): TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"];
|
|
18
|
+
validateOutput(output: unknown): TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"];
|
|
19
19
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { IActionDomain } from "../../Domain/ActionDomain.types";
|
|
2
2
|
import type { EActionForm, IActionBase } from "../ActionBase.types";
|
|
3
|
-
export interface IActionCore<DOM extends IActionDomain, ID extends keyof DOM["
|
|
3
|
+
export interface IActionCore<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionBase<EActionForm.core, DOM, ID> {
|
|
4
4
|
}
|
|
5
|
-
export type IActionCore_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
5
|
+
export type IActionCore_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = {
|
|
6
6
|
form: EActionForm.core;
|
|
7
7
|
domain: DOM["domain"];
|
|
8
8
|
allDomains: DOM["allDomains"];
|
|
@@ -3,7 +3,7 @@ import { ActionBase } from "../ActionBase";
|
|
|
3
3
|
import { EActionForm } from "../ActionBase.types";
|
|
4
4
|
import type { ActionContext } from "../Context/ActionContext";
|
|
5
5
|
import type { EActionPayloadType, IActionPayload_Base, IActionPayload_Base_JsonObject, IActionPayload_Data_Base } from "./ActionPayload.types";
|
|
6
|
-
export declare abstract class ActionPayload<DT extends EActionPayloadType, DOM extends IActionDomain, ID extends keyof DOM["
|
|
6
|
+
export declare abstract class ActionPayload<DT extends EActionPayloadType, DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends ActionBase<EActionForm.data, DOM, ID> implements IActionPayload_Base<DT, DOM, ID> {
|
|
7
7
|
readonly form: EActionForm.data;
|
|
8
8
|
readonly type: DT;
|
|
9
9
|
readonly context: ActionContext<DOM, ID>;
|
|
@@ -11,13 +11,14 @@ import type { ActionPayload_Result } from "./ActionPayload_Result";
|
|
|
11
11
|
export declare enum EActionPayloadType {
|
|
12
12
|
request = "request",
|
|
13
13
|
progress = "progress",
|
|
14
|
+
result = "result",
|
|
14
15
|
stream = "stream",
|
|
15
|
-
|
|
16
|
+
push = "push"
|
|
16
17
|
}
|
|
17
18
|
export interface IActionPayload_Data_Base {
|
|
18
19
|
time: number;
|
|
19
20
|
}
|
|
20
|
-
export interface IActionPayload_Base<DT extends EActionPayloadType, DOM extends IActionDomain, ID extends keyof DOM["
|
|
21
|
+
export interface IActionPayload_Base<DT extends EActionPayloadType, DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> extends IActionBase<EActionForm.data, DOM, ID>, IActionPayload_Data_Base {
|
|
21
22
|
readonly type: DT;
|
|
22
23
|
readonly context: ActionContext<DOM, ID>;
|
|
23
24
|
}
|
|
@@ -42,8 +43,8 @@ export type TActionResultOutcome<OUT, ERR> = {
|
|
|
42
43
|
ok: false;
|
|
43
44
|
error: ERR;
|
|
44
45
|
};
|
|
45
|
-
export interface IActionPayload_Result<DOM extends IActionDomain, ID extends keyof DOM["
|
|
46
|
-
readonly result: TActionResultOutcome<TInferOutputFromSchema<DOM["
|
|
46
|
+
export interface IActionPayload_Result<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> extends IActionPayload_Base<EActionPayloadType.result, DOM, ID> {
|
|
47
|
+
readonly result: TActionResultOutcome<TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"], TInferActionError<DOM["actionSchema"][ID]>>;
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
*
|
|
@@ -68,7 +69,7 @@ export interface IActionProgress_Custom {
|
|
|
68
69
|
data: any;
|
|
69
70
|
}
|
|
70
71
|
export type TActionProgress = IActionProgress_None | IActionProgress_Percentage | IActionProgress_Custom;
|
|
71
|
-
export interface IActionPayload_Progress<DOM extends IActionDomain, ID extends keyof DOM["
|
|
72
|
+
export interface IActionPayload_Progress<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> extends IActionPayload_Base<EActionPayloadType.progress, DOM, ID> {
|
|
72
73
|
readonly progress: TActionProgress;
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
@@ -78,22 +79,22 @@ export interface IActionPayload_Progress<DOM extends IActionDomain, ID extends k
|
|
|
78
79
|
* [ ]
|
|
79
80
|
*
|
|
80
81
|
*/
|
|
81
|
-
export interface IActionPayload_Base_JsonObject<DT extends EActionPayloadType, DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
82
|
+
export interface IActionPayload_Base_JsonObject<DT extends EActionPayloadType, DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionBase_JsonObject<EActionForm.data, DOM, ID> {
|
|
82
83
|
type: DT;
|
|
83
84
|
context: IActionContext_Data_JsonObject;
|
|
84
85
|
time: number;
|
|
85
86
|
}
|
|
86
|
-
export interface IActionPayload_Request_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
87
|
+
export interface IActionPayload_Request_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionPayload_Base_JsonObject<EActionPayloadType.request, DOM, ID> {
|
|
87
88
|
type: EActionPayloadType.request;
|
|
88
|
-
input: TInferInputFromSchema<DOM["
|
|
89
|
+
input: TInferInputFromSchema<DOM["actionSchema"][ID]>["SerdeInput"];
|
|
89
90
|
}
|
|
90
|
-
export interface IActionPayload_Progress_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
91
|
+
export interface IActionPayload_Progress_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionPayload_Base_JsonObject<EActionPayloadType.progress, DOM, ID> {
|
|
91
92
|
type: EActionPayloadType.progress;
|
|
92
93
|
progress: TActionProgress;
|
|
93
94
|
}
|
|
94
|
-
export interface IActionPayload_Result_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
95
|
+
export interface IActionPayload_Result_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IActionPayload_Base_JsonObject<EActionPayloadType.result, DOM, ID> {
|
|
95
96
|
type: EActionPayloadType.result;
|
|
96
|
-
result: TActionResultOutcome<TInferOutputFromSchema<DOM["
|
|
97
|
+
result: TActionResultOutcome<TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"], TInferActionError<DOM["actionSchema"][ID]>>;
|
|
97
98
|
}
|
|
98
99
|
/**
|
|
99
100
|
*
|
|
@@ -102,5 +103,5 @@ export interface IActionPayload_Result_JsonObject<DOM extends IActionDomain = IA
|
|
|
102
103
|
* [ ]
|
|
103
104
|
*
|
|
104
105
|
*/
|
|
105
|
-
export type TActionPayload_Any_Instance<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
106
|
-
export type TActionPayload_Any_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
106
|
+
export type TActionPayload_Any_Instance<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = ActionPayload_Request<DOM, ID> | ActionPayload_Result<DOM, ID> | ActionPayload_Progress<DOM, ID>;
|
|
107
|
+
export type TActionPayload_Any_JsonObject<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = IActionPayload_Request_JsonObject<DOM, ID> | IActionPayload_Progress_JsonObject<DOM, ID> | IActionPayload_Result_JsonObject<DOM, ID>;
|
|
@@ -4,7 +4,7 @@ import { ActionPayload } from "./ActionPayload";
|
|
|
4
4
|
import type { IActionPayload_Data_Base, IActionPayload_Progress, IActionPayload_Progress_JsonObject, TActionProgress } from "./ActionPayload.types";
|
|
5
5
|
import { EActionPayloadType } from "./ActionPayload.types";
|
|
6
6
|
import { ActionPayload_Request } from "./ActionPayload_Request";
|
|
7
|
-
export declare class ActionPayload_Progress<DOM extends IActionDomain, ID extends keyof DOM["
|
|
7
|
+
export declare class ActionPayload_Progress<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends ActionPayload<EActionPayloadType.progress, DOM, ID> implements IActionPayload_Progress<DOM, ID> {
|
|
8
8
|
readonly progress: TActionProgress;
|
|
9
9
|
constructor(params: {
|
|
10
10
|
context: ActionContext<DOM, ID>;
|
|
@@ -8,17 +8,17 @@ import type { IActionPayload_Data_Base, TActionProgress } from "./ActionPayload.
|
|
|
8
8
|
import { EActionPayloadType, type IActionPayload_Request_JsonObject } from "./ActionPayload.types";
|
|
9
9
|
import { ActionPayload_Progress } from "./ActionPayload_Progress";
|
|
10
10
|
import { ActionPayload_Result } from "./ActionPayload_Result";
|
|
11
|
-
export declare class ActionPayload_Request<DOM extends IActionDomain, ID extends keyof DOM["
|
|
12
|
-
readonly input: TInferInputFromSchema<DOM["
|
|
11
|
+
export declare class ActionPayload_Request<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends ActionPayload<EActionPayloadType.request, DOM, ID> {
|
|
12
|
+
readonly input: TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"];
|
|
13
13
|
constructor(params: {
|
|
14
14
|
context: ActionContext<DOM, ID>;
|
|
15
|
-
}, input: TInferInputFromSchema<DOM["
|
|
16
|
-
successResult(...args: [TInferOutputFromSchema<DOM["
|
|
17
|
-
errorResult(err: TInferActionError<DOM["
|
|
15
|
+
}, input: TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"], data: IActionPayload_Data_Base);
|
|
16
|
+
successResult(...args: [TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"]] extends [never] ? [] | [output: TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"]] : [output: TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"]]): ActionPayload_Result<DOM, ID>;
|
|
17
|
+
errorResult(err: TInferActionError<DOM["actionSchema"][ID]>): ActionPayload_Result<DOM, ID>;
|
|
18
18
|
progress(progress: TActionProgress): ActionPayload_Progress<DOM, ID>;
|
|
19
19
|
toJsonObject(): IActionPayload_Request_JsonObject<DOM, ID>;
|
|
20
20
|
toJsonString(): string;
|
|
21
|
-
runToOutput(options?: IExecuteActionOptions<DOM, ID>): Promise<TInferOutputFromSchema<DOM["
|
|
21
|
+
runToOutput(options?: IExecuteActionOptions<DOM, ID>): Promise<TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"]>;
|
|
22
22
|
runToResultPayload(options?: IExecuteActionOptions<DOM, ID>): Promise<ActionPayload_Result<DOM, ID>>;
|
|
23
23
|
run(options?: IExecuteActionOptions<DOM, ID>): Promise<RunningAction<DOM, ID>>;
|
|
24
24
|
}
|
|
@@ -5,11 +5,11 @@ import { ActionPayload } from "./ActionPayload";
|
|
|
5
5
|
import type { IActionPayload_Data_Base, TActionResultOutcome } from "./ActionPayload.types";
|
|
6
6
|
import { EActionPayloadType, type IActionPayload_Result_JsonObject } from "./ActionPayload.types";
|
|
7
7
|
import { ActionPayload_Request } from "./ActionPayload_Request";
|
|
8
|
-
export declare class ActionPayload_Result<DOM extends IActionDomain, ID extends keyof DOM["
|
|
9
|
-
readonly result: TActionResultOutcome<TInferOutputFromSchema<DOM["
|
|
8
|
+
export declare class ActionPayload_Result<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends ActionPayload<EActionPayloadType.result, DOM, ID> {
|
|
9
|
+
readonly result: TActionResultOutcome<TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"], TInferActionError<DOM["actionSchema"][ID]>>;
|
|
10
10
|
constructor(params: {
|
|
11
11
|
context: ActionContext<DOM, ID>;
|
|
12
|
-
} | ActionPayload_Request<DOM, ID>, result: TActionResultOutcome<TInferOutputFromSchema<DOM["
|
|
12
|
+
} | ActionPayload_Request<DOM, ID>, result: TActionResultOutcome<TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"], TInferActionError<DOM["actionSchema"][ID]>>, data: IActionPayload_Data_Base);
|
|
13
13
|
toJsonObject(): IActionPayload_Result_JsonObject<DOM, ID>;
|
|
14
14
|
toJsonString(): string;
|
|
15
15
|
toHttpResponse({ useErrorStatus }?: {
|
|
@@ -5,7 +5,7 @@ import { type IActionPayload_Result_JsonObject } from "./Payload/ActionPayload.t
|
|
|
5
5
|
import type { ActionPayload_Progress } from "./Payload/ActionPayload_Progress";
|
|
6
6
|
import type { ActionPayload_Result } from "./Payload/ActionPayload_Result";
|
|
7
7
|
import { type IRunningActionState, type IRunningActionState_ConstructorParams, type IRunningActionUserMethods, type TRunningActionUpdate, type TRunningActionUpdateListener } from "./RunningAction.types";
|
|
8
|
-
export declare class RunningAction<DOM extends IActionDomain, ID extends keyof DOM["
|
|
8
|
+
export declare class RunningAction<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> implements IRunningActionUserMethods<DOM, ID> {
|
|
9
9
|
protected _state: IRunningActionState<DOM, ID>;
|
|
10
10
|
readonly context: ActionContext<DOM, ID>;
|
|
11
11
|
readonly cuid: string;
|
|
@@ -10,12 +10,12 @@ export declare enum ERunningActionState {
|
|
|
10
10
|
running = "running",
|
|
11
11
|
completed = "completed"
|
|
12
12
|
}
|
|
13
|
-
export interface IRunningActionState<DOM extends IActionDomain, ID extends keyof DOM["
|
|
13
|
+
export interface IRunningActionState<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> {
|
|
14
14
|
request: ActionPayload_Request<DOM, ID>;
|
|
15
15
|
progress: ActionPayload_Progress<DOM, ID>[];
|
|
16
16
|
result?: ActionPayload_Result<DOM, ID>;
|
|
17
17
|
}
|
|
18
|
-
export interface IRunningActionState_ConstructorParams<DOM extends IActionDomain, ID extends keyof DOM["
|
|
18
|
+
export interface IRunningActionState_ConstructorParams<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> {
|
|
19
19
|
context: ActionContext<DOM, ID>;
|
|
20
20
|
request: ActionPayload_Request<DOM, ID>;
|
|
21
21
|
progress?: ActionPayload_Progress<DOM, ID>[];
|
|
@@ -26,14 +26,14 @@ export declare enum ERunningActionUpdateType {
|
|
|
26
26
|
progress = "progress",
|
|
27
27
|
finished = "finished"
|
|
28
28
|
}
|
|
29
|
-
export interface IRunningActionEvent_Base<T extends ERunningActionUpdateType, DOM extends IActionDomain, ID extends keyof DOM["
|
|
29
|
+
export interface IRunningActionEvent_Base<T extends ERunningActionUpdateType, DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> {
|
|
30
30
|
type: T;
|
|
31
31
|
runningAction: RunningAction<DOM, ID>;
|
|
32
32
|
time: number;
|
|
33
33
|
}
|
|
34
|
-
export interface IRunningActionUpdate_Started<DOM extends IActionDomain, ID extends keyof DOM["
|
|
34
|
+
export interface IRunningActionUpdate_Started<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IRunningActionEvent_Base<ERunningActionUpdateType.started, DOM, ID> {
|
|
35
35
|
}
|
|
36
|
-
export interface IRunningActionUpdate_Progress<DOM extends IActionDomain, ID extends keyof DOM["
|
|
36
|
+
export interface IRunningActionUpdate_Progress<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IRunningActionEvent_Base<ERunningActionUpdateType.progress, DOM, ID> {
|
|
37
37
|
progress: TActionProgress;
|
|
38
38
|
}
|
|
39
39
|
export declare enum ERunningActionFinishedType {
|
|
@@ -41,29 +41,29 @@ export declare enum ERunningActionFinishedType {
|
|
|
41
41
|
failed = "failed",
|
|
42
42
|
success = "success"
|
|
43
43
|
}
|
|
44
|
-
export interface IRunningActionUpdate_Finished<FT extends ERunningActionFinishedType, DOM extends IActionDomain, ID extends keyof DOM["
|
|
44
|
+
export interface IRunningActionUpdate_Finished<FT extends ERunningActionFinishedType, DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IRunningActionEvent_Base<ERunningActionUpdateType.finished, DOM, ID> {
|
|
45
45
|
finishType: FT;
|
|
46
46
|
reason?: unknown;
|
|
47
47
|
}
|
|
48
|
-
export interface IRunningActionUpdate_Abort<DOM extends IActionDomain, ID extends keyof DOM["
|
|
48
|
+
export interface IRunningActionUpdate_Abort<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IRunningActionUpdate_Finished<ERunningActionFinishedType.aborted, DOM, ID> {
|
|
49
49
|
reason?: unknown;
|
|
50
50
|
}
|
|
51
|
-
export interface IRunningActionUpdate_Failed<DOM extends IActionDomain, ID extends keyof DOM["
|
|
52
|
-
error: TInferActionError<DOM["
|
|
51
|
+
export interface IRunningActionUpdate_Failed<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IRunningActionUpdate_Finished<ERunningActionFinishedType.failed, DOM, ID> {
|
|
52
|
+
error: TInferActionError<DOM["actionSchema"][ID]>;
|
|
53
53
|
}
|
|
54
|
-
export interface IRunningActionUpdate_Success<DOM extends IActionDomain, ID extends keyof DOM["
|
|
54
|
+
export interface IRunningActionUpdate_Success<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IRunningActionUpdate_Finished<ERunningActionFinishedType.success, DOM, ID> {
|
|
55
55
|
response: ActionPayload_Result<DOM, ID>;
|
|
56
56
|
}
|
|
57
|
-
export type TRunningActionUpdateFinished<DOM extends IActionDomain, ID extends keyof DOM["
|
|
58
|
-
export type TRunningActionUpdate<DOM extends IActionDomain, ID extends keyof DOM["
|
|
59
|
-
export type TRunningActionUpdateListener<DOM extends IActionDomain, ID extends keyof DOM["
|
|
57
|
+
export type TRunningActionUpdateFinished<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = IRunningActionUpdate_Abort<DOM, ID> | IRunningActionUpdate_Failed<DOM, ID> | IRunningActionUpdate_Success<DOM, ID>;
|
|
58
|
+
export type TRunningActionUpdate<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = IRunningActionUpdate_Started<DOM, ID> | IRunningActionUpdate_Progress<DOM, ID> | TRunningActionUpdateFinished<DOM, ID>;
|
|
59
|
+
export type TRunningActionUpdateListener<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = (update: TRunningActionUpdate<DOM, ID>) => void;
|
|
60
60
|
/**
|
|
61
61
|
* Distributes a union ID into a proper discriminated union of RunningAction update events,
|
|
62
62
|
* so that narrowing on `update.runningAction.id` also narrows `update.runningAction`'s input/output types.
|
|
63
63
|
*/
|
|
64
|
-
export type TDistributeRunningActionUpdate<DOM extends IActionDomain, ID extends keyof DOM["
|
|
65
|
-
export type TDistributeRunningActionUpdateListener<DOM extends IActionDomain, ID extends keyof DOM["
|
|
66
|
-
export interface IRunningActionUserMethods<DOM extends IActionDomain, ID extends keyof DOM["
|
|
64
|
+
export type TDistributeRunningActionUpdate<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = ID extends keyof DOM["actionSchema"] & string ? TRunningActionUpdate<DOM, ID> : never;
|
|
65
|
+
export type TDistributeRunningActionUpdateListener<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = (update: TDistributeRunningActionUpdate<DOM, ID>) => void;
|
|
66
|
+
export interface IRunningActionUserMethods<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string> {
|
|
67
67
|
waitForResultPayload(): Promise<ActionPayload_Result<DOM, ID>>;
|
|
68
68
|
addUpdateListeners(listeners: TRunningActionUpdateListener<DOM, ID>[]): () => void;
|
|
69
69
|
iterateUpdates(): AsyncIterable<TRunningActionUpdate<DOM, ID>>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IExecuteActionOptions } from "../../ActionRuntime/Handler/ActionHandler.types";
|
|
2
|
+
import { ActionLocalHandler } from "../../ActionRuntime/Handler/Local/ActionLocalHandler";
|
|
2
3
|
import type { TAction_Any_JsonObject, TDistributeActionPayload_Request, TDistributeActionPayload_Result, TDistributedDomainActions, TNarrowActionJsonTypeToActionInstanceType } from "../Action/Action.combined.types";
|
|
3
4
|
import { type IActionBase } from "../Action/ActionBase.types";
|
|
4
5
|
import { ActionContext } from "../Action/Context/ActionContext";
|
|
@@ -7,11 +8,15 @@ import { ActionCore } from "../Action/Core/ActionCore";
|
|
|
7
8
|
import { type IActionPayload_Request_JsonObject, type IActionPayload_Result_JsonObject } from "../Action/Payload/ActionPayload.types";
|
|
8
9
|
import { ActionPayload_Request } from "../Action/Payload/ActionPayload_Request";
|
|
9
10
|
import type { RunningAction } from "../Action/RunningAction";
|
|
10
|
-
import type { IActionDomain, IActionDomainChildOptions, TActionDomainChildDef } from "./ActionDomain.types";
|
|
11
|
+
import type { IActionDomain, IActionDomainChildOptions, TActionDomainChildDef, TWrappableDomainActionHandler } from "./ActionDomain.types";
|
|
11
12
|
import { ActionDomainBase } from "./ActionDomainBase";
|
|
12
13
|
import { type ActionRootDomain } from "./ActionRootDomain";
|
|
14
|
+
type TActionMap<ACT_DOM extends IActionDomain> = {
|
|
15
|
+
[K in keyof ACT_DOM["actionSchema"] & string]: ActionCore<ACT_DOM, K>;
|
|
16
|
+
};
|
|
13
17
|
export declare class ActionDomain<ACT_DOM extends IActionDomain = IActionDomain> extends ActionDomainBase<ACT_DOM> {
|
|
14
18
|
private _rootDomain;
|
|
19
|
+
private readonly _actionMap;
|
|
15
20
|
constructor(definition: ACT_DOM, { rootDomain, }: {
|
|
16
21
|
rootDomain: ActionRootDomain<any>;
|
|
17
22
|
});
|
|
@@ -19,11 +24,16 @@ export declare class ActionDomain<ACT_DOM extends IActionDomain = IActionDomain>
|
|
|
19
24
|
createChildDomain<SUB_DOM extends IActionDomainChildOptions>(subDomainDef: SUB_DOM & {
|
|
20
25
|
[K in Exclude<keyof SUB_DOM, keyof IActionDomainChildOptions>]: never;
|
|
21
26
|
}): ActionDomain<TActionDomainChildDef<ACT_DOM, SUB_DOM>>;
|
|
22
|
-
action
|
|
23
|
-
|
|
27
|
+
get action(): TActionMap<ACT_DOM>;
|
|
28
|
+
actionsMap(): TActionMap<ACT_DOM>;
|
|
29
|
+
actionForId<ID extends keyof ACT_DOM["actionSchema"] & string>(id: ID): ActionCore<ACT_DOM, ID>;
|
|
30
|
+
wrapAsLocalHandler(wrappedActionExecutor: TWrappableDomainActionHandler<ACT_DOM>): ActionLocalHandler;
|
|
31
|
+
hydrateContext<ID extends keyof ACT_DOM["actionSchema"] & string>(id: ID, contextData: IActionContext_Data_JsonObject): ActionContext<ACT_DOM, ID>;
|
|
24
32
|
isDomainAction<ACT extends IActionBase<any, ACT_DOM, any>>(action: ACT | unknown | null | undefined): action is TDistributedDomainActions<ACT_DOM, ACT>;
|
|
25
|
-
|
|
26
|
-
hydrateResultPayload<ID extends keyof ACT_DOM["
|
|
27
|
-
hydrateAnyAction<ID extends keyof ACT_DOM["
|
|
28
|
-
runAction<ID extends keyof ACT_DOM["
|
|
33
|
+
hydrateRequestPayload<ID extends keyof ACT_DOM["actionSchema"] & string, P extends IActionPayload_Request_JsonObject<ACT_DOM, ID>>(serialized: P): TDistributeActionPayload_Request<ACT_DOM, ID>;
|
|
34
|
+
hydrateResultPayload<ID extends keyof ACT_DOM["actionSchema"] & string, R extends IActionPayload_Result_JsonObject<ACT_DOM, ID>>(serialized: R): TDistributeActionPayload_Result<ACT_DOM, ID>;
|
|
35
|
+
hydrateAnyAction<ID extends keyof ACT_DOM["actionSchema"] & string, AJ extends TAction_Any_JsonObject<ACT_DOM, ID>>(actionJson: AJ): TNarrowActionJsonTypeToActionInstanceType<ACT_DOM, AJ, ID>;
|
|
36
|
+
runAction<ID extends keyof ACT_DOM["actionSchema"] & string, ACT extends ActionPayload_Request<ACT_DOM, ID>>(request: ACT, options?: IExecuteActionOptions<ACT_DOM, ID>): Promise<RunningAction<ACT_DOM, ID>>;
|
|
37
|
+
private createActionMap;
|
|
29
38
|
}
|
|
39
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ActionSchema } from "../Schema/ActionSchema";
|
|
2
2
|
import type { IActionErrorDeclaration, TTransportedValue } from "../Schema/ActionSchema.types";
|
|
3
3
|
export type TPossibleDomainId = string;
|
|
4
|
-
export type TPossibleDomainIdList = [TPossibleDomainId,
|
|
4
|
+
export type TPossibleDomainIdList = [...TPossibleDomainId[], TPossibleDomainId];
|
|
5
5
|
export type TActionDomainSchema = Record<string, ActionSchema<TTransportedValue<any, any>, TTransportedValue<any, any>, readonly IActionErrorDeclaration<any, any>[]>>;
|
|
6
6
|
/**
|
|
7
7
|
* Data shape for a domain — used for construction and as the type-level schema carrier.
|
|
@@ -10,12 +10,12 @@ export type TActionDomainSchema = Record<string, ActionSchema<TTransportedValue<
|
|
|
10
10
|
export interface IActionDomain<IDS extends TPossibleDomainIdList = TPossibleDomainIdList, SCH extends TActionDomainSchema = TActionDomainSchema> {
|
|
11
11
|
domain: IDS[0] & string;
|
|
12
12
|
allDomains: IDS;
|
|
13
|
-
|
|
13
|
+
actionSchema: SCH;
|
|
14
14
|
}
|
|
15
15
|
export interface IActionRootDomain<ID extends TPossibleDomainId = TPossibleDomainId> extends IActionDomain<[ID], {}> {
|
|
16
16
|
domain: ID;
|
|
17
17
|
allDomains: [ID];
|
|
18
|
-
|
|
18
|
+
actionSchema: {};
|
|
19
19
|
}
|
|
20
20
|
export interface IActionDomainChildOptions<ERR_DOMAIN extends string = string, SCHEMA extends TActionDomainSchema = TActionDomainSchema> {
|
|
21
21
|
domain: ERR_DOMAIN;
|
|
@@ -23,10 +23,10 @@ export interface IActionDomainChildOptions<ERR_DOMAIN extends string = string, S
|
|
|
23
23
|
}
|
|
24
24
|
export type TActionDomainChildDef<PARENT_DEF extends IActionDomain, SUB extends IActionDomainChildOptions> = {
|
|
25
25
|
domain: SUB["domain"];
|
|
26
|
-
allDomains: [
|
|
27
|
-
|
|
26
|
+
allDomains: [...PARENT_DEF["allDomains"], SUB["domain"]];
|
|
27
|
+
actionSchema: SUB["actions"];
|
|
28
28
|
};
|
|
29
|
-
export type TDomainActionId<DOM extends IActionDomain> = keyof DOM["
|
|
29
|
+
export type TDomainActionId<DOM extends IActionDomain> = keyof DOM["actionSchema"] & string;
|
|
30
30
|
export type TInferInputFromSchema<SCH extends ActionSchema<any, any, any>> = SCH extends ActionSchema<infer IN, any, any> ? {
|
|
31
31
|
Input: IN[0];
|
|
32
32
|
SerdeInput: IN[1];
|
|
@@ -38,3 +38,6 @@ export type TInferOutputFromSchema<SCH extends ActionSchema<any, any, any>> = SC
|
|
|
38
38
|
Output: OUT[0];
|
|
39
39
|
SerdeOutput: OUT[1];
|
|
40
40
|
} : never;
|
|
41
|
+
export type TWrappableDomainActionHandler<DOM extends IActionDomain> = {
|
|
42
|
+
[K in TDomainActionId<DOM>]: (input: TInferInputFromSchema<DOM["actionSchema"][K]>["Input"]) => Promise<TInferOutputFromSchema<DOM["actionSchema"][K]>["Output"]>;
|
|
43
|
+
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { TDistributeRunningActionUpdateListener, TRunningActionUpdateListener } from "../Action/RunningAction.types";
|
|
2
2
|
import type { IActionDomain } from "./ActionDomain.types";
|
|
3
|
-
export declare abstract class ActionDomainBase<ACT_DOM extends IActionDomain = IActionDomain> implements IActionDomain<ACT_DOM["allDomains"], ACT_DOM["
|
|
3
|
+
export declare abstract class ActionDomainBase<ACT_DOM extends IActionDomain = IActionDomain> implements IActionDomain<ACT_DOM["allDomains"], ACT_DOM["actionSchema"]> {
|
|
4
4
|
readonly domain: ACT_DOM["domain"];
|
|
5
5
|
readonly allDomains: ACT_DOM["allDomains"];
|
|
6
|
-
readonly
|
|
6
|
+
readonly actionSchema: ACT_DOM["actionSchema"];
|
|
7
7
|
protected _listeners: TRunningActionUpdateListener<any, any>[];
|
|
8
8
|
constructor(definition: ACT_DOM);
|
|
9
9
|
/**
|
|
10
10
|
* Add an observer that is called after every action dispatched through this domain.
|
|
11
11
|
* Returns an unsubscribe function — call it to remove the listener.
|
|
12
12
|
*/
|
|
13
|
-
addActionListener(listener: TDistributeRunningActionUpdateListener<ACT_DOM, keyof ACT_DOM["
|
|
13
|
+
addActionListener(listener: TDistributeRunningActionUpdateListener<ACT_DOM, keyof ACT_DOM["actionSchema"] & string>): () => void;
|
|
14
14
|
}
|
|
@@ -19,5 +19,5 @@ export declare class ActionRootDomain<ROOT_DOM extends IActionRootDomain = IActi
|
|
|
19
19
|
}): ActionDomain<TActionDomainChildDef<ROOT_DOM, SUB_DOM>>;
|
|
20
20
|
addActionRuntime(runtime: ActionRuntime): this;
|
|
21
21
|
getRuntime(clientSpecifier: IActionClientSpecifier): ActionRuntime | undefined;
|
|
22
|
-
_runAction<DOM extends IActionDomain, ID extends keyof DOM["
|
|
22
|
+
_runAction<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string, ACT extends ActionPayload_Request<DOM, ID> = ActionPayload_Request<DOM, ID>>(actionPayload: ACT, options?: IExecuteActionOptions<DOM, ID>): Promise<RunningAction<DOM, ID>>;
|
|
23
23
|
}
|
|
@@ -9,5 +9,5 @@ export declare class ActionDomainManager {
|
|
|
9
9
|
verifyIsActionJson(action: INiceActionIdAndDomain<any>): void;
|
|
10
10
|
getActionDomain<DOM extends IActionDomain, ACT extends INiceActionIdAndDomain<DOM>>(action: ACT): ActionDomain<DOM> | undefined;
|
|
11
11
|
getActionDomainOrThrow<DOM extends IActionDomain, ACT extends INiceActionIdAndDomain<DOM>>(action: ACT): ActionDomain<DOM>;
|
|
12
|
-
hydrateActionPayload<D extends IActionDomain, ID extends keyof D["
|
|
12
|
+
hydrateActionPayload<D extends IActionDomain, ID extends keyof D["actionSchema"] & string, A extends TAction_Any_JsonObject<D, ID>>(actionJson: A): TNarrowActionJsonTypeToActionInstanceType<D, A, ID>;
|
|
13
13
|
}
|
|
@@ -22,14 +22,9 @@ export declare class ActionRuntime {
|
|
|
22
22
|
* the correct handler, and return the response. The most specific handler
|
|
23
23
|
* match is chosen (action-ID-specific beats domain-wildcard).
|
|
24
24
|
*/
|
|
25
|
-
handleActionPayloadWire<D extends IActionDomain, ID extends keyof D["
|
|
25
|
+
handleActionPayloadWire<D extends IActionDomain, ID extends keyof D["actionSchema"] & string>(wire: TActionPayload_Any_JsonObject<D, ID>): Promise<RunningAction<D, ID>>;
|
|
26
26
|
handleActionPayloadWire(wire: unknown): Promise<RunningAction<any, any>>;
|
|
27
|
-
handleActionPayload<DOM extends IActionDomain, ID extends keyof DOM["
|
|
28
|
-
/**
|
|
29
|
-
* Return the first handler registered for the given action, or `undefined`
|
|
30
|
-
* if none has been registered (action-ID-specific beats domain-wildcard).
|
|
31
|
-
*/
|
|
32
|
-
getHandlerForAction<ACT extends TActionPayload_Any_Instance<any, any>>(action: ACT, options?: Omit<IHandleActionOptions, "targetLocalRuntime">): TActionHandler | undefined;
|
|
27
|
+
handleActionPayload<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: TActionPayload_Any_Instance<DOM, ID>, options?: Omit<IHandleActionOptions, "targetLocalRuntime">): Promise<RunningAction<DOM, ID>>;
|
|
33
28
|
getHandlerForActionOrThrow<ACT extends TActionPayload_Any_Instance<any, any>>(action: ACT, options?: Omit<IHandleActionOptions, "localRuntime">): TActionHandler;
|
|
34
29
|
/**
|
|
35
30
|
* Register one or more handlers. Each handler's own `actionRouter` defines
|
|
@@ -10,7 +10,7 @@ export declare abstract class ActionHandler<T extends EActionHandlerType> implem
|
|
|
10
10
|
abstract readonly actionRouter: ActionRouter<any>;
|
|
11
11
|
constructor();
|
|
12
12
|
getActionRouter(): ActionRouter<any>;
|
|
13
|
-
abstract handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["
|
|
13
|
+
abstract handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions): Promise<RunningAction<DOM, ID>>;
|
|
14
14
|
abstract toJsonObject(): TActionHandler_Json;
|
|
15
15
|
abstract toHandlerRouteItem(...args: any[]): IActionRouteItemHandler;
|
|
16
16
|
}
|