Skip to content

Commit 412de46

Browse files
feat(config): ActivityLoaderArgs.config (#519)
1 parent c470897 commit 412de46

File tree

13 files changed

+52
-36
lines changed

13 files changed

+52
-36
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@stackflow/react": minor
3+
"@stackflow/link": minor
4+
"@stackflow/config": minor
5+
---
6+
7+
add `config` property in loader args

biome.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
".vscode/**",
5454
".yarn/**",
5555
".next/**",
56+
"__generated__/**",
5657
".ultra.cache.json",
5758
"package.json"
5859
]

config/src/ActivityLoader.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { ActivityLoaderArgs } from "./ActivityLoaderArgs";
2-
import type { RegisteredActivityParamTypes } from "./RegisteredActivityParamTypes";
2+
import type { RegisteredActivityName } from "./RegisteredActivityName";
33

4-
export type ActivityLoader<
5-
ActivityName extends Extract<keyof RegisteredActivityParamTypes, string>,
6-
> = (args: ActivityLoaderArgs<ActivityName>) => any;
4+
export type ActivityLoader<ActivityName extends RegisteredActivityName> = (
5+
args: ActivityLoaderArgs<ActivityName>,
6+
) => any;

config/src/ActivityLoaderArgs.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import type { ActivityDefinition } from "./ActivityDefinition";
2+
import type { Config } from "./Config";
13
import type { InferActivityParams } from "./InferActivityParams";
2-
import type { RegisteredActivityParamTypes } from "./RegisteredActivityParamTypes";
4+
import type { RegisteredActivityName } from "./RegisteredActivityName";
35

4-
export type ActivityLoaderArgs<
5-
ActivityName extends Extract<keyof RegisteredActivityParamTypes, string>,
6-
> = {
6+
export interface ActivityLoaderArgs<
7+
ActivityName extends RegisteredActivityName,
8+
> {
79
params: InferActivityParams<ActivityName>;
8-
};
10+
config: Config<ActivityDefinition<RegisteredActivityName>>;
11+
}

config/src/InferActivityParams.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { ActivityBaseParams } from "./ActivityBaseParams";
2+
import type { RegisteredActivityName } from "./RegisteredActivityName";
23
import type { RegisteredActivityParamTypes } from "./RegisteredActivityParamTypes";
34

4-
export type InferActivityParams<
5-
ActivityName extends Extract<keyof RegisteredActivityParamTypes, string>,
6-
> = RegisteredActivityParamTypes[ActivityName] extends never
7-
? ActivityBaseParams
8-
: RegisteredActivityParamTypes[ActivityName];
5+
export type InferActivityParams<ActivityName extends RegisteredActivityName> =
6+
RegisteredActivityParamTypes[ActivityName] extends never
7+
? ActivityBaseParams
8+
: RegisteredActivityParamTypes[ActivityName];
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import type { RegisteredActivityParamTypes } from "./RegisteredActivityParamTypes";
2+
3+
export type RegisteredActivityName = Extract<
4+
keyof RegisteredActivityParamTypes,
5+
string
6+
>;

config/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ export * from "./ActivityLoaderArgs";
66
export * from "./Config";
77
export * from "./InferActivityParams";
88
export * from "./Register";
9+
export * from "./RegisteredActivityName";
910
export * from "./RegisteredActivityParamTypes";

extensions/link/src/future/Link.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import type {
44
InferActivityParams,
5-
RegisteredActivityParamTypes,
5+
RegisteredActivityName,
66
} from "@stackflow/config";
77
import { useConfig, useFlow } from "@stackflow/react/future";
88
import { useMemo } from "react";
@@ -16,19 +16,16 @@ type AnchorProps = Omit<
1616
"ref" | "href"
1717
>;
1818

19-
export interface LinkProps<
20-
K extends Extract<keyof RegisteredActivityParamTypes, string>,
21-
> extends AnchorProps {
19+
export interface LinkProps<K extends RegisteredActivityName>
20+
extends AnchorProps {
2221
ref?: React.RefObject<HTMLAnchorElement>;
2322
activityName: K;
2423
activityParams: InferActivityParams<K>;
2524
animate?: boolean;
2625
replace?: boolean;
2726
}
2827

29-
export function Link<
30-
K extends Extract<keyof RegisteredActivityParamTypes, string>,
31-
>(props: LinkProps<K>) {
28+
export function Link<K extends RegisteredActivityName>(props: LinkProps<K>) {
3229
const config = useConfig();
3330
const { push, replace } = useFlow();
3431

integrations/react/src/future/Actions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type {
22
InferActivityParams,
3-
RegisteredActivityParamTypes,
3+
RegisteredActivityName,
44
} from "@stackflow/config";
55

66
export type Actions = {
7-
push<K extends Extract<keyof RegisteredActivityParamTypes, string>>(
7+
push<K extends RegisteredActivityName>(
88
activityName: K,
99
activityParams: InferActivityParams<K>,
1010
options?: {
@@ -13,7 +13,7 @@ export type Actions = {
1313
): {
1414
activityId: string;
1515
};
16-
replace<K extends Extract<keyof RegisteredActivityParamTypes, string>>(
16+
replace<K extends RegisteredActivityName>(
1717
activityName: K,
1818
activityParams: InferActivityParams<K>,
1919
options?: {
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import type {
22
InferActivityParams,
3-
RegisteredActivityParamTypes,
3+
RegisteredActivityName,
44
} from "@stackflow/config";
55
import type React from "react";
66

7-
export type ActivityComponentType<
8-
ActivityName extends Extract<keyof RegisteredActivityParamTypes, string>,
9-
> = React.ComponentType<{ params: InferActivityParams<ActivityName> }>;
7+
export type ActivityComponentType<ActivityName extends RegisteredActivityName> =
8+
React.ComponentType<{ params: InferActivityParams<ActivityName> }>;

0 commit comments

Comments
 (0)