expo-router 4.0.14 → 4.0.16
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/babel.js +17 -3
- package/build/fast-refresh.d.ts.map +1 -1
- package/build/fast-refresh.js +21 -13
- package/build/fast-refresh.js.map +1 -1
- package/build/layouts/DrawerClient.d.ts +2 -10
- package/build/layouts/DrawerClient.d.ts.map +1 -1
- package/build/layouts/StackClient.d.ts +2 -2
- package/build/layouts/TabsClient.d.ts +2 -6
- package/build/layouts/TabsClient.d.ts.map +1 -1
- package/build/rsc/middleware.js +1 -0
- package/build/rsc/middleware.js.map +1 -1
- package/build/rsc/router/create-pages.d.ts +3 -1
- package/build/rsc/router/create-pages.d.ts.map +1 -1
- package/build/rsc/router/host.d.ts.map +1 -1
- package/build/rsc/router/host.js +5 -0
- package/build/rsc/router/host.js.map +1 -1
- package/build/rsc/server.d.ts +1 -1
- package/build/rsc/server.d.ts.map +1 -1
- package/build/rsc/server.js +18 -34
- package/build/rsc/server.js.map +1 -1
- package/package.json +7 -7
package/babel.js
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
)
|
|
1
|
+
let hasWarned = false;
|
|
2
|
+
|
|
3
|
+
module.exports = (api) => {
|
|
4
|
+
return {
|
|
5
|
+
name: 'expo-router-babel-deprecated',
|
|
6
|
+
visitor: {
|
|
7
|
+
Program() {
|
|
8
|
+
if (!hasWarned) {
|
|
9
|
+
hasWarned = true;
|
|
10
|
+
console.warn(
|
|
11
|
+
'expo-router/babel is deprecated in favor of babel-preset-expo in SDK 50. To fix the issue, remove "expo-router/babel" from "plugins" in your babel.config.js file.'
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-refresh.d.ts","sourceRoot":"","sources":["../src/fast-refresh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fast-refresh.d.ts","sourceRoot":"","sources":["../src/fast-refresh.ts"],"names":[],"mappings":"AA4EA,OAAO,EAAE,CAAC"}
|
package/build/fast-refresh.js
CHANGED
|
@@ -43,21 +43,29 @@ if (process.env.NODE_ENV === 'development') {
|
|
|
43
43
|
* 2. With each individual export of a module
|
|
44
44
|
*/
|
|
45
45
|
isLikelyComponentType(value) {
|
|
46
|
-
|
|
47
|
-
if ('
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
try {
|
|
47
|
+
if (typeof value === 'object') {
|
|
48
|
+
if ('unstable_settings' in value) {
|
|
49
|
+
expoRouterExports.add(value.unstable_settings);
|
|
50
|
+
}
|
|
51
|
+
if ('ErrorBoundary' in value) {
|
|
52
|
+
expoRouterExports.add(value.ErrorBoundary);
|
|
53
|
+
}
|
|
54
|
+
if ('generateStaticParams' in value) {
|
|
55
|
+
expoRouterExports.add(value.generateStaticParams);
|
|
56
|
+
}
|
|
57
|
+
// When ErrorBoundary is exported, the inverse dependency will also include the _ctx file.
|
|
58
|
+
if ('ctx' in value && value.ctx.name === 'metroContext') {
|
|
59
|
+
expoRouterExports.add(value.ctx);
|
|
60
|
+
}
|
|
59
61
|
}
|
|
60
62
|
}
|
|
63
|
+
catch {
|
|
64
|
+
// Ignore - we're just trying to avoid breaking Fast Refresh by using exports
|
|
65
|
+
// that aren't JS objects valid as keys for the WeakSet - like we've seen with
|
|
66
|
+
// some JSI::HostObject instances that are exported in a module - see #33670
|
|
67
|
+
// https://github.com/expo/expo/issues/33670
|
|
68
|
+
}
|
|
61
69
|
return expoRouterExports.has(value) || isLikelyComponentType(value);
|
|
62
70
|
},
|
|
63
71
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-refresh.js","sourceRoot":"","sources":["../src/fast-refresh.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;IAC1C;IACE,gCAAgC;IAChC,OAAO,uBAAuB,KAAK,WAAW;QAC9C,4CAA4C;QAC5C,MAAM,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,EAClD;QACA,sGAAsG;QACtG,MAAM,OAAO,GAAG,MAAM,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,CAAC;QACnE,mCAAmC;QACnC,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC5D,0CAA0C;QAC1C,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YACrB;;;;eAIG;YACH,qBAAqB,CAAC,KAAK;gBACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"fast-refresh.js","sourceRoot":"","sources":["../src/fast-refresh.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;IAC1C;IACE,gCAAgC;IAChC,OAAO,uBAAuB,KAAK,WAAW;QAC9C,4CAA4C;QAC5C,MAAM,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,EAClD;QACA,sGAAsG;QACtG,MAAM,OAAO,GAAG,MAAM,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,CAAC;QACnE,mCAAmC;QACnC,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC5D,0CAA0C;QAC1C,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YACrB;;;;eAIG;YACH,qBAAqB,CAAC,KAAK;gBACzB,IAAI;oBACF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBAC7B,IAAI,mBAAmB,IAAI,KAAK,EAAE;4BAChC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;yBAChD;wBACD,IAAI,eAAe,IAAI,KAAK,EAAE;4BAC5B,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;yBAC5C;wBACD,IAAI,sBAAsB,IAAI,KAAK,EAAE;4BACnC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;yBACnD;wBACD,0FAA0F;wBAC1F,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;4BACvD,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBAClC;qBACF;iBACF;gBAAC,MAAM;oBACN,6EAA6E;oBAC7E,8EAA8E;oBAC9E,4EAA4E;oBAC5E,4CAA4C;iBAC7C;gBACD,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACtE,CAAC;SACF,CAAC,CAAC;KACJ;CACF","sourcesContent":["declare let __METRO_GLOBAL_PREFIX__: string;\n\n/**\n * This is a hack for Expo Router to support Fast Refresh on _layout files\n *\n * Fast Refresh only works when:\n * - Files only export React Components\n * - All inverse dependencies only export React Components\n *\n * Expo Router's _layout files support exporting both 'unstable_settings' and 'ErrorBoundary'\n *\n * 'unstable_settings':\n * - This is a plain object, so it will break Fast Refresh\n *\n * 'ErrorBoundary'\n * - While this is a React component, it is imported from 'expo-router'\n * - 'expo-router' has an inverse dependency on _ctx, which is a require.context object\n *\n * 'generateStaticParams'\n * - This is a function that is not a React Component, so it will break Fast Refresh\n *\n *\n * To resolve this issue, we extend ReactRefresh to flag these exports as React components\n *\n * @see https://reactnative.dev/docs/fast-refresh\n */\nif (process.env.NODE_ENV === 'development') {\n if (\n // Should be a string at runtime\n typeof __METRO_GLOBAL_PREFIX__ !== 'undefined' &&\n // Should be set by Metro's require polyfill\n global[__METRO_GLOBAL_PREFIX__ + '__ReactRefresh']\n ) {\n // source: https://github.com/facebook/metro/blob/main/packages/metro-runtime/src/polyfills/require.js\n const Refresh = global[__METRO_GLOBAL_PREFIX__ + '__ReactRefresh'];\n // Keep a reference to the original\n const isLikelyComponentType = Refresh.isLikelyComponentType;\n // Modules can be dereferenced at any time\n const expoRouterExports = new WeakSet();\n\n Object.assign(Refresh, {\n /*\n * isLikelyComponentType is called twice.\n * 1. Initially with a modules export object\n * 2. With each individual export of a module\n */\n isLikelyComponentType(value) {\n try {\n if (typeof value === 'object') {\n if ('unstable_settings' in value) {\n expoRouterExports.add(value.unstable_settings);\n }\n if ('ErrorBoundary' in value) {\n expoRouterExports.add(value.ErrorBoundary);\n }\n if ('generateStaticParams' in value) {\n expoRouterExports.add(value.generateStaticParams);\n }\n // When ErrorBoundary is exported, the inverse dependency will also include the _ctx file.\n if ('ctx' in value && value.ctx.name === 'metroContext') {\n expoRouterExports.add(value.ctx);\n }\n }\n } catch {\n // Ignore - we're just trying to avoid breaking Fast Refresh by using exports\n // that aren't JS objects valid as keys for the WeakSet - like we've seen with\n // some JSI::HostObject instances that are exported in a module - see #33670\n // https://github.com/expo/expo/issues/33670\n }\n return expoRouterExports.has(value) || isLikelyComponentType(value);\n },\n });\n }\n}\n\n// Export an empty object so TypeScript doesn't consider this an ambient module\nexport {};\n"]}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DrawerNavigationOptions, DrawerNavigationEventMap } from '@react-navigation/drawer';
|
|
3
3
|
import { DrawerNavigationState, ParamListBase } from '@react-navigation/native';
|
|
4
|
-
export declare const Drawer: import("react").ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/
|
|
5
|
-
backBehavior?: import("@react-navigation/routers/lib/typescript/commonjs/src/TabRouter").BackBehavior | undefined;
|
|
6
|
-
} & {
|
|
7
|
-
defaultStatus?: import("@react-navigation/native").DrawerStatus | undefined;
|
|
8
|
-
} & import("@react-navigation/drawer/lib/typescript/commonjs/src/types").DrawerNavigationConfig, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
4
|
+
export declare const Drawer: import("react").ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/drawer").DrawerNavigatorProps, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
9
5
|
children: import("react").ReactNode;
|
|
10
6
|
layout?: ((props: {
|
|
11
7
|
state: DrawerNavigationState<ParamListBase>;
|
|
@@ -69,11 +65,7 @@ export declare const Drawer: import("react").ForwardRefExoticComponent<Omit<Omit
|
|
|
69
65
|
}>> | undefined) | undefined;
|
|
70
66
|
} & {
|
|
71
67
|
id?: undefined;
|
|
72
|
-
}, "children"> & Partial<Pick<Omit<import("@react-navigation/
|
|
73
|
-
backBehavior?: import("@react-navigation/routers/lib/typescript/commonjs/src/TabRouter").BackBehavior | undefined;
|
|
74
|
-
} & {
|
|
75
|
-
defaultStatus?: import("@react-navigation/native").DrawerStatus | undefined;
|
|
76
|
-
} & import("@react-navigation/drawer/lib/typescript/commonjs/src/types").DrawerNavigationConfig, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
68
|
+
}, "children"> & Partial<Pick<Omit<import("@react-navigation/drawer").DrawerNavigatorProps, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
77
69
|
children: import("react").ReactNode;
|
|
78
70
|
layout?: ((props: {
|
|
79
71
|
state: DrawerNavigationState<ParamListBase>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerClient.d.ts","sourceRoot":"","sources":["../../src/layouts/DrawerClient.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMhF,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"DrawerClient.d.ts","sourceRoot":"","sources":["../../src/layouts/DrawerClient.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMhF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKD,CAAC;AAEnB,eAAe,MAAM,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ParamListBase, StackNavigationState } from '@react-navigation/native';
|
|
3
3
|
import { NativeStackNavigationEventMap, NativeStackNavigationOptions } from '@react-navigation/native-stack';
|
|
4
|
-
export declare const Stack: import("react").ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/native-stack
|
|
4
|
+
export declare const Stack: import("react").ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/native-stack").NativeStackNavigatorProps, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
5
5
|
children: import("react").ReactNode;
|
|
6
6
|
layout?: ((props: {
|
|
7
7
|
state: StackNavigationState<ParamListBase>;
|
|
@@ -61,7 +61,7 @@ export declare const Stack: import("react").ForwardRefExoticComponent<Omit<Omit<
|
|
|
61
61
|
}>> | undefined) | undefined;
|
|
62
62
|
} & {
|
|
63
63
|
id?: undefined;
|
|
64
|
-
}, "children"> & Partial<Pick<Omit<import("@react-navigation/native-stack
|
|
64
|
+
}, "children"> & Partial<Pick<Omit<import("@react-navigation/native-stack").NativeStackNavigatorProps, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
65
65
|
children: import("react").ReactNode;
|
|
66
66
|
layout?: ((props: {
|
|
67
67
|
state: StackNavigationState<ParamListBase>;
|
|
@@ -5,9 +5,7 @@ import { Href } from '../types';
|
|
|
5
5
|
type TabsProps = BottomTabNavigationOptions & {
|
|
6
6
|
href?: Href | null;
|
|
7
7
|
};
|
|
8
|
-
export declare const Tabs: React.ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/
|
|
9
|
-
backBehavior?: import("@react-navigation/routers/lib/typescript/commonjs/src/TabRouter").BackBehavior | undefined;
|
|
10
|
-
} & import("@react-navigation/bottom-tabs/lib/typescript/commonjs/src/types").BottomTabNavigationConfig, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
8
|
+
export declare const Tabs: React.ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/bottom-tabs").BottomTabNavigatorProps, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
11
9
|
children: React.ReactNode;
|
|
12
10
|
layout?: ((props: {
|
|
13
11
|
state: TabNavigationState<ParamListBase>;
|
|
@@ -67,9 +65,7 @@ export declare const Tabs: React.ForwardRefExoticComponent<Omit<Omit<import("@re
|
|
|
67
65
|
}>> | undefined) | undefined;
|
|
68
66
|
} & {
|
|
69
67
|
id?: undefined;
|
|
70
|
-
}, "children"> & Partial<Pick<Omit<import("@react-navigation/
|
|
71
|
-
backBehavior?: import("@react-navigation/routers/lib/typescript/commonjs/src/TabRouter").BackBehavior | undefined;
|
|
72
|
-
} & import("@react-navigation/bottom-tabs/lib/typescript/commonjs/src/types").BottomTabNavigationConfig, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
68
|
+
}, "children"> & Partial<Pick<Omit<import("@react-navigation/bottom-tabs").BottomTabNavigatorProps, "initialRouteName" | "children" | "layout" | "id" | "screenOptions" | "screenListeners" | "screenLayout" | "UNSTABLE_getStateForRouteNamesChange"> & import("@react-navigation/native").DefaultRouterOptions<string> & {
|
|
73
69
|
children: React.ReactNode;
|
|
74
70
|
layout?: ((props: {
|
|
75
71
|
state: TabNavigationState<ParamListBase>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsClient.d.ts","sourceRoot":"","sources":["../../src/layouts/TabsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAKhC,KAAK,SAAS,GAAG,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAAC;AAErE,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"TabsClient.d.ts","sourceRoot":"","sources":["../../src/layouts/TabsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAKhC,KAAK,SAAS,GAAG,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAAC;AAErE,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCf,CAAC;AAEH,eAAe,IAAI,CAAC"}
|
package/build/rsc/middleware.js
CHANGED
|
@@ -38,6 +38,7 @@ async function getSSRManifest(distFolder, platform) {
|
|
|
38
38
|
return interopDefault(await (0, _async_server_import_1.asyncServerImport)(filePath));
|
|
39
39
|
}
|
|
40
40
|
async function renderRscWithImportsAsync(distFolder, imports, { body, platform, searchParams, config, method, input, contentType, headers }) {
|
|
41
|
+
globalThis.__expo_platform_header = platform;
|
|
41
42
|
if (method === 'POST' && !body) {
|
|
42
43
|
throw new Error('Server request must be provided when method is POST (server actions)');
|
|
43
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/rsc/middleware.ts"],"names":[],"mappings":";;;;;;AASA,2EAAqE;AACrE,0DAA6B;AAE7B,iDAA2C;AAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC;AAE3D,kEAAkE;AAClE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAC;AAEhD,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,0GAA0G;IAC1G,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;KACxC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ;IAC9B,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;QACtE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;YACtE,OAAO,GAAG,CAAC,OAAO,CAAC;SACpB;QACD,OAAO,GAAG,CAAC,OAAO,CAAC;KACpB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,UAAkB,EAClB,QAAgB;IAahB,MAAM,QAAQ,GAAG,aAAa,QAAQ,qBAAqB,CAAC;IAC5D,OAAO,cAAc,CAAC,MAAM,IAAA,wCAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,UAAkB,EAClB,QAAgB;IAahB,MAAM,QAAQ,GAAG,aAAa,QAAQ,kBAAkB,CAAC;IACzD,OAAO,cAAc,CAAC,MAAM,IAAA,wCAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;AAC3D,CAAC;AAOM,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,OAAkB,EAClB,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAiB;IAE5F,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;KACzF;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/rsc/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright © 2024 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n// This module is bundled with Metro in web/react-server mode and redirects to platform specific renderers.\nimport type { RenderRscArgs } from '@expo/server/build/middleware/rsc';\nimport { asyncServerImport } from 'expo-router/_async-server-import';\nimport path from 'node:path';\n\nimport { renderRsc } from './rsc-renderer';\n\nconst debug = require('debug')('expo:server:rsc-renderer');\n\n// Tracking the implementation in expo/cli's MetroBundlerDevServer\nconst rscRenderContext = new Map<string, any>();\n\nfunction getRscRenderContext(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRenderContext.has(platform)) {\n return rscRenderContext.get(platform)!;\n }\n\n const context = {};\n\n rscRenderContext.set(platform, context);\n return context;\n}\n\nfunction interopDefault(mod: any) {\n if ('default' in mod && typeof mod.default === 'object' && mod.default) {\n const def = mod.default;\n if ('default' in def && typeof def.default === 'object' && def.default) {\n return def.default;\n }\n return mod.default;\n }\n return mod;\n}\n\nasync function getServerActionManifest(\n distFolder: string,\n platform: string\n): Promise<\n Record<\n // Input ID\n string,\n [\n // Metro ID\n string,\n // Chunk location.\n string,\n ]\n >\n> {\n const filePath = `../../rsc/${platform}/action-manifest.js`;\n return interopDefault(await asyncServerImport(filePath));\n}\n\nasync function getSSRManifest(\n distFolder: string,\n platform: string\n): Promise<\n Record<\n // Input ID\n string,\n [\n // Metro ID\n string,\n // Chunk location.\n string,\n ]\n >\n> {\n const filePath = `../../rsc/${platform}/ssr-manifest.js`;\n return interopDefault(await asyncServerImport(filePath));\n}\n\n// The import map allows us to use external modules from different bundling contexts.\ntype ImportMap = {\n router: () => Promise<typeof import('./router/expo-definedRouter')>;\n};\n\nexport async function renderRscWithImportsAsync(\n distFolder: string,\n imports: ImportMap,\n { body, platform, searchParams, config, method, input, contentType, headers }: RenderRscArgs\n): Promise<ReadableStream<any>> {\n globalThis.__expo_platform_header = platform;\n if (method === 'POST' && !body) {\n throw new Error('Server request must be provided when method is POST (server actions)');\n }\n\n const context = getRscRenderContext(platform);\n context['__expo_requestHeaders'] = headers;\n\n const entries = await imports.router();\n\n const ssrManifest = await getSSRManifest(distFolder, platform);\n const actionManifest = await getServerActionManifest(distFolder, platform);\n return renderRsc(\n {\n body: body ?? undefined,\n context,\n config,\n input,\n contentType,\n decodedBody: searchParams.get('x-expo-params'),\n },\n {\n isExporting: true,\n\n resolveClientEntry(file: string, isServer: boolean) {\n debug('resolveClientEntry', file, { isServer });\n\n if (isServer) {\n if (!(file in actionManifest)) {\n throw new Error(\n `Could not find file in server action manifest: ${file}. ${JSON.stringify(actionManifest)}`\n );\n }\n\n const [id, chunk] = actionManifest[file];\n return {\n id,\n chunks: chunk ? [chunk] : [],\n };\n }\n\n if (!(file in ssrManifest)) {\n throw new Error(`Could not find file in SSR manifest: ${file}`);\n }\n\n const [id, chunk] = ssrManifest[file];\n return {\n id,\n chunks: chunk ? [chunk] : [],\n };\n },\n async loadServerModuleRsc(file) {\n debug('loadServerModuleRsc', file);\n const filePath = path.join('../../../', file);\n const m = await asyncServerImport(filePath);\n\n // TODO: This is a hack to workaround a cloudflare/metro issue where there's an extra `default` wrapper.\n if (typeof caches !== 'undefined') {\n return m.default;\n }\n return m;\n },\n\n entries: entries!,\n }\n );\n}\n\nexport async function renderRscAsync(\n distFolder: string,\n args: RenderRscArgs\n): Promise<ReadableStream<any>> {\n const platform = args.platform;\n return renderRscWithImportsAsync(\n distFolder,\n {\n router: () => {\n // Assumes this file is saved to: `dist/server/_expo/functions/_flight/[...rsc].js`\n const filePath = `../../rsc/${platform}/router.js`;\n return asyncServerImport(filePath);\n },\n },\n args\n );\n}\n"]}
|
|
@@ -74,7 +74,9 @@ export declare function createPages(fn: (fns: {
|
|
|
74
74
|
}) => Promise<void>): {
|
|
75
75
|
renderEntries: import("../server.js").RenderEntries;
|
|
76
76
|
getBuildConfig: import("../server.js").GetBuildConfig | undefined;
|
|
77
|
-
getSsrConfig: import("../server.js").GetSsrConfig | undefined;
|
|
77
|
+
getSsrConfig: import("../server.js").GetSsrConfig | undefined; /**
|
|
78
|
+
* This is a helper type to check if a path is valid in a slug path.
|
|
79
|
+
*/
|
|
78
80
|
};
|
|
79
81
|
export {};
|
|
80
82
|
//# sourceMappingURL=create-pages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pages.d.ts","sourceRoot":"","sources":["../../../src/rsc/router/create-pages.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-pages.d.ts","sourceRoot":"","sources":["../../../src/rsc/router/create-pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/rsc/router/host.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/rsc/router/host.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAgDvC,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAC3C,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC;AAIhF,QAAA,MAAM,KAAK,MAAM,CAAC;AAClB,QAAA,MAAM,YAAY,MAAM,CAAC;AACzB,QAAA,MAAM,aAAa,MAAM,CAAC;AAE1B,KAAK,UAAU,GAAG;IAChB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC;IAC7B,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C,CAAC;AAiDF,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;CAC9C,CAAC;AAmCF;;;GAGG;AACH,eAAO,MAAM,aAAa,aACd,MAAM,SACT,OAAO,EAAE,gDAmBjB,CAAC;AAyBF,eAAO,MAAM,QAAQ,UACZ,MAAM,WACJ,OAAO,8BAEf,QA0CF,CAAC;AAqBF,eAAO,MAAM,WAAW,UAAW,MAAM,WAAW,OAAO,KAAG,IAQ7D,CAAC;AASF,eAAO,MAAM,IAAI;;oBASC,OAAO;;mCAEO,OAAO,KAAK,IAAI;cACpC,SAAS;qFAnBwB,MAAM,iBAAiB,eAAe,KAAK,IAAI,EA4C3F,CAAC;AAEF,eAAO,MAAM,UAAU,WAA4B,CAAC;AAKpD,eAAO,MAAM,IAAI;QAKX,MAAM;eACC,SAAS;eACT,SAAS;gOAcrB,CAAC;AAEF,eAAO,MAAM,QAAQ,WAA6B,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,UAAU;cAAwC,QAAQ;cAAY,SAAS;8FACpB,CAAC"}
|
package/build/rsc/router/host.js
CHANGED
|
@@ -41,6 +41,11 @@ if (!BASE_PATH.endsWith('/')) {
|
|
|
41
41
|
if (BASE_PATH === '/') {
|
|
42
42
|
throw new Error(`Invalid React Flight path "${BASE_PATH}". The path should not live at the project root, e.g. /_flight/. Dev server URL: ${(0, getDevServer_1.getDevServer)().fullBundleUrl}`);
|
|
43
43
|
}
|
|
44
|
+
if (process.env.EXPO_OS !== 'web' && !window.location?.href) {
|
|
45
|
+
// This can happen if the user attempts to use React Server Components without
|
|
46
|
+
// enabling the flags in the app.json. This will set origin to false and prevent the expo/metro-runtime polyfill from running.
|
|
47
|
+
throw new Error('window.location.href is not defined. This is required for React Server Components to work correctly. Ensure React Server Components is correctly enabled in your project and config.');
|
|
48
|
+
}
|
|
44
49
|
const RSC_CONTENT_TYPE = 'text/x-component';
|
|
45
50
|
const ENTRY = 'e';
|
|
46
51
|
const SET_ELEMENTS = 's';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/rsc/router/host.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright © 2024 650 Industries.\n * Copyright © 2024 2023 Daishi Kato\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * https://github.com/dai-shi/waku/blob/32d52242c1450b5f5965860e671ff73c42da8bd0/packages/waku/src/client.ts#L1\n */\n\n//// <reference types=\"react/canary\" />\n'use client';\n\nimport {\n createContext,\n createElement,\n memo,\n useCallback,\n useState,\n startTransition,\n // @ts-expect-error\n use,\n useEffect,\n} from 'react';\nimport type { ReactNode } from 'react';\nimport RSDWClient from 'react-server-dom-webpack/client';\n\nimport { MetroServerError, ReactServerError } from './errors';\nimport { fetch } from './fetch';\nimport { encodeInput, encodeActionId } from './utils';\nimport { getDevServer } from '../../getDevServer';\nimport { getOriginFromConstants } from '../../head/url';\n\nconst { createFromFetch, encodeReply } = RSDWClient;\n\n// TODO: Maybe this could be a bundler global instead.\nconst IS_DOM =\n // @ts-expect-error: Added via react-native-webview\n typeof ReactNativeWebView !== 'undefined';\n\n// NOTE: Ensured to start with `/`.\nconst RSC_PATH = '/_flight/' + process.env.EXPO_OS; // process.env.EXPO_RSC_PATH;\n\n// Using base URL for remote hosts isn't currently supported in DOM components as we use it for offline assets.\nconst BASE_URL = IS_DOM ? '' : process.env.EXPO_BASE_URL;\n\nlet BASE_PATH = `${BASE_URL}${RSC_PATH}`;\n\nif (!BASE_PATH.startsWith('/')) {\n BASE_PATH = '/' + BASE_PATH;\n}\n\nif (!BASE_PATH.endsWith('/')) {\n BASE_PATH += '/';\n}\n\nif (BASE_PATH === '/') {\n throw new Error(\n `Invalid React Flight path \"${BASE_PATH}\". The path should not live at the project root, e.g. /_flight/. Dev server URL: ${\n getDevServer().fullBundleUrl\n }`\n );\n}\n\ntype OnFetchData = (data: unknown) => void;\ntype SetElements = (updater: Elements | ((prev: Elements) => Elements)) => void;\n\nconst RSC_CONTENT_TYPE = 'text/x-component';\n\nconst ENTRY = 'e';\nconst SET_ELEMENTS = 's';\nconst ON_FETCH_DATA = 'o';\n\ntype FetchCache = {\n [ENTRY]?: [input: string, params: unknown, elements: Elements];\n [SET_ELEMENTS]?: SetElements;\n [ON_FETCH_DATA]?: OnFetchData | undefined;\n};\n\nconst defaultFetchCache: FetchCache = {};\n\nconst NO_CACHE_HEADERS: Record<string, string> =\n process.env.EXPO_OS === 'web'\n ? {}\n : // These are needed for iOS + Prod to get updates after the first request.\n {\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n Expires: '0',\n };\n\nconst ACTION_HEADERS = {\n ...NO_CACHE_HEADERS,\n accept: RSC_CONTENT_TYPE,\n 'expo-platform': process.env.EXPO_OS!,\n};\n\nconst checkStatus = async (responsePromise: Promise<Response>): Promise<Response> => {\n // TODO: Combine with metro async fetch logic.\n const response = await responsePromise;\n if (!response.ok) {\n // NOTE(EvanBacon): Transform the Metro development error into a JS error that can be used by LogBox.\n // This was tested against using a Class component in a server component.\n if (response.status === 500) {\n const errorText = await response.text();\n let errorJson;\n try {\n errorJson = JSON.parse(errorText);\n } catch {\n throw new ReactServerError(errorText, response.url, response.status);\n }\n // TODO: This should be a dev-only error. Add handling for production equivalent.\n throw new MetroServerError(errorJson, response.url);\n }\n\n let responseText;\n try {\n responseText = await response.text();\n } catch {\n throw new ReactServerError(response.statusText, response.url, response.status);\n }\n throw new ReactServerError(responseText, response.url, response.status);\n }\n return response;\n};\n\ntype Elements = Promise<Record<string, ReactNode>> & {\n prev?: Record<string, ReactNode> | undefined;\n};\nfunction getCached<T>(c: () => T, m: WeakMap<object, T>, k: object): T {\n return (m.has(k) ? m : m.set(k, c())).get(k) as T;\n}\n\nconst cache1 = new WeakMap();\nconst mergeElements = (a: Elements, b: Elements): Elements => {\n const getResult = () => {\n const promise: Elements = new Promise((resolve, reject) => {\n Promise.all([a, b])\n .then(([a, b]) => {\n const nextElements = { ...a, ...b };\n delete nextElements._value;\n promise.prev = a;\n resolve(nextElements);\n })\n .catch((e) => {\n a.then(\n (a) => {\n promise.prev = a;\n reject(e);\n },\n () => {\n promise.prev = a.prev;\n reject(e);\n }\n );\n });\n });\n return promise;\n };\n const cache2 = getCached(() => new WeakMap(), cache1, a);\n return getCached(getResult, cache2, b);\n};\n\n/**\n * callServer callback\n * This is not a public API.\n */\nexport const callServerRSC = async (\n actionId: string,\n args?: unknown[],\n fetchCache = defaultFetchCache\n) => {\n const url = getAdjustedRemoteFilePath(BASE_PATH + encodeInput(encodeActionId(actionId)));\n const response =\n args === undefined\n ? fetch(url, { headers: ACTION_HEADERS })\n : encodeReply(args).then((body) =>\n fetch(url, { method: 'POST', body, headers: ACTION_HEADERS })\n );\n const data = createFromFetch<Awaited<Elements>>(checkStatus(response), {\n callServer: (actionId: string, args: unknown[]) => callServerRSC(actionId, args, fetchCache),\n });\n fetchCache[ON_FETCH_DATA]?.(data);\n startTransition(() => {\n // FIXME this causes rerenders even if data is empty\n fetchCache[SET_ELEMENTS]?.((prev) => mergeElements(prev, data));\n });\n return (await data)._value;\n};\n\nconst prefetchedParams = new WeakMap<Promise<unknown>, unknown>();\n\nconst fetchRSCInternal = (url: string, params: unknown) =>\n params === undefined\n ? fetch(url, {\n // Disable caching\n headers: {\n ...NO_CACHE_HEADERS,\n 'expo-platform': process.env.EXPO_OS!,\n },\n })\n : typeof params === 'string'\n ? fetch(url, {\n headers: {\n ...NO_CACHE_HEADERS,\n 'expo-platform': process.env.EXPO_OS!,\n 'X-Expo-Params': params,\n },\n })\n : encodeReply(params).then((body) =>\n fetch(url, { method: 'POST', headers: ACTION_HEADERS, body })\n );\n\nexport const fetchRSC = (\n input: string,\n params?: unknown,\n fetchCache = defaultFetchCache\n): Elements => {\n // TODO: strip when \"is exporting\".\n if (process.env.NODE_ENV === 'development') {\n const refetchRsc = () => {\n delete fetchCache[ENTRY];\n const data = fetchRSC(input, params, fetchCache);\n fetchCache[SET_ELEMENTS]?.(() => data);\n };\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__ ||= [];\n const index = globalThis.__EXPO_RSC_RELOAD_LISTENERS__.indexOf(globalThis.__EXPO_REFETCH_RSC__);\n if (index !== -1) {\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__.splice(index, 1, refetchRsc);\n } else {\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__.push(refetchRsc);\n }\n globalThis.__EXPO_REFETCH_RSC__ = refetchRsc;\n }\n\n const entry = fetchCache[ENTRY];\n if (entry && entry[0] === input && entry[1] === params) {\n return entry[2];\n }\n\n // eslint-disable-next-line no-multi-assign\n const prefetched = ((globalThis as any).__EXPO_PREFETCHED__ ||= {});\n // TODO: Load from on-disk on native when indicated.\n // const reqPath = fetchOptions?.remote ? getAdjustedRemoteFilePath(url) : getAdjustedRemoteFilePath(url);\n const url = getAdjustedRemoteFilePath(BASE_PATH + encodeInput(input));\n const hasValidPrefetchedResponse =\n !!prefetched[url] &&\n // HACK .has() is for the initial hydration\n // It's limited and may result in a wrong result. FIXME\n (!prefetchedParams.has(prefetched[url]) || prefetchedParams.get(prefetched[url]) === params);\n const response = hasValidPrefetchedResponse ? prefetched[url] : fetchRSCInternal(url, params);\n delete prefetched[url];\n const data = createFromFetch<Awaited<Elements>>(checkStatus(response), {\n callServer: (actionId: string, args: unknown[]) => callServerRSC(actionId, args, fetchCache),\n });\n fetchCache[ON_FETCH_DATA]?.(data);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchCache[ENTRY] = [input, params, data];\n return data;\n};\n\nfunction getAdjustedRemoteFilePath(path: string): string {\n if (IS_DOM && process.env.NODE_ENV === 'production') {\n const origin = getOriginFromConstants();\n if (!origin) {\n throw new Error(\n 'Expo RSC: Origin not found in Constants. This is required for production DOM components using server actions.'\n );\n }\n // DOM components in production need to use the same origin logic as native.\n return new URL(path, origin).toString();\n }\n\n if (!IS_DOM && process.env.EXPO_OS === 'web') {\n return path;\n }\n\n return new URL(path, window.location.href).toString();\n}\n\nexport const prefetchRSC = (input: string, params?: unknown): void => {\n // eslint-disable-next-line no-multi-assign\n const prefetched = ((globalThis as any).__EXPO_PREFETCHED__ ||= {});\n const url = getAdjustedRemoteFilePath(BASE_PATH + encodeInput(input));\n if (!(url in prefetched)) {\n prefetched[url] = fetchRSCInternal(url, params);\n prefetchedParams.set(prefetched[url], params);\n }\n};\n\nconst RefetchContext = createContext<(input: string, searchParams?: URLSearchParams) => void>(\n () => {\n throw new Error('Missing Root component');\n }\n);\nconst ElementsContext = createContext<Elements | null>(null);\n\nexport const Root = ({\n initialInput,\n initialParams,\n fetchCache = defaultFetchCache,\n\n unstable_onFetchData,\n children,\n}: {\n initialInput?: string;\n initialParams?: unknown;\n fetchCache?: FetchCache;\n unstable_onFetchData?: (data: unknown) => void;\n children: ReactNode;\n}) => {\n fetchCache[ON_FETCH_DATA] = unstable_onFetchData;\n const [elements, setElements] = useState(() =>\n fetchRSC(initialInput || '', initialParams, fetchCache)\n );\n useEffect(() => {\n fetchCache[SET_ELEMENTS] = setElements;\n }, [fetchCache, setElements]);\n const refetch = useCallback(\n (input: string, params?: unknown) => {\n // clear cache entry before fetching\n delete fetchCache[ENTRY];\n const data = fetchRSC(input, params, fetchCache);\n startTransition(() => {\n setElements((prev) => mergeElements(prev, data));\n });\n },\n [fetchCache]\n );\n return createElement(\n RefetchContext.Provider,\n { value: refetch },\n createElement(ElementsContext.Provider, { value: elements }, children)\n );\n};\n\nexport const useRefetch = () => use(RefetchContext);\n\nconst ChildrenContext = createContext<ReactNode>(undefined);\nconst ChildrenContextProvider = memo(ChildrenContext.Provider);\n\nexport const Slot = ({\n id,\n children,\n fallback,\n}: {\n id: string;\n children?: ReactNode;\n fallback?: ReactNode;\n}) => {\n const elementsPromise = use(ElementsContext);\n if (!elementsPromise) {\n throw new Error('Missing Root component');\n }\n const elements = use(elementsPromise);\n if (!(id in elements)) {\n if (fallback) {\n return fallback;\n }\n throw new Error('Not found: ' + id + '. Expected: ' + Object.keys(elements).join(', '));\n }\n return createElement(ChildrenContextProvider, { value: children }, elements[id]);\n};\n\nexport const Children = () => use(ChildrenContext);\n\n/**\n * ServerRoot for SSR\n * This is not a public API.\n */\nexport const ServerRoot = ({ elements, children }: { elements: Elements; children: ReactNode }) =>\n createElement(ElementsContext.Provider, { value: elements }, children);\n"]}
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/rsc/router/host.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright © 2024 650 Industries.\n * Copyright © 2024 2023 Daishi Kato\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * https://github.com/dai-shi/waku/blob/32d52242c1450b5f5965860e671ff73c42da8bd0/packages/waku/src/client.ts#L1\n */\n\n//// <reference types=\"react/canary\" />\n'use client';\n\nimport {\n createContext,\n createElement,\n memo,\n useCallback,\n useState,\n startTransition,\n // @ts-expect-error\n use,\n useEffect,\n} from 'react';\nimport type { ReactNode } from 'react';\nimport RSDWClient from 'react-server-dom-webpack/client';\n\nimport { MetroServerError, ReactServerError } from './errors';\nimport { fetch } from './fetch';\nimport { encodeInput, encodeActionId } from './utils';\nimport { getDevServer } from '../../getDevServer';\nimport { getOriginFromConstants } from '../../head/url';\n\nconst { createFromFetch, encodeReply } = RSDWClient;\n\n// TODO: Maybe this could be a bundler global instead.\nconst IS_DOM =\n // @ts-expect-error: Added via react-native-webview\n typeof ReactNativeWebView !== 'undefined';\n\n// NOTE: Ensured to start with `/`.\nconst RSC_PATH = '/_flight/' + process.env.EXPO_OS; // process.env.EXPO_RSC_PATH;\n\n// Using base URL for remote hosts isn't currently supported in DOM components as we use it for offline assets.\nconst BASE_URL = IS_DOM ? '' : process.env.EXPO_BASE_URL;\n\nlet BASE_PATH = `${BASE_URL}${RSC_PATH}`;\n\nif (!BASE_PATH.startsWith('/')) {\n BASE_PATH = '/' + BASE_PATH;\n}\n\nif (!BASE_PATH.endsWith('/')) {\n BASE_PATH += '/';\n}\n\nif (BASE_PATH === '/') {\n throw new Error(\n `Invalid React Flight path \"${BASE_PATH}\". The path should not live at the project root, e.g. /_flight/. Dev server URL: ${\n getDevServer().fullBundleUrl\n }`\n );\n}\n\nif (process.env.EXPO_OS !== 'web' && !window.location?.href) {\n // This can happen if the user attempts to use React Server Components without\n // enabling the flags in the app.json. This will set origin to false and prevent the expo/metro-runtime polyfill from running.\n throw new Error(\n 'window.location.href is not defined. This is required for React Server Components to work correctly. Ensure React Server Components is correctly enabled in your project and config.'\n );\n}\n\ntype OnFetchData = (data: unknown) => void;\ntype SetElements = (updater: Elements | ((prev: Elements) => Elements)) => void;\n\nconst RSC_CONTENT_TYPE = 'text/x-component';\n\nconst ENTRY = 'e';\nconst SET_ELEMENTS = 's';\nconst ON_FETCH_DATA = 'o';\n\ntype FetchCache = {\n [ENTRY]?: [input: string, params: unknown, elements: Elements];\n [SET_ELEMENTS]?: SetElements;\n [ON_FETCH_DATA]?: OnFetchData | undefined;\n};\n\nconst defaultFetchCache: FetchCache = {};\n\nconst NO_CACHE_HEADERS: Record<string, string> =\n process.env.EXPO_OS === 'web'\n ? {}\n : // These are needed for iOS + Prod to get updates after the first request.\n {\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n Expires: '0',\n };\n\nconst ACTION_HEADERS = {\n ...NO_CACHE_HEADERS,\n accept: RSC_CONTENT_TYPE,\n 'expo-platform': process.env.EXPO_OS!,\n};\n\nconst checkStatus = async (responsePromise: Promise<Response>): Promise<Response> => {\n // TODO: Combine with metro async fetch logic.\n const response = await responsePromise;\n if (!response.ok) {\n // NOTE(EvanBacon): Transform the Metro development error into a JS error that can be used by LogBox.\n // This was tested against using a Class component in a server component.\n if (response.status === 500) {\n const errorText = await response.text();\n let errorJson;\n try {\n errorJson = JSON.parse(errorText);\n } catch {\n throw new ReactServerError(errorText, response.url, response.status);\n }\n // TODO: This should be a dev-only error. Add handling for production equivalent.\n throw new MetroServerError(errorJson, response.url);\n }\n\n let responseText;\n try {\n responseText = await response.text();\n } catch {\n throw new ReactServerError(response.statusText, response.url, response.status);\n }\n throw new ReactServerError(responseText, response.url, response.status);\n }\n return response;\n};\n\ntype Elements = Promise<Record<string, ReactNode>> & {\n prev?: Record<string, ReactNode> | undefined;\n};\nfunction getCached<T>(c: () => T, m: WeakMap<object, T>, k: object): T {\n return (m.has(k) ? m : m.set(k, c())).get(k) as T;\n}\n\nconst cache1 = new WeakMap();\nconst mergeElements = (a: Elements, b: Elements): Elements => {\n const getResult = () => {\n const promise: Elements = new Promise((resolve, reject) => {\n Promise.all([a, b])\n .then(([a, b]) => {\n const nextElements = { ...a, ...b };\n delete nextElements._value;\n promise.prev = a;\n resolve(nextElements);\n })\n .catch((e) => {\n a.then(\n (a) => {\n promise.prev = a;\n reject(e);\n },\n () => {\n promise.prev = a.prev;\n reject(e);\n }\n );\n });\n });\n return promise;\n };\n const cache2 = getCached(() => new WeakMap(), cache1, a);\n return getCached(getResult, cache2, b);\n};\n\n/**\n * callServer callback\n * This is not a public API.\n */\nexport const callServerRSC = async (\n actionId: string,\n args?: unknown[],\n fetchCache = defaultFetchCache\n) => {\n const url = getAdjustedRemoteFilePath(BASE_PATH + encodeInput(encodeActionId(actionId)));\n const response =\n args === undefined\n ? fetch(url, { headers: ACTION_HEADERS })\n : encodeReply(args).then((body) =>\n fetch(url, { method: 'POST', body, headers: ACTION_HEADERS })\n );\n const data = createFromFetch<Awaited<Elements>>(checkStatus(response), {\n callServer: (actionId: string, args: unknown[]) => callServerRSC(actionId, args, fetchCache),\n });\n fetchCache[ON_FETCH_DATA]?.(data);\n startTransition(() => {\n // FIXME this causes rerenders even if data is empty\n fetchCache[SET_ELEMENTS]?.((prev) => mergeElements(prev, data));\n });\n return (await data)._value;\n};\n\nconst prefetchedParams = new WeakMap<Promise<unknown>, unknown>();\n\nconst fetchRSCInternal = (url: string, params: unknown) =>\n params === undefined\n ? fetch(url, {\n // Disable caching\n headers: {\n ...NO_CACHE_HEADERS,\n 'expo-platform': process.env.EXPO_OS!,\n },\n })\n : typeof params === 'string'\n ? fetch(url, {\n headers: {\n ...NO_CACHE_HEADERS,\n 'expo-platform': process.env.EXPO_OS!,\n 'X-Expo-Params': params,\n },\n })\n : encodeReply(params).then((body) =>\n fetch(url, { method: 'POST', headers: ACTION_HEADERS, body })\n );\n\nexport const fetchRSC = (\n input: string,\n params?: unknown,\n fetchCache = defaultFetchCache\n): Elements => {\n // TODO: strip when \"is exporting\".\n if (process.env.NODE_ENV === 'development') {\n const refetchRsc = () => {\n delete fetchCache[ENTRY];\n const data = fetchRSC(input, params, fetchCache);\n fetchCache[SET_ELEMENTS]?.(() => data);\n };\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__ ||= [];\n const index = globalThis.__EXPO_RSC_RELOAD_LISTENERS__.indexOf(globalThis.__EXPO_REFETCH_RSC__);\n if (index !== -1) {\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__.splice(index, 1, refetchRsc);\n } else {\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__.push(refetchRsc);\n }\n globalThis.__EXPO_REFETCH_RSC__ = refetchRsc;\n }\n\n const entry = fetchCache[ENTRY];\n if (entry && entry[0] === input && entry[1] === params) {\n return entry[2];\n }\n\n // eslint-disable-next-line no-multi-assign\n const prefetched = ((globalThis as any).__EXPO_PREFETCHED__ ||= {});\n // TODO: Load from on-disk on native when indicated.\n // const reqPath = fetchOptions?.remote ? getAdjustedRemoteFilePath(url) : getAdjustedRemoteFilePath(url);\n const url = getAdjustedRemoteFilePath(BASE_PATH + encodeInput(input));\n const hasValidPrefetchedResponse =\n !!prefetched[url] &&\n // HACK .has() is for the initial hydration\n // It's limited and may result in a wrong result. FIXME\n (!prefetchedParams.has(prefetched[url]) || prefetchedParams.get(prefetched[url]) === params);\n const response = hasValidPrefetchedResponse ? prefetched[url] : fetchRSCInternal(url, params);\n delete prefetched[url];\n const data = createFromFetch<Awaited<Elements>>(checkStatus(response), {\n callServer: (actionId: string, args: unknown[]) => callServerRSC(actionId, args, fetchCache),\n });\n fetchCache[ON_FETCH_DATA]?.(data);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchCache[ENTRY] = [input, params, data];\n return data;\n};\n\nfunction getAdjustedRemoteFilePath(path: string): string {\n if (IS_DOM && process.env.NODE_ENV === 'production') {\n const origin = getOriginFromConstants();\n if (!origin) {\n throw new Error(\n 'Expo RSC: Origin not found in Constants. This is required for production DOM components using server actions.'\n );\n }\n // DOM components in production need to use the same origin logic as native.\n return new URL(path, origin).toString();\n }\n\n if (!IS_DOM && process.env.EXPO_OS === 'web') {\n return path;\n }\n\n return new URL(path, window.location.href).toString();\n}\n\nexport const prefetchRSC = (input: string, params?: unknown): void => {\n // eslint-disable-next-line no-multi-assign\n const prefetched = ((globalThis as any).__EXPO_PREFETCHED__ ||= {});\n const url = getAdjustedRemoteFilePath(BASE_PATH + encodeInput(input));\n if (!(url in prefetched)) {\n prefetched[url] = fetchRSCInternal(url, params);\n prefetchedParams.set(prefetched[url], params);\n }\n};\n\nconst RefetchContext = createContext<(input: string, searchParams?: URLSearchParams) => void>(\n () => {\n throw new Error('Missing Root component');\n }\n);\nconst ElementsContext = createContext<Elements | null>(null);\n\nexport const Root = ({\n initialInput,\n initialParams,\n fetchCache = defaultFetchCache,\n\n unstable_onFetchData,\n children,\n}: {\n initialInput?: string;\n initialParams?: unknown;\n fetchCache?: FetchCache;\n unstable_onFetchData?: (data: unknown) => void;\n children: ReactNode;\n}) => {\n fetchCache[ON_FETCH_DATA] = unstable_onFetchData;\n const [elements, setElements] = useState(() =>\n fetchRSC(initialInput || '', initialParams, fetchCache)\n );\n useEffect(() => {\n fetchCache[SET_ELEMENTS] = setElements;\n }, [fetchCache, setElements]);\n const refetch = useCallback(\n (input: string, params?: unknown) => {\n // clear cache entry before fetching\n delete fetchCache[ENTRY];\n const data = fetchRSC(input, params, fetchCache);\n startTransition(() => {\n setElements((prev) => mergeElements(prev, data));\n });\n },\n [fetchCache]\n );\n return createElement(\n RefetchContext.Provider,\n { value: refetch },\n createElement(ElementsContext.Provider, { value: elements }, children)\n );\n};\n\nexport const useRefetch = () => use(RefetchContext);\n\nconst ChildrenContext = createContext<ReactNode>(undefined);\nconst ChildrenContextProvider = memo(ChildrenContext.Provider);\n\nexport const Slot = ({\n id,\n children,\n fallback,\n}: {\n id: string;\n children?: ReactNode;\n fallback?: ReactNode;\n}) => {\n const elementsPromise = use(ElementsContext);\n if (!elementsPromise) {\n throw new Error('Missing Root component');\n }\n const elements = use(elementsPromise);\n if (!(id in elements)) {\n if (fallback) {\n return fallback;\n }\n throw new Error('Not found: ' + id + '. Expected: ' + Object.keys(elements).join(', '));\n }\n return createElement(ChildrenContextProvider, { value: children }, elements[id]);\n};\n\nexport const Children = () => use(ChildrenContext);\n\n/**\n * ServerRoot for SSR\n * This is not a public API.\n */\nexport const ServerRoot = ({ elements, children }: { elements: Elements; children: ReactNode }) =>\n createElement(ElementsContext.Provider, { value: elements }, children);\n"]}
|
package/build/rsc/server.d.ts
CHANGED
|
@@ -57,7 +57,7 @@ type RenderStore = {
|
|
|
57
57
|
* This is an internal function and not for public use.
|
|
58
58
|
*/
|
|
59
59
|
export declare const runWithRenderStore: <T>(renderStore: RenderStore, fn: () => T) => T;
|
|
60
|
-
export declare function rerender(input: string, params?: unknown): void
|
|
60
|
+
export declare function rerender(input: string, params?: unknown): Promise<void>;
|
|
61
61
|
export declare function getContext<RscContext extends Record<string, unknown> = Record<string, unknown>>(): RscContext;
|
|
62
62
|
/** Get the request headers used to make the server component or action request. */
|
|
63
63
|
export declare function unstable_headers(): Promise<Headers>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/rsc/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,eAAO,MAAM,eAAe,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/rsc/server.ts"],"names":[],"mappings":"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"}
|
package/build/rsc/server.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.unstable_headers = exports.getContext = exports.rerender = exports.runWithRenderStore = exports.defineEntries = exports.REQUEST_HEADERS = void 0;
|
|
11
|
+
const async_hooks_1 = require("async_hooks");
|
|
11
12
|
exports.REQUEST_HEADERS = '__expo_requestHeaders';
|
|
12
13
|
function defineEntries(renderEntries, getBuildConfig, getSsrConfig) {
|
|
13
14
|
return { renderEntries, getBuildConfig, getSsrConfig };
|
|
@@ -16,46 +17,27 @@ exports.defineEntries = defineEntries;
|
|
|
16
17
|
// TODO(EvanBacon): This can leak between platforms and runs.
|
|
17
18
|
// We need to share this module between the server action module and the renderer module, per platform, and invalidate on refreshes.
|
|
18
19
|
function getGlobalCacheForPlatform() {
|
|
20
|
+
// HACK: This is a workaround for the shared middleware being shared between web and native.
|
|
21
|
+
// In production the shared middleware is web-only and that causes the first version of this module
|
|
22
|
+
// to be bound to web.
|
|
23
|
+
const platform = globalThis.__expo_platform_header ?? process.env.EXPO_OS;
|
|
19
24
|
if (!globalThis.__EXPO_RSC_CACHE__) {
|
|
20
25
|
globalThis.__EXPO_RSC_CACHE__ = new Map();
|
|
21
26
|
}
|
|
22
|
-
if (globalThis.__EXPO_RSC_CACHE__.has(
|
|
23
|
-
return globalThis.__EXPO_RSC_CACHE__.get(
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const { AsyncLocalStorage } = require('node:async_hooks');
|
|
27
|
-
// @ts-expect-error: This is a Node.js feature.
|
|
28
|
-
const serverCache = new AsyncLocalStorage();
|
|
29
|
-
globalThis.__EXPO_RSC_CACHE__.set(process.env.EXPO_OS, serverCache);
|
|
30
|
-
return serverCache;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
console.log('[RSC]: Failed to create cache:', error);
|
|
34
|
-
// Fallback to a simple in-memory cache.
|
|
35
|
-
const cache = new Map();
|
|
36
|
-
const serverCache = {
|
|
37
|
-
getStore: () => cache.get('store'),
|
|
38
|
-
run: (store, fn) => {
|
|
39
|
-
cache.set('store', store);
|
|
40
|
-
try {
|
|
41
|
-
return fn();
|
|
42
|
-
}
|
|
43
|
-
finally {
|
|
44
|
-
cache.delete('store');
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
globalThis.__EXPO_RSC_CACHE__.set(process.env.EXPO_OS, serverCache);
|
|
49
|
-
return serverCache;
|
|
27
|
+
if (globalThis.__EXPO_RSC_CACHE__.has(platform)) {
|
|
28
|
+
return globalThis.__EXPO_RSC_CACHE__.get(platform);
|
|
50
29
|
}
|
|
30
|
+
const serverCache = new async_hooks_1.AsyncLocalStorage();
|
|
31
|
+
globalThis.__EXPO_RSC_CACHE__.set(platform, serverCache);
|
|
32
|
+
return serverCache;
|
|
51
33
|
}
|
|
52
34
|
let previousRenderStore;
|
|
53
35
|
let currentRenderStore;
|
|
54
|
-
const renderStorage = getGlobalCacheForPlatform();
|
|
55
36
|
/**
|
|
56
37
|
* This is an internal function and not for public use.
|
|
57
38
|
*/
|
|
58
39
|
const runWithRenderStore = (renderStore, fn) => {
|
|
40
|
+
const renderStorage = getGlobalCacheForPlatform();
|
|
59
41
|
if (renderStorage) {
|
|
60
42
|
return renderStorage.run(renderStore, fn);
|
|
61
43
|
}
|
|
@@ -69,18 +51,20 @@ const runWithRenderStore = (renderStore, fn) => {
|
|
|
69
51
|
}
|
|
70
52
|
};
|
|
71
53
|
exports.runWithRenderStore = runWithRenderStore;
|
|
72
|
-
function rerender(input, params) {
|
|
73
|
-
const
|
|
54
|
+
async function rerender(input, params) {
|
|
55
|
+
const renderStorage = getGlobalCacheForPlatform();
|
|
56
|
+
const renderStore = renderStorage.getStore() ?? currentRenderStore;
|
|
74
57
|
if (!renderStore) {
|
|
75
|
-
throw new Error('Render store is not available');
|
|
58
|
+
throw new Error('Render store is not available for rerender');
|
|
76
59
|
}
|
|
77
60
|
renderStore.rerender(input, params);
|
|
78
61
|
}
|
|
79
62
|
exports.rerender = rerender;
|
|
80
63
|
function getContext() {
|
|
81
|
-
const
|
|
64
|
+
const renderStorage = getGlobalCacheForPlatform();
|
|
65
|
+
const renderStore = renderStorage.getStore() ?? currentRenderStore;
|
|
82
66
|
if (!renderStore) {
|
|
83
|
-
throw new Error('Render store is not available');
|
|
67
|
+
throw new Error('Render store is not available for accessing context');
|
|
84
68
|
}
|
|
85
69
|
return renderStore.context;
|
|
86
70
|
}
|
package/build/rsc/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rsc/server.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rsc/server.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright © 2024 650 Industries.\n * Copyright © 2024 2023 Daishi Kato\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsyncLocalStorage } from 'async_hooks';\nimport type { ReactNode } from 'react';\n\nimport type { PathSpec } from './path';\n\nexport const REQUEST_HEADERS = '__expo_requestHeaders';\n\ndeclare let globalThis: {\n __EXPO_RSC_CACHE__?: Map<string, any>;\n __expo_platform_header?: string;\n __webpack_chunk_load__: (id: string) => Promise<any>;\n __webpack_require__: (id: string) => any;\n};\n\ntype Config = any;\n\ntype Elements = Record<string, ReactNode>;\n\nexport type BuildConfig = {\n pathname: string | PathSpec; // TODO drop support for string?\n isStatic?: boolean | undefined;\n entries?: {\n input: string;\n skipPrefetch?: boolean | undefined;\n isStatic?: boolean | undefined;\n }[];\n context?: Record<string, unknown>;\n customCode?: string; // optional code to inject TODO hope to remove this\n customData?: unknown; // should be serializable with JSON.stringify\n}[];\n\nexport type RenderEntries = (\n input: string,\n options: {\n params: unknown | undefined;\n buildConfig: BuildConfig | undefined;\n }\n) => Promise<Elements | null>;\n\nexport type GetBuildConfig = (\n unstable_collectClientModules: (input: string) => Promise<string[]>\n) => Promise<BuildConfig>;\n\nexport type GetSsrConfig = (\n pathname: string,\n options: {\n searchParams: URLSearchParams;\n buildConfig?: BuildConfig | undefined;\n }\n) => Promise<{\n input: string;\n searchParams?: URLSearchParams;\n html: ReactNode;\n} | null>;\n\nexport function defineEntries(\n renderEntries: RenderEntries,\n getBuildConfig?: GetBuildConfig,\n getSsrConfig?: GetSsrConfig\n) {\n return { renderEntries, getBuildConfig, getSsrConfig };\n}\n\nexport type EntriesDev = {\n default: ReturnType<typeof defineEntries>;\n};\n\nexport type EntriesPrd = EntriesDev & {\n loadConfig: () => Promise<Config>;\n loadModule: (id: string) => Promise<unknown>;\n dynamicHtmlPaths: [pathSpec: PathSpec, htmlHead: string][];\n publicIndexHtml: string;\n};\n\ntype RenderStore<> = {\n rerender: (input: string, params?: unknown) => void;\n context: Record<string, unknown>;\n};\n\n// TODO(EvanBacon): This can leak between platforms and runs.\n// We need to share this module between the server action module and the renderer module, per platform, and invalidate on refreshes.\nfunction getGlobalCacheForPlatform() {\n // HACK: This is a workaround for the shared middleware being shared between web and native.\n // In production the shared middleware is web-only and that causes the first version of this module\n // to be bound to web.\n const platform = globalThis.__expo_platform_header ?? process.env.EXPO_OS;\n if (!globalThis.__EXPO_RSC_CACHE__) {\n globalThis.__EXPO_RSC_CACHE__ = new Map();\n }\n\n if (globalThis.__EXPO_RSC_CACHE__.has(platform!)) {\n return globalThis.__EXPO_RSC_CACHE__.get(platform!)!;\n }\n\n const serverCache = new AsyncLocalStorage<RenderStore>();\n\n globalThis.__EXPO_RSC_CACHE__.set(platform!, serverCache);\n\n return serverCache;\n}\n\nlet previousRenderStore: RenderStore | undefined;\nlet currentRenderStore: RenderStore | undefined;\n\n/**\n * This is an internal function and not for public use.\n */\nexport const runWithRenderStore = <T>(renderStore: RenderStore, fn: () => T): T => {\n const renderStorage = getGlobalCacheForPlatform();\n if (renderStorage) {\n return renderStorage.run(renderStore, fn);\n }\n previousRenderStore = currentRenderStore;\n currentRenderStore = renderStore;\n try {\n return fn();\n } finally {\n currentRenderStore = previousRenderStore;\n }\n};\n\nexport async function rerender(input: string, params?: unknown) {\n const renderStorage = getGlobalCacheForPlatform();\n const renderStore = renderStorage.getStore() ?? currentRenderStore;\n if (!renderStore) {\n throw new Error('Render store is not available for rerender');\n }\n renderStore.rerender(input, params);\n}\n\nexport function getContext<\n RscContext extends Record<string, unknown> = Record<string, unknown>,\n>(): RscContext {\n const renderStorage = getGlobalCacheForPlatform();\n const renderStore = renderStorage.getStore() ?? currentRenderStore;\n if (!renderStore) {\n throw new Error('Render store is not available for accessing context');\n }\n return renderStore.context as RscContext;\n}\n\n/** Get the request headers used to make the server component or action request. */\nexport async function unstable_headers(): Promise<Headers> {\n const headers = (getContext()[REQUEST_HEADERS] || {}) as Record<string, string>;\n return new ReadonlyHeaders(headers);\n}\n\nclass ReadonlyHeaders extends Headers {\n set() {\n throw new Error('Server component Headers are read-only');\n }\n append() {\n throw new Error('Server component Headers are read-only');\n }\n delete() {\n throw new Error('Server component Headers are read-only');\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-router",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.16",
|
|
4
4
|
"description": "Expo Router is a file-based router for React Native and web applications.",
|
|
5
5
|
"author": "650 Industries, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"expo"
|
|
75
75
|
],
|
|
76
76
|
"peerDependencies": {
|
|
77
|
-
"@react-navigation/drawer": "^7.
|
|
77
|
+
"@react-navigation/drawer": "^7.1.1",
|
|
78
78
|
"expo": "*",
|
|
79
79
|
"expo-constants": "*",
|
|
80
80
|
"expo-linking": "*",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
|
-
"@react-navigation/drawer": "7.
|
|
97
|
+
"@react-navigation/drawer": "^7.1.1",
|
|
98
98
|
"@testing-library/jest-native": "^5.4.2",
|
|
99
99
|
"@testing-library/react": "^15.0.7",
|
|
100
100
|
"@testing-library/react-native": "^12.5.1",
|
|
@@ -106,9 +106,9 @@
|
|
|
106
106
|
"@expo/metro-runtime": "4.0.0",
|
|
107
107
|
"@expo/server": "^0.5.0",
|
|
108
108
|
"@radix-ui/react-slot": "1.0.1",
|
|
109
|
-
"@react-navigation/bottom-tabs": "^7.
|
|
110
|
-
"@react-navigation/native": "^7.0.
|
|
111
|
-
"@react-navigation/native-stack": "^7.
|
|
109
|
+
"@react-navigation/bottom-tabs": "^7.2.0",
|
|
110
|
+
"@react-navigation/native": "^7.0.14",
|
|
111
|
+
"@react-navigation/native-stack": "^7.2.0",
|
|
112
112
|
"client-only": "^0.0.1",
|
|
113
113
|
"react-helmet-async": "^1.3.0",
|
|
114
114
|
"react-native-helmet-async": "2.0.4",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"semver": "~7.6.3",
|
|
118
118
|
"server-only": "^0.0.1"
|
|
119
119
|
},
|
|
120
|
-
"gitHead": "
|
|
120
|
+
"gitHead": "1955c7d38e69c0eb62df89d516a392ea64db6405"
|
|
121
121
|
}
|