Merged in chore/next15 (pull request #1999)
chore (SW-834): Upgrade to Next 15 * wip: apply codemod and upgrade swc plugin * wip: design-system to react 19, fix issues from async (search)params * wip: fix remaining issues from codemod serverClient is now async because context use headers() getLang is now async because it uses headers() * Minor cleanup * Inline react-material-symbols package Package is seemingly not maintained any more and doesn't support React 19. This copies the package source into `design-system`, makes the necessary changes for 19 and export it for others to use. * Fix missing awaits * Disable modal exit animations Enabling modal exit animations via isExiting prop is causing modals to be rendered in "hidden" state and never unmount. Seems to be an issue with react-aria-components, see https://github.com/adobe/react-spectrum/issues/7563. Can probably be fixed by rewriting to a solution similar to https://react-spectrum.adobe.com/react-aria/examples/framer-modal-sheet.html * Remove unstable cache implementation and use in memory cache locally * Fix ref type in SelectFilter * Use cloneElement to add key prop to element Approved-by: Linus Flood
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
import { revalidateTag, unstable_cache } from "next/cache"
|
||||
|
||||
import {
|
||||
type CacheTime,
|
||||
type DataCache,
|
||||
getCacheTimeInSeconds,
|
||||
} from "@/services/dataCache/Cache"
|
||||
|
||||
import {
|
||||
type CacheOrGetOptions,
|
||||
shouldGetFromCache,
|
||||
} from "../../cacheOrGetOptions"
|
||||
import { cacheLogger } from "../../logger"
|
||||
|
||||
export const cacheOrGet: DataCache["cacheOrGet"] = async <T>(
|
||||
key: string | string[],
|
||||
callback: () => Promise<T>,
|
||||
ttl: CacheTime,
|
||||
opts?: CacheOrGetOptions
|
||||
): Promise<T> => {
|
||||
if (!Array.isArray(key)) {
|
||||
key = [key]
|
||||
}
|
||||
|
||||
const perf = performance.now()
|
||||
if (!shouldGetFromCache(opts)) {
|
||||
revalidateTag(key[0])
|
||||
}
|
||||
|
||||
const res = await unstable_cache(callback, key, {
|
||||
revalidate: getCacheTimeInSeconds(ttl),
|
||||
tags: key,
|
||||
})()
|
||||
|
||||
const size = JSON.stringify(res).length / (1024 * 1024)
|
||||
cacheLogger.debug(`'${key}': ${size}mb`)
|
||||
if (size > 5) {
|
||||
cacheLogger.warn(`'${key}' is larger than 5mb!`)
|
||||
}
|
||||
cacheLogger.debug(`'${key}' took ${(performance.now() - perf).toFixed(2)}ms`)
|
||||
|
||||
return res
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { revalidateTag } from "next/cache"
|
||||
|
||||
export async function deleteKey(key: string) {
|
||||
revalidateTag(key)
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
import type { DataCache } from "@/services/dataCache/Cache"
|
||||
|
||||
/**
|
||||
* This function is not implemented for unstable_cache due to underlying cache implementation.
|
||||
* @see cacheOrGet
|
||||
* @param _key
|
||||
* @returns
|
||||
*/
|
||||
export const get: DataCache["get"] = async <T>(
|
||||
_key: string
|
||||
): Promise<T | undefined> => {
|
||||
console.warn("UnstableCache.get is not implemented, use cacheOrGet")
|
||||
return undefined
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { cacheOrGet } from "./cacheOrGet"
|
||||
import { deleteKey } from "./deleteKey"
|
||||
import { get } from "./get"
|
||||
import { set } from "./set"
|
||||
|
||||
import type { DataCache } from "@/services/dataCache/Cache"
|
||||
|
||||
export async function createUnstableCache(): Promise<DataCache> {
|
||||
return { type: "unstable-cache", cacheOrGet, deleteKey, get, set }
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
import { type CacheTime, type DataCache } from "@/services/dataCache/Cache"
|
||||
|
||||
/**
|
||||
* This function is not implemented for unstable_cache due to underlying cache implementation.
|
||||
* @see cacheOrGet
|
||||
* @param _key
|
||||
* @returns
|
||||
*/
|
||||
export const set: DataCache["set"] = async <T>(
|
||||
_key: string,
|
||||
_data: T,
|
||||
_ttl: CacheTime
|
||||
): Promise<void> => {
|
||||
console.warn("UnstableCache.set is not implemented, use cacheOrGet")
|
||||
}
|
||||
@@ -1,17 +1,7 @@
|
||||
import { isEdge } from "@/utils/isEdge"
|
||||
|
||||
import { createInMemoryCache } from "./InMemoryCache"
|
||||
import { createUnstableCache } from "./UnstableCache"
|
||||
|
||||
import type { DataCache } from "@/services/dataCache/Cache"
|
||||
|
||||
export function createMemoryCache(): Promise<DataCache> {
|
||||
if (isEdge) {
|
||||
/**
|
||||
* unstable_cache is not available on the edge runtime
|
||||
*/
|
||||
return createInMemoryCache()
|
||||
}
|
||||
|
||||
return createUnstableCache()
|
||||
return createInMemoryCache()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user