@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.
Files changed (33) hide show
  1. package/build/index.js +1128 -1112
  2. package/build/react-query/index.js +10 -9
  3. package/build/types/ActionDefinition/Action/Action.combined.types.d.ts +8 -8
  4. package/build/types/ActionDefinition/Action/ActionBase.d.ts +2 -2
  5. package/build/types/ActionDefinition/Action/ActionBase.types.d.ts +4 -4
  6. package/build/types/ActionDefinition/Action/Context/ActionContext.d.ts +5 -5
  7. package/build/types/ActionDefinition/Action/Context/ActionContext.types.d.ts +2 -2
  8. package/build/types/ActionDefinition/Action/Core/ActionCore.d.ts +6 -6
  9. package/build/types/ActionDefinition/Action/Core/ActionCore.types.d.ts +2 -2
  10. package/build/types/ActionDefinition/Action/Payload/ActionPayload.d.ts +1 -1
  11. package/build/types/ActionDefinition/Action/Payload/ActionPayload.types.d.ts +14 -13
  12. package/build/types/ActionDefinition/Action/Payload/ActionPayload_Progress.d.ts +1 -1
  13. package/build/types/ActionDefinition/Action/Payload/ActionPayload_Request.d.ts +6 -6
  14. package/build/types/ActionDefinition/Action/Payload/ActionPayload_Result.d.ts +3 -3
  15. package/build/types/ActionDefinition/Action/RunningAction.d.ts +1 -1
  16. package/build/types/ActionDefinition/Action/RunningAction.types.d.ts +16 -16
  17. package/build/types/ActionDefinition/Domain/ActionDomain.d.ts +17 -7
  18. package/build/types/ActionDefinition/Domain/ActionDomain.types.d.ts +9 -6
  19. package/build/types/ActionDefinition/Domain/ActionDomainBase.d.ts +3 -3
  20. package/build/types/ActionDefinition/Domain/ActionRootDomain.d.ts +1 -1
  21. package/build/types/ActionRuntime/ActionDomainManager.d.ts +1 -1
  22. package/build/types/ActionRuntime/ActionRuntime.d.ts +2 -7
  23. package/build/types/ActionRuntime/Handler/ActionHandler.d.ts +1 -1
  24. package/build/types/ActionRuntime/Handler/ActionHandler.types.d.ts +3 -6
  25. package/build/types/ActionRuntime/Handler/ExternalClient/ActionExternalClientHandler.d.ts +3 -3
  26. package/build/types/ActionRuntime/Handler/Local/ActionLocalHandler.d.ts +4 -4
  27. package/build/types/ActionRuntime/Handler/Local/ActionLocalHandler.types.d.ts +1 -1
  28. package/build/types/ActionRuntime/Routing/ActionRouter.d.ts +7 -7
  29. package/build/types/errors/err_nice_action.d.ts +2 -2
  30. package/build/types/react-query/hooks/useActionMutation.d.ts +6 -0
  31. package/build/types/react-query/hooks/useActionQuery.d.ts +15 -0
  32. package/build/types/react-query/index.d.ts +2 -72
  33. package/package.json +1 -1
@@ -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["actions"] & string = keyof DOM["actions"] & string> extends IHandleActionOptions {
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["actions"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions_Local) => Promise<RunningAction<DOM, ID>>;
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["actions"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions_External) => Promise<RunningAction<DOM, ID>>;
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["actions"] & string>(action: ActionCore<ACT_DOM, ID>): this;
26
- forActionIds<ACT_DOM extends IActionDomain, IDS extends ReadonlyArray<keyof ACT_DOM["actions"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS): this;
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["actions"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions): Promise<RunningAction<DOM, ID>>;
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["actions"] & string>(action: ActionCore<ACT_DOM, ID>, handler: THandleActionExecutionFn<ACT_DOM, ID>): this;
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["actions"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS, handler: THandleActionExecutionFn<ACT_DOM, IDS[number]>): this;
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["actions"] & string]?: THandleActionExecutionFn<FOR_DOM, ID>;
47
+ [ID in keyof FOR_DOM["actionSchema"] & string]?: THandleActionExecutionFn<FOR_DOM, ID>;
48
48
  }): this;
49
- handleActionRequest<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string>(action: ActionPayload_Request<DOM, ID>, config?: IHandleActionOptions): Promise<RunningAction<DOM, ID>>;
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;
@@ -4,4 +4,4 @@ import type { IActionPayload_Result_JsonObject } from "../../../ActionDefinition
4
4
  import type { ActionPayload_Result } from "../../../ActionDefinition/Action/Payload/ActionPayload_Result";
5
5
  import type { IActionDomain, TInferOutputFromSchema } from "../../../ActionDefinition/Domain/ActionDomain.types";
6
6
  export type { TDistributeActionPayload_Request };
