@nice-code/action 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +56 -47
- package/build/react-query/index.js +10 -9
- package/build/types/ActionDefinition/Action/Action.combined.types.d.ts +16 -6
- 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 +6 -7
- package/build/types/ActionDefinition/Action/Context/ActionContext.types.d.ts +2 -2
- package/build/types/ActionDefinition/Action/Core/ActionCore.d.ts +6 -7
- 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 +20 -14
- package/build/types/ActionDefinition/Domain/ActionDomain.d.ts +17 -10
- package/build/types/ActionDefinition/Domain/ActionDomain.types.d.ts +10 -7
- package/build/types/ActionDefinition/Domain/ActionDomainBase.d.ts +4 -4
- package/build/types/ActionDefinition/Domain/ActionRootDomain.d.ts +1 -1
- package/build/types/ActionDefinition/Schema/ActionSchema.d.ts +7 -7
- package/build/types/ActionDefinition/Schema/ActionSchema.types.d.ts +4 -8
- 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 +3 -2
- package/build/types/ActionRuntime/Routing/ActionRouter.d.ts +7 -7
- package/build/types/ActionRuntime/test/helpers/new_action_test_data.d.ts +60 -154
- 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
|
@@ -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,23 +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["
|
|
60
|
-
|
|
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
|
+
/**
|
|
61
|
+
* Distributes a union ID into a proper discriminated union of RunningAction update events,
|
|
62
|
+
* so that narrowing on `update.runningAction.id` also narrows `update.runningAction`'s input/output types.
|
|
63
|
+
*/
|
|
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> {
|
|
61
67
|
waitForResultPayload(): Promise<ActionPayload_Result<DOM, ID>>;
|
|
62
68
|
addUpdateListeners(listeners: TRunningActionUpdateListener<DOM, ID>[]): () => void;
|
|
63
69
|
iterateUpdates(): AsyncIterable<TRunningActionUpdate<DOM, ID>>;
|
|
@@ -1,30 +1,37 @@
|
|
|
1
1
|
import type { IExecuteActionOptions } from "../../ActionRuntime/Handler/ActionHandler.types";
|
|
2
|
-
import type { TAction_Any_JsonObject, TDistributedDomainActions, TNarrowActionJsonTypeToActionInstanceType } from "../Action/Action.combined.types";
|
|
2
|
+
import type { TAction_Any_JsonObject, TDistributeActionPayload_Request, TDistributeActionPayload_Result, TDistributedDomainActions, TNarrowActionJsonTypeToActionInstanceType } from "../Action/Action.combined.types";
|
|
3
3
|
import { type IActionBase } from "../Action/ActionBase.types";
|
|
4
4
|
import { ActionContext } from "../Action/Context/ActionContext";
|
|
5
5
|
import type { IActionContext_Data_JsonObject } from "../Action/Context/ActionContext.types";
|
|
6
6
|
import { ActionCore } from "../Action/Core/ActionCore";
|
|
7
7
|
import { type IActionPayload_Request_JsonObject, type IActionPayload_Result_JsonObject } from "../Action/Payload/ActionPayload.types";
|
|
8
8
|
import { ActionPayload_Request } from "../Action/Payload/ActionPayload_Request";
|
|
9
|
-
import { ActionPayload_Result } from "../Action/Payload/ActionPayload_Result";
|
|
10
9
|
import type { RunningAction } from "../Action/RunningAction";
|
|
11
10
|
import type { IActionDomain, IActionDomainChildOptions, TActionDomainChildDef } from "./ActionDomain.types";
|
|
12
11
|
import { ActionDomainBase } from "./ActionDomainBase";
|
|
13
12
|
import { type ActionRootDomain } from "./ActionRootDomain";
|
|
13
|
+
type TActionMap<ACT_DOM extends IActionDomain> = {
|
|
14
|
+
[K in keyof ACT_DOM["actionSchema"] & string]: ActionCore<ACT_DOM, K>;
|
|
15
|
+
};
|
|
14
16
|
export declare class ActionDomain<ACT_DOM extends IActionDomain = IActionDomain> extends ActionDomainBase<ACT_DOM> {
|
|
15
17
|
private _rootDomain;
|
|
18
|
+
private readonly _actionMap;
|
|
16
19
|
constructor(definition: ACT_DOM, { rootDomain, }: {
|
|
17
|
-
rootDomain: ActionRootDomain
|
|
20
|
+
rootDomain: ActionRootDomain<any>;
|
|
18
21
|
});
|
|
19
|
-
get rootDomain(): ActionRootDomain<
|
|
22
|
+
get rootDomain(): ActionRootDomain<any>;
|
|
20
23
|
createChildDomain<SUB_DOM extends IActionDomainChildOptions>(subDomainDef: SUB_DOM & {
|
|
21
24
|
[K in Exclude<keyof SUB_DOM, keyof IActionDomainChildOptions>]: never;
|
|
22
25
|
}): ActionDomain<TActionDomainChildDef<ACT_DOM, SUB_DOM>>;
|
|
23
|
-
action
|
|
24
|
-
|
|
26
|
+
get action(): TActionMap<ACT_DOM>;
|
|
27
|
+
actionsMap(): TActionMap<ACT_DOM>;
|
|
28
|
+
actionForId<ID extends keyof ACT_DOM["actionSchema"] & string>(id: ID): ActionCore<ACT_DOM, ID>;
|
|
29
|
+
hydrateContext<ID extends keyof ACT_DOM["actionSchema"] & string>(id: ID, contextData: IActionContext_Data_JsonObject): ActionContext<ACT_DOM, ID>;
|
|
25
30
|
isDomainAction<ACT extends IActionBase<any, ACT_DOM, any>>(action: ACT | unknown | null | undefined): action is TDistributedDomainActions<ACT_DOM, ACT>;
|
|
26
|
-
|
|
27
|
-
hydrateResultPayload<ID extends keyof ACT_DOM["
|
|
28
|
-
hydrateAnyAction<ID extends keyof ACT_DOM["
|
|
29
|
-
runAction<ID extends keyof ACT_DOM["
|
|
31
|
+
hydrateRequestPayload<ID extends keyof ACT_DOM["actionSchema"] & string, P extends IActionPayload_Request_JsonObject<ACT_DOM, ID>>(serialized: P): TDistributeActionPayload_Request<ACT_DOM, ID>;
|
|
32
|
+
hydrateResultPayload<ID extends keyof ACT_DOM["actionSchema"] & string, R extends IActionPayload_Result_JsonObject<ACT_DOM, ID>>(serialized: R): TDistributeActionPayload_Result<ACT_DOM, ID>;
|
|
33
|
+
hydrateAnyAction<ID extends keyof ACT_DOM["actionSchema"] & string, AJ extends TAction_Any_JsonObject<ACT_DOM, ID>>(actionJson: AJ): TNarrowActionJsonTypeToActionInstanceType<ACT_DOM, AJ, ID>;
|
|
34
|
+
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>>;
|
|
35
|
+
private createActionMap;
|
|
30
36
|
}
|
|
37
|
+
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,14 +23,17 @@ 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];
|
|
33
|
-
} :
|
|
33
|
+
} : {
|
|
34
|
+
Input: never;
|
|
35
|
+
SerdeInput: never;
|
|
36
|
+
};
|
|
34
37
|
export type TInferOutputFromSchema<SCH extends ActionSchema<any, any, any>> = SCH extends ActionSchema<any, infer OUT, any> ? {
|
|
35
38
|
Output: OUT[0];
|
|
36
39
|
SerdeOutput: OUT[1];
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { TRunningActionUpdateListener } from "../Action/RunningAction.types";
|
|
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:
|
|
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
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { err_cast_not_nice, type INiceErrorDomainProps, type InferNiceError, type
|
|
1
|
+
import { err_cast_not_nice, type INiceErrorDomainProps, type InferNiceError, type NiceErrorDomain } from "@nice-code/error";
|
|
2
2
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
3
|
import type { IActionErrorDeclaration, TActionSchemaOptions, TInferDeclaredErrors, TTransportedValue } from "./ActionSchema.types";
|
|
4
4
|
export declare class ActionSchema<INPUT extends TTransportedValue<any, any> = never, OUTPUT extends TTransportedValue<any, any> = never, ERRORS extends readonly IActionErrorDeclaration<any, any>[] = readonly []> {
|
|
@@ -12,14 +12,14 @@ export declare class ActionSchema<INPUT extends TTransportedValue<any, any> = ne
|
|
|
12
12
|
* For non-JSON-native inputs, prefer the 3-argument form below to avoid
|
|
13
13
|
* needing explicit type parameters.
|
|
14
14
|
*/
|
|
15
|
-
input<VS extends StandardSchemaV1 = StandardSchemaV1, SERDE_IN
|
|
15
|
+
input<VS extends StandardSchemaV1 = StandardSchemaV1, SERDE_IN = any>(options: TActionSchemaOptions<VS, SERDE_IN>): ActionSchema<TTransportedValue<StandardSchemaV1.InferInput<VS>, SERDE_IN>, OUTPUT, ERRORS>;
|
|
16
16
|
/**
|
|
17
17
|
* Declare the input schema with serialization via sequential parameters.
|
|
18
18
|
* TypeScript infers SERDE_IN from `serialize`'s return type (left-to-right),
|
|
19
19
|
* then provides it as the contextual type for `deserialize`'s parameter —
|
|
20
20
|
* no explicit type parameters or casts needed.
|
|
21
21
|
*/
|
|
22
|
-
input<VS extends StandardSchemaV1, SERDE_IN
|
|
22
|
+
input<VS extends StandardSchemaV1, SERDE_IN = any>(options: {
|
|
23
23
|
schema: VS;
|
|
24
24
|
}, serialize: (raw: StandardSchemaV1.InferInput<VS>) => SERDE_IN, deserialize: (serde: SERDE_IN) => StandardSchemaV1.InferInput<VS>): ActionSchema<TTransportedValue<StandardSchemaV1.InferInput<VS>, SERDE_IN>, OUTPUT, ERRORS>;
|
|
25
25
|
/**
|
|
@@ -27,14 +27,14 @@ export declare class ActionSchema<INPUT extends TTransportedValue<any, any> = ne
|
|
|
27
27
|
* For non-JSON-native outputs, prefer the 3-argument form below to avoid
|
|
28
28
|
* needing explicit type parameters.
|
|
29
29
|
*/
|
|
30
|
-
output<VS extends StandardSchemaV1 = StandardSchemaV1, SERDE_OUT
|
|
30
|
+
output<VS extends StandardSchemaV1 = StandardSchemaV1, SERDE_OUT = any>(options: TActionSchemaOptions<VS, SERDE_OUT>): ActionSchema<INPUT, TTransportedValue<StandardSchemaV1.InferInput<VS>, SERDE_OUT>, ERRORS>;
|
|
31
31
|
/**
|
|
32
32
|
* Declare the output schema with serialization via sequential parameters.
|
|
33
33
|
* TypeScript infers SERDE_OUT from `serialize`'s return type (left-to-right),
|
|
34
34
|
* then provides it as the contextual type for `deserialize`'s parameter —
|
|
35
35
|
* no explicit type parameters or casts needed.
|
|
36
36
|
*/
|
|
37
|
-
output<VS extends StandardSchemaV1, SERDE_OUT
|
|
37
|
+
output<VS extends StandardSchemaV1, SERDE_OUT = any>(options: {
|
|
38
38
|
schema: VS;
|
|
39
39
|
}, serialize: (raw: StandardSchemaV1.InferInput<VS>) => SERDE_OUT, deserialize: (serde: SERDE_OUT) => StandardSchemaV1.InferInput<VS>): ActionSchema<INPUT, TTransportedValue<StandardSchemaV1.InferInput<VS>, SERDE_OUT>, ERRORS>;
|
|
40
40
|
/**
|
|
@@ -52,13 +52,13 @@ export declare class ActionSchema<INPUT extends TTransportedValue<any, any> = ne
|
|
|
52
52
|
* Uses the schema's serialization.serialize if defined; otherwise the input
|
|
53
53
|
* is already JSON-native and is returned as-is.
|
|
54
54
|
*/
|
|
55
|
-
serializeInput(rawInput: INPUT[0]):
|
|
55
|
+
serializeInput(rawInput: INPUT[0]): INPUT[1];
|
|
56
56
|
/**
|
|
57
57
|
* Deserialize a JSON value back into the raw input type.
|
|
58
58
|
* Uses serialization.deserialize if defined; otherwise the value is cast
|
|
59
59
|
* directly (it's already in the correct shape).
|
|
60
60
|
*/
|
|
61
|
-
deserializeInput(serialized:
|
|
61
|
+
deserializeInput(serialized: INPUT[1]): INPUT[0];
|
|
62
62
|
/**
|
|
63
63
|
* Validate raw input against the schema defined via `.input({ schema })`.
|
|
64
64
|
* Throws `action_input_validation_failed` if validation fails.
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { type INiceErrorDomainProps, type
|
|
1
|
+
import { type INiceErrorDomainProps, type NiceErrorDomain } from "@nice-code/error";
|
|
2
2
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
-
export type
|
|
4
|
-
export type
|
|
5
|
-
export type TActionSerializationDefinition<RAW_VAL = any, SERDE_VAL extends TActionJsonSerializableValue = TActionJsonSerializableValue> = {
|
|
3
|
+
export type TTransportedValue<RAW_VAL, SERDE_VAL> = [RAW_VAL] | [RAW_VAL, SERDE_VAL];
|
|
4
|
+
export type TActionSerializationDefinition<RAW_VAL = any, SERDE_VAL = any> = {
|
|
6
5
|
serialize: (value: RAW_VAL) => SERDE_VAL;
|
|
7
6
|
deserialize: (value: SERDE_VAL) => RAW_VAL;
|
|
8
7
|
};
|
|
9
|
-
export type TActionSchemaOptions<VS extends StandardSchemaV1 = StandardSchemaV1, SERDE_IN
|
|
8
|
+
export type TActionSchemaOptions<VS extends StandardSchemaV1 = StandardSchemaV1, SERDE_IN = any> = {
|
|
10
9
|
schema: VS;
|
|
11
10
|
serialization?: TActionSerializationDefinition<StandardSchemaV1.InferInput<VS>, SERDE_IN>;
|
|
12
|
-
} : {
|
|
13
|
-
schema: VS;
|
|
14
|
-
serialization: TActionSerializationDefinition<StandardSchemaV1.InferInput<VS>, SERDE_IN>;
|
|
15
11
|
};
|
|
16
12
|
/**
|
|
17
13
|
* One error declaration on an action schema.
|
|
@@ -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
|
}
|
|
@@ -24,7 +24,7 @@ export interface IHandleActionOptions {
|
|
|
24
24
|
targetExternalClient?: ActionClientSpecifier;
|
|
25
25
|
targetLocalRuntime?: ActionRuntime;
|
|
26
26
|
}
|
|
27
|
-
export interface IExecuteActionOptions<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["
|
|
27
|
+
export interface IExecuteActionOptions<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> extends IHandleActionOptions {
|
|
28
28
|
listeners?: TRunningActionUpdateListener<DOM, ID>[];
|
|
29
29
|
}
|
|
30
30
|
export type TAtLeastOne<T extends object> = {
|
|
@@ -35,9 +35,6 @@ export interface IActionHandler_Base<T extends EActionHandlerType> {
|
|
|
35
35
|
handlerType: T;
|
|
36
36
|
getActionRouter: () => ActionRouter<any>;
|
|
37
37
|
}
|
|
38
|
-
export interface IHandleActionPrimed_Input_Base<DOM extends IActionDomain = IActionDomain, ID extends keyof DOM["actions"] & string = keyof DOM["actions"] & string> {
|
|
39
|
-
action: ActionPayload_Request<DOM, ID>;
|
|
40
|
-
}
|
|
41
38
|
/**
|
|
42
39
|
*
|
|
43
40
|
* LOCAL ACTION HANDLER
|
|
@@ -46,7 +43,7 @@ export interface IHandleActionPrimed_Input_Base<DOM extends IActionDomain = IAct
|
|
|
46
43
|
export interface IHandleActionOptions_Local extends IHandleActionOptions {
|
|
47
44
|
}
|
|
48
45
|
export interface IActionHandler_Local extends IActionHandler_Base<EActionHandlerType.local> {
|
|
49
|
-
handleActionRequest: <DOM extends IActionDomain, ID extends keyof DOM["
|
|
46
|
+
handleActionRequest: <DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions_Local) => Promise<RunningAction<DOM, ID>>;
|
|
50
47
|
}
|
|
51
48
|
/**
|
|
52
49
|
*
|
|
@@ -57,7 +54,7 @@ export interface IHandleActionOptions_External extends IHandleActionOptions {
|
|
|
57
54
|
}
|
|
58
55
|
export interface IActionHandler_ExternalClient extends IActionHandler_Base<EActionHandlerType.external> {
|
|
59
56
|
externalClient: ActionClientSpecifier;
|
|
60
|
-
handleActionRequest: <DOM extends IActionDomain, ID extends keyof DOM["
|
|
57
|
+
handleActionRequest: <DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions_External) => Promise<RunningAction<DOM, ID>>;
|
|
61
58
|
_setIncomingActionDataListener(listener: (json: TActionPayload_Any_JsonObject<any>) => void): void;
|
|
62
59
|
}
|
|
63
60
|
/**
|
|
@@ -22,10 +22,10 @@ export declare class ActionExternalClientHandler extends ActionHandler<EActionHa
|
|
|
22
22
|
readonly actionRouter: ActionRouter<true>;
|
|
23
23
|
constructor({ externalClientSpecifier, transports, defaultTimeout, }: IActionExternalClientRequestHandlerConfig);
|
|
24
24
|
forDomain<FOR_DOM extends IActionDomain>(domain: ActionDomain<FOR_DOM>): this;
|
|
25
|
-
forAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["
|
|
26
|
-
forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["
|
|
25
|
+
forAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["actionSchema"] & string>(action: ActionCore<ACT_DOM, ID>): this;
|
|
26
|
+
forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["actionSchema"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS): this;
|
|
27
27
|
_setIncomingActionDataListener(listener: (json: TActionPayload_Any_JsonObject<any, any>) => void): void;
|
|
28
|
-
handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["
|
|
28
|
+
handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions): Promise<RunningAction<DOM, ID>>;
|
|
29
29
|
/**
|
|
30
30
|
* Dispatch a result or progress payload directly back to the external client via the best
|
|
31
31
|
* available bidirectional transport (WebSocket / Custom). Used for return-path routing when the
|
|
@@ -24,13 +24,13 @@ export declare class ActionLocalHandler extends ActionHandler<EActionHandlerType
|
|
|
24
24
|
* Receives the full primed action with narrowed input type.
|
|
25
25
|
* Useful for handling specific actions locally while forwarding the rest of the domain. For example, a local "ping" action that checks connectivity without needing a round trip.
|
|
26
26
|
*/
|
|
27
|
-
forAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["
|
|
27
|
+
forAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["actionSchema"] & string>(action: ActionCore<ACT_DOM, ID>, handler: THandleActionExecutionFn<ACT_DOM, ID>): this;
|
|
28
28
|
/**
|
|
29
29
|
* Register a handler for multiple action IDs (first-match-wins among cases).
|
|
30
30
|
* Receives the full primed action narrowed to the union of those IDs.
|
|
31
31
|
* Use `act.coreAction.id` to branch on which action was dispatched.
|
|
32
32
|
*/
|
|
33
|
-
forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["
|
|
33
|
+
forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["actionSchema"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS, handler: THandleActionExecutionFn<ACT_DOM, IDS[number]>): this;
|
|
34
34
|
/**
|
|
35
35
|
* Register per-action handlers for a domain using a single map, without needing
|
|
36
36
|
* separate `forAction` calls. Unregistered action IDs are unaffected.
|
|
@@ -44,9 +44,9 @@ export declare class ActionLocalHandler extends ActionHandler<EActionHandlerType
|
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
46
|
forDomainActionCases<FOR_DOM extends IActionDomain>(domain: ActionDomain<FOR_DOM>, cases: {
|
|
47
|
-
[ID in keyof FOR_DOM["
|
|
47
|
+
[ID in keyof FOR_DOM["actionSchema"] & string]?: THandleActionExecutionFn<FOR_DOM, ID>;
|
|
48
48
|
}): this;
|
|
49
|
-
handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["
|
|
49
|
+
handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions): Promise<RunningAction<DOM, ID>>;
|
|
50
50
|
private _handleRunningAction;
|
|
51
51
|
handlePayloadWireOrThrow(wire: unknown, config?: IHandleActionOptions): Promise<RunningAction<any, any>>;
|
|
52
52
|
toJsonObject(): IActionHandler_Local_Json;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MaybePromise } from "bun";
|
|
2
|
+
import type { TDistributeActionPayload_Request } from "../../../ActionDefinition/Action/Action.combined.types";
|
|
2
3
|
import type { IActionPayload_Result_JsonObject } from "../../../ActionDefinition/Action/Payload/ActionPayload.types";
|
|
3
|
-
import type { ActionPayload_Request } from "../../../ActionDefinition/Action/Payload/ActionPayload_Request";
|
|
4
4
|
import type { ActionPayload_Result } from "../../../ActionDefinition/Action/Payload/ActionPayload_Result";
|
|
5
5
|
import type { IActionDomain, TInferOutputFromSchema } from "../../../ActionDefinition/Domain/ActionDomain.types";
|
|
6
|
-
export type
|
|
6
|
+
export type { TDistributeActionPayload_Request };
|
|
7
|
+
export type THandleActionExecutionFn<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string = keyof DOM["actionSchema"] & string> = (action: TDistributeActionPayload_Request<DOM, ID>) => MaybePromise<ActionPayload_Result<DOM, ID> | IActionPayload_Result_JsonObject<DOM, ID> | TInferOutputFromSchema<DOM["actionSchema"][ID]>["Output"] | undefined>;
|
|
@@ -30,24 +30,24 @@ export declare class ActionRouter<DATA> {
|
|
|
30
30
|
getDomains(): ActionDomain[];
|
|
31
31
|
/** Register a handler for all actions in a domain, replacing any existing one. */
|
|
32
32
|
forDomain<FOR_DOM extends IActionDomain>(domain: ActionDomain<FOR_DOM>, routeData: DATA): this;
|
|
33
|
-
forAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["
|
|
33
|
+
forAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["actionSchema"] & string>(action: ActionCore<ACT_DOM, ID>, routeData: DATA): this;
|
|
34
34
|
/** Register a handler for a specific action, replacing any existing one. */
|
|
35
|
-
forActionId<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["
|
|
35
|
+
forActionId<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["actionSchema"] & string>(domain: ActionDomain<ACT_DOM>, id: ID, routeData: DATA): this;
|
|
36
36
|
/** Register one handler for several action IDs, replacing any existing ones. */
|
|
37
|
-
forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["
|
|
37
|
+
forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["actionSchema"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS, routeData: DATA): this;
|
|
38
38
|
/** Register per-action handlers from a cases map, replacing any existing ones. */
|
|
39
39
|
forDomainActionCases<FOR_DOM extends IActionDomain>(domain: ActionDomain<FOR_DOM>, cases: {
|
|
40
|
-
[ID in keyof FOR_DOM["
|
|
40
|
+
[ID in keyof FOR_DOM["actionSchema"] & string]?: DATA;
|
|
41
41
|
}): this;
|
|
42
42
|
/** Append a handler for all actions in a domain (accumulates alongside existing). */
|
|
43
43
|
addForDomain<FOR_DOM extends IActionDomain>(domain: ActionDomain<FOR_DOM>, routeData: DATA): this;
|
|
44
44
|
/** Append a handler for a specific action (accumulates alongside existing). */
|
|
45
|
-
addForAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["
|
|
45
|
+
addForAction<ACT_DOM extends IActionDomain, ID extends keyof ACT_DOM["actionSchema"] & string>(domain: ActionDomain<ACT_DOM>, id: ID, routeData: DATA): this;
|
|
46
46
|
/** Append one handler for several action IDs (accumulates alongside existing). */
|
|
47
|
-
addForActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["
|
|
47
|
+
addForActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["actionSchema"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS, routeData: DATA): this;
|
|
48
48
|
/** Append per-action handlers from a cases map (accumulates alongside existing). */
|
|
49
49
|
addForDomainActionCases<FOR_DOM extends IActionDomain>(domain: ActionDomain<FOR_DOM>, cases: {
|
|
50
|
-
[ID in keyof FOR_DOM["
|
|
50
|
+
[ID in keyof FOR_DOM["actionSchema"] & string]?: DATA;
|
|
51
51
|
}): this;
|
|
52
52
|
/** Append a handler directly by its raw match key (used when the key is known ahead of time). */
|
|
53
53
|
addForKey(key: TMatchHandlerKey, routeData: DATA): this;
|