Skip to content

Commit 29a0bb6

Browse files
ENvironmentSetanakin_karrot
andauthored
feat(config, react): Remove first class data loader cache (#661)
Co-authored-by: anakin_karrot <anakin@daangn.com>
1 parent 23ced9d commit 29a0bb6

File tree

3 files changed

+10
-57
lines changed

3 files changed

+10
-57
lines changed

.changeset/real-cats-rest.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@stackflow/react": major
3+
"@stackflow/config": major
4+
---
5+
6+
Remove data loader cache

config/src/ActivityLoader.ts

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

4-
export type ActivityLoader<ActivityName extends RegisteredActivityName> = {
5-
(args: ActivityLoaderArgs<ActivityName>): any;
6-
loaderCacheMaxAge?: number;
7-
};
4+
export type ActivityLoader<ActivityName extends RegisteredActivityName> = (
5+
args: ActivityLoaderArgs<ActivityName>,
6+
) => any;
87

98
export function loader<ActivityName extends RegisteredActivityName>(
109
loaderFn: (args: ActivityLoaderArgs<ActivityName>) => any,
11-
options?: {
12-
loaderCacheMaxAge?: number;
13-
},
1410
): ActivityLoader<ActivityName> {
15-
return Object.assign(
16-
(args: ActivityLoaderArgs<ActivityName>) => loaderFn(args),
17-
options,
18-
);
11+
return (args: ActivityLoaderArgs<ActivityName>) => loaderFn(args);
1912
}

integrations/react/src/future/stackflow.tsx

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ export type StackflowOutput = {
5050
stepActions: StepActions<ActivityBaseParams>;
5151
};
5252

53-
const DEFAULT_LOADER_CACHE_MAX_AGE = 1000 * 30;
54-
5553
export function stackflow<
5654
T extends ActivityDefinition<RegisteredActivityName>,
5755
R extends {
@@ -60,17 +58,7 @@ export function stackflow<
6058
>;
6159
},
6260
>(input: StackflowInput<T, R>): StackflowOutput {
63-
const loaderDataCacheMap = new Map<string, { params: {}; data: unknown }[]>();
6461
const loadData = (activityName: string, activityParams: {}) => {
65-
const cache = loaderDataCacheMap.get(activityName);
66-
const cacheEntry = cache?.find((entry) =>
67-
isEqual(entry.params, activityParams),
68-
);
69-
70-
if (cacheEntry) {
71-
return cacheEntry.data;
72-
}
73-
7462
const activityConfig = input.config.activities.find(
7563
(activity) => activity.name === activityName,
7664
);
@@ -83,40 +71,6 @@ export function stackflow<
8371
params: activityParams,
8472
config: input.config,
8573
});
86-
const newCacheEntry = {
87-
params: activityParams,
88-
data: loaderData,
89-
};
90-
91-
if (cache) {
92-
cache.push(newCacheEntry);
93-
} else {
94-
loaderDataCacheMap.set(activityName, [newCacheEntry]);
95-
}
96-
97-
const clearCache = () => {
98-
const cache = loaderDataCacheMap.get(activityName);
99-
100-
if (!cache) return;
101-
102-
loaderDataCacheMap.set(
103-
activityName,
104-
cache.filter((entry) => entry !== newCacheEntry),
105-
);
106-
};
107-
const clearCacheAfterMaxAge = () => {
108-
setTimeout(
109-
clearCache,
110-
activityConfig.loader?.loaderCacheMaxAge ??
111-
DEFAULT_LOADER_CACHE_MAX_AGE,
112-
);
113-
};
114-
115-
Promise.resolve(loaderData).then(clearCacheAfterMaxAge, (error) => {
116-
clearCache();
117-
118-
throw error;
119-
});
12074

12175
return loaderData;
12276
};

0 commit comments

Comments
 (0)