7
- export type THandleActionExecutionFn<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string = keyof DOM["actions"] & string> = (action: TDistributeActionPayload_Request<DOM, ID>) => MaybePromise<ActionPayload_Result<DOM, ID> | IActionPayload_Result_JsonObject<DOM, ID> | TInferOutputFromSchema<DOM["actions"][ID]>["Output"] | undefined>;
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["actions"] & string>(action: ActionCore<ACT_DOM, ID>, routeData: DATA): this;
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["actions"] & string>(domain: ActionDomain<ACT_DOM>, id: ID, routeData: DATA): this;
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["actions"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS, routeData: DATA): this;
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["actions"] & string]?: DATA;
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["actions"] & string>(domain: ActionDomain<ACT_DOM>, id: ID, routeData: DATA): this;
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["actions"] & string>>(domain: ActionDomain<ACT_DOM>, ids: IDS, routeData: DATA): this;
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["actions"] & string]?: DATA;
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;
@@ -9,7 +9,7 @@ export declare enum EErrId_NiceAction {
9
9
  hydration_action_state_mismatch = "hydration_action_state_mismatch",
10
10
  hydration_action_id_not_found = "hydration_action_id_not_found",
11
11
  no_action_execution_handler = "no_action_execution_handler",
12
- wire_action_not_primed_or_response = "wire_action_not_primed_or_response",
12
+ wire_action_not_payload = "wire_action_not_payload",
13
13
  wire_not_action_data = "wire_not_action_data",
14
14
  client_runtime_already_registered = "client_runtime_already_registered",
15
15
  client_runtime_not_registered = "client_runtime_not_registered",
@@ -55,7 +55,7 @@ export declare const err_nice_action: import("@nice-code/error").NiceErrorDomain
55
55
  actionId: string;
56
56
  specifiedClient?: ActionClientSpecifier;
57
57
  }, import("@nice-code/error").JSONSerializableValue>;
58
- wire_action_not_primed_or_response: import("@nice-code/error").INiceErrorIdMetadata<{
58
+ wire_action_not_payload: import("@nice-code/error").INiceErrorIdMetadata<{
59
59
  domain: string;
60
60
  actionId: string;
61
61
  actionState: string | undefined;
@@ -0,0 +1,6 @@
1
+ import { type UseMutationOptions, type UseMutationResult } from "@tanstack/react-query";
2
+ import type { ActionCore } from "../../ActionDefinition/Action/Core/ActionCore";
3
+ import type { IActionDomain, TInferInputFromSchema, TInferOutputFromSchema } from "../../ActionDefinition/Domain/ActionDomain.types";
4
+ import type { TInferActionError } from "../../ActionDefinition/Schema/ActionSchema";
5
+ export type TUseNiceMutationOptions<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string, SCH extends DOM["actionSchema"][ID] = DOM["actionSchema"][ID], TContext = unknown> = Omit<UseMutationOptions<TInferOutputFromSchema<SCH>["Output"], TInferActionError<SCH>, TInferInputFromSchema<SCH>["Input"], TContext>, "mutationFn">;
6
+ export declare function useActionMutation<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string, SCH extends DOM["actionSchema"][ID], TContext = unknown>(action: ActionCore<DOM, ID>, options?: TUseNiceMutationOptions<DOM, ID, SCH, TContext>): UseMutationResult<TInferOutputFromSchema<SCH>["Output"], TInferActionError<SCH>, TInferInputFromSchema<SCH>["Input"], TContext>;
@@ -0,0 +1,15 @@
1
+ import { type QueryKey, type UseQueryOptions, type UseQueryResult } from "@tanstack/react-query";
2
+ import type { ActionCore } from "../../ActionDefinition/Action/Core/ActionCore";
3
+ import type { IActionDomain, TInferInputFromSchema, TInferOutputFromSchema } from "../../ActionDefinition/Domain/ActionDomain.types";
4
+ import type { TInferActionError } from "../../ActionDefinition/Schema/ActionSchema";
5
+ export declare function niceActionQueryKey<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionCore<DOM, ID>): readonly ["nice-action", DOM["domain"], DOM["allDomains"], ID];
6
+ export declare function niceActionQueryKey<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string>(action: ActionCore<DOM, ID>, input: TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"]): readonly [
7
+ "nice-action",
8
+ DOM["domain"],
9
+ DOM["allDomains"],
10
+ ID,
11
+ TInferInputFromSchema<DOM["actionSchema"][ID]>["Input"],
12
+ string | undefined
13
+ ];
14
+ export type TUseNiceQueryOptions<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string, SCH extends DOM["actionSchema"][ID] = DOM["actionSchema"][ID], TSelect = TInferOutputFromSchema<SCH>["Output"]> = Omit<UseQueryOptions<TInferOutputFromSchema<SCH>["Output"], TInferActionError<SCH>, TSelect, QueryKey>, "queryKey" | "queryFn">;
15
+ export declare function useNiceQuery<DOM extends IActionDomain, ID extends keyof DOM["actionSchema"] & string, SCH extends DOM["actionSchema"][ID], TSelect = TInferOutputFromSchema<SCH>["Output"]>(action: ActionCore<DOM, ID>, input: TInferInputFromSchema<SCH>["Input"] | null | undefined, options?: TUseNiceQueryOptions<DOM, ID, SCH, TSelect>): UseQueryResult<TSelect, TInferActionError<SCH>>;
@@ -1,72 +1,2 @@
1
- import type { QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
- import type { ActionCore } from "../ActionDefinition/Action/Core/ActionCore";
3
- import type { IActionDomain, TInferInputFromSchema, TInferOutputFromSchema } from "../ActionDefinition/Domain/ActionDomain.types";
4
- import type { TInferActionError } from "../ActionDefinition/Schema/ActionSchema";
5
- /**
6
- * Builds a stable TanStack Query key for a Nice Action.
7
- *
8
- * Overload 1 (no input) — returns a prefix key suitable for `queryClient.invalidateQueries`,
9
- * which will match every cached query for this action regardless of input.
10
- *
11
- * Overload 2 (with input) — returns the exact key used by `useNiceQuery` for the given input.
12
- * Use this when you need to read or invalidate a single cached result.
13
- *
14
- * @example
15
- * // Invalidate all cached results for an action
16
- * queryClient.invalidateQueries({ queryKey: niceActionQueryKey(domain.action("getUser")) });
17
- *
18
- * // Invalidate a specific cached result
19
- * queryClient.invalidateQueries({ queryKey: niceActionQueryKey(domain.action("getUser"), { userId: "123" }) });
20
- */
21
- export declare function niceActionQueryKey<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string>(action: ActionCore<DOM, ID>): readonly ["nice-action", DOM["domain"], DOM["allDomains"], ID];
22
- export declare function niceActionQueryKey<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string>(action: ActionCore<DOM, ID>, input: TInferInputFromSchema<DOM["actions"][ID]>["Input"]): readonly [
23
- "nice-action",
24
- DOM["domain"],
25
- DOM["allDomains"],
26
- ID,
27
- TInferInputFromSchema<DOM["actions"][ID]>["Input"],
28
- string | undefined
29
- ];
30
- export type TUseNiceQueryOptions<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string, SCH extends DOM["actions"][ID] = DOM["actions"][ID], TSelect = TInferOutputFromSchema<SCH>["Output"]> = Omit<UseQueryOptions<TInferOutputFromSchema<SCH>["Output"], TInferActionError<SCH>, TSelect, QueryKey>, "queryKey" | "queryFn">;
31
- export type TUseNiceMutationOptions<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string, SCH extends DOM["actions"][ID] = DOM["actions"][ID], TContext = unknown> = Omit<UseMutationOptions<TInferOutputFromSchema<SCH>["Output"], TInferActionError<SCH>, TInferInputFromSchema<SCH>["Input"], TContext>, "mutationFn">;
32
- /**
33
- * Execute a Nice Action as a TanStack Query.
34
- *
35
- * Automatically constructs a stable query key from the action's domain, id, and input.
36
- * Passing `null` or `undefined` as `input` disables the query (sets `enabled: false`),
37
- * which allows conditional execution while respecting React's rules of hooks.
38
- *
39
- * The `tag` option targets a specific named handler registered on the runtime environment.
40
- *
41
- * Supports TanStack Query's `select` option with full type inference — if you pass a
42
- * `select` transformer, `data` will be typed as the transformer's return type.
43
- *
44
- * @example
45
- * const { data, isPending, error } = useNiceQuery(
46
- * domain.action("getUser"),
47
- * { userId: "123" },
48
- * );
49
- *
50
- * @example
51
- * // Conditionally enabled
52
- * const { data } = useNiceQuery(domain.action("getUser"), userId ? { userId } : null);
53
- */
54
- export declare function useNiceQuery<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string, SCH extends DOM["actions"][ID], TSelect = TInferOutputFromSchema<SCH>["Output"]>(action: ActionCore<DOM, ID>, input: TInferInputFromSchema<SCH>["Input"] | null | undefined, options?: TUseNiceQueryOptions<DOM, ID, SCH, TSelect>): UseQueryResult<TSelect, TInferActionError<SCH>>;
55
- /**
56
- * Execute a Nice Action as a TanStack Mutation.
57
- *
58
- * Ideal for actions that change server state — form submissions, updates, deletes, etc.
59
- * The input is provided at call time via `mutation.mutate(input)` or `mutation.mutateAsync(input)`.
60
- *
61
- * The `tag` option targets a specific named handler registered on the runtime environment.
62
- *
63
- * @example
64
- * const mutation = useNiceMutation(domain.action("createUser"));
65
- *
66
- * function handleSubmit(data: CreateUserInput) {
67
- * mutation.mutate(data, {
68
- * onSuccess: (user) => router.push(`/users/${user.id}`),
69
- * });
70
- * }
71
- */
72
- export declare function useNiceMutation<DOM extends IActionDomain, ID extends keyof DOM["actions"] & string, SCH extends DOM["actions"][ID], TContext = unknown>(action: ActionCore<DOM, ID>, options?: TUseNiceMutationOptions<DOM, ID, SCH, TContext>): UseMutationResult<TInferOutputFromSchema<SCH>["Output"], TInferActionError<SCH>, TInferInputFromSchema<SCH>["Input"], TContext>;
1
+ export * from "./hooks/useActionMutation";
2
+ export * from "./hooks/useActionQuery";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nice-code/action",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {