expo-server 55.0.4 → 55.0.6
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/build/cjs/manifest.d.ts +2 -0
- package/build/cjs/rendering.d.ts +2 -1
- package/build/cjs/vendor/environment/common.js +13 -2
- package/build/cjs/vendor/environment/common.js.map +1 -1
- package/build/cjs/vendor/express.d.ts +1 -3
- package/build/cjs/vendor/express.js +7 -67
- package/build/cjs/vendor/express.js.map +1 -1
- package/build/cjs/vendor/http.d.ts +4 -2
- package/build/cjs/vendor/http.js +33 -33
- package/build/cjs/vendor/http.js.map +1 -1
- package/build/mjs/manifest.d.ts +2 -0
- package/build/mjs/rendering.d.ts +2 -1
- package/build/mjs/vendor/environment/common.js +13 -2
- package/build/mjs/vendor/environment/common.js.map +1 -1
- package/build/mjs/vendor/express.d.ts +1 -3
- package/build/mjs/vendor/express.js +2 -61
- package/build/mjs/vendor/express.js.map +1 -1
- package/build/mjs/vendor/http.d.ts +4 -2
- package/build/mjs/vendor/http.js +33 -32
- package/build/mjs/vendor/http.js.map +1 -1
- package/package.json +2 -2
package/build/cjs/manifest.d.ts
CHANGED
|
@@ -48,6 +48,8 @@ export interface RouteInfo<TRegex = RegExp | string> {
|
|
|
48
48
|
methods?: string[];
|
|
49
49
|
/** Path to the loader module for this route, typically `_expo/loaders/[ROUTE].js`. When present, the loader should be executed before rendering. */
|
|
50
50
|
loader?: string;
|
|
51
|
+
/** Per-route async chunk assets. Merged with top-level `assets` at serve time. */
|
|
52
|
+
assets?: AssetInfo;
|
|
51
53
|
}
|
|
52
54
|
export interface RoutesManifest<TRegex = RegExp | string> {
|
|
53
55
|
/**
|
package/build/cjs/rendering.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ImmutableRequest } from './ImmutableRequest';
|
|
2
|
-
import {
|
|
2
|
+
import type { AssetInfo, GetStaticContentOptions } from './manifest';
|
|
3
3
|
/**
|
|
4
4
|
* The SSR render module exported from `_expo/server/render.js`.
|
|
5
5
|
*
|
|
@@ -14,6 +14,7 @@ export interface RenderOptions {
|
|
|
14
14
|
data: unknown;
|
|
15
15
|
key: string;
|
|
16
16
|
};
|
|
17
|
+
assets?: AssetInfo;
|
|
17
18
|
}
|
|
18
19
|
export type SsrRenderFn = (request: Request, options?: RenderOptions) => Promise<string>;
|
|
19
20
|
/** Module exported from loader bundle, typically `_expo/loaders/[ROUTE].js` */
|
|
@@ -53,10 +53,11 @@ function createEnvironment(input) {
|
|
|
53
53
|
if (!ssrModule) {
|
|
54
54
|
throw new Error(`SSR module not found at: ${manifest.rendering.file}`);
|
|
55
55
|
}
|
|
56
|
-
const
|
|
56
|
+
const topLevelAssets = manifest.assets;
|
|
57
57
|
ssrRenderer = async (request, options) => {
|
|
58
58
|
const url = new URL(request.url);
|
|
59
59
|
const location = new URL(url.pathname + url.search, url.origin);
|
|
60
|
+
const assets = mergeAssets(topLevelAssets, options?.assets);
|
|
60
61
|
return ssrModule.getStaticContent(location, {
|
|
61
62
|
loader: options?.loader,
|
|
62
63
|
request,
|
|
@@ -81,13 +82,14 @@ function createEnvironment(input) {
|
|
|
81
82
|
// SSR path: Render at runtime if SSR module is available
|
|
82
83
|
const renderer = await getServerRenderer();
|
|
83
84
|
if (renderer) {
|
|
84
|
-
let renderOptions;
|
|
85
|
+
let renderOptions = { assets: route.assets };
|
|
85
86
|
try {
|
|
86
87
|
if (route.loader) {
|
|
87
88
|
const params = (0, matchers_1.parseParams)(request, route);
|
|
88
89
|
const result = await executeLoader(request, route, params);
|
|
89
90
|
const data = (0, matchers_1.isResponse)(result) ? await result.json() : result;
|
|
90
91
|
renderOptions = {
|
|
92
|
+
assets: route.assets,
|
|
91
93
|
loader: {
|
|
92
94
|
data: data ?? null,
|
|
93
95
|
key: (0, matchers_1.resolveLoaderContextKey)(route.page, params),
|
|
@@ -157,4 +159,13 @@ function createEnvironment(input) {
|
|
|
157
159
|
},
|
|
158
160
|
};
|
|
159
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Merges top-level assets with per-route async chunk assets. Top-level assets come first
|
|
164
|
+
*/
|
|
165
|
+
function mergeAssets(topLevel, routeLevel) {
|
|
166
|
+
return {
|
|
167
|
+
css: [...(topLevel?.css ?? []), ...(routeLevel?.css ?? [])],
|
|
168
|
+
js: [...(topLevel?.js ?? []), ...(routeLevel?.js ?? [])],
|
|
169
|
+
};
|
|
170
|
+
}
|
|
160
171
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/vendor/environment/common.ts"],"names":[],"mappings":";;AAoDA,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/vendor/environment/common.ts"],"names":[],"mappings":";;AAoDA,8CAuJC;AA3MD,6DAA0D;AAG1D,mDAAwF;AAExF,SAAS,kBAAkB,CAAC,QAAqB;IAC/C,OAAO;QACL,GAAG,QAAQ;QACX,UAAU,EACR,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,SAAS,EACP,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,cAAc,EACZ,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,SAAS,EACP,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,QAAQ,EACN,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;KACZ,CAAC;AACJ,CAAC;AAkBD,SAAgB,iBAAiB,CAAC,KAAuB;IACvD,iEAAiE;IACjE,IAAI,cAA2C,CAAC;IAChD,IAAI,WAAW,GAAuB,IAAI,CAAC;IAE3C,KAAK,UAAU,iBAAiB;QAC9B,IAAI,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YACvD,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC3C,IAAI,QAAQ,EAAE,SAAS,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0FAA0F;QAC1F,YAAY;QACZ,MAAM,SAAS,GAAG,CAAC,MAAM,KAAK,CAAC,UAAU,CACvC,QAAQ,CAAC,SAAS,CAAC,IAAI,CACxB,CAA8B,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,WAAW,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5D,OAAO,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBAC1C,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,UAAU,aAAa,CAC1B,OAAgB,EAChB,KAAY,EACZ,MAA8B;QAE9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAwB,CAAC;QACnF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,mCAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;QACL,iBAAiB;QAEjB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK;YAC1B,yDAAyD;YACzD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,aAAa,GAAkB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAE5D,IAAI,CAAC;oBACH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBAC3C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;wBAC3D,MAAM,IAAI,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;wBAC/D,aAAa,GAAG;4BACd,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,MAAM,EAAE;gCACN,IAAI,EAAE,IAAI,IAAI,IAAI;gCAClB,GAAG,EAAE,IAAA,kCAAuB,EAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;6BACjD;yBACF,CAAC;oBACJ,CAAC;oBACD,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;oBAC1C,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,IAAI,IAAmB,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,uDAAuD;YACvD,+CAA+C;YAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC;YAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC1D,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,UAAU;YAC5B,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAQ,CAAC;YAC7D,IAAI,OAAO,GAAG,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK;YAChC,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAE3D,IAAI,IAAA,qBAAU,EAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,OAAO;YACX,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,IAAI,QAAQ,CAAC,UAAU;oBAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjE,IAAI,QAAQ,CAAC,SAAS;oBAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/D,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS;oBAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxE,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBAC5C,IAAI,SAAS,CAAC,MAAM;wBAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACxD,CAAC;gBACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,QAAoB,EAAE,UAAsB;IAC/D,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC3D,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC"}
|
|
@@ -12,6 +12,4 @@ export declare function createRequestHandler(params: {
|
|
|
12
12
|
build: string;
|
|
13
13
|
environment?: string | null;
|
|
14
14
|
}, setup?: RequestHandlerParams): RequestHandler;
|
|
15
|
-
export
|
|
16
|
-
export declare function convertRequest(req: express.Request, res: express.Response): Request;
|
|
17
|
-
export declare function respond(res: express.Response, expoRes: Response): Promise<void>;
|
|
15
|
+
export { convertRequest, respond } from './http';
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExpoError = void 0;
|
|
3
|
+
exports.respond = exports.convertRequest = exports.ExpoError = void 0;
|
|
4
4
|
exports.createRequestHandler = createRequestHandler;
|
|
5
|
-
exports.convertHeaders = convertHeaders;
|
|
6
|
-
exports.convertRequest = convertRequest;
|
|
7
|
-
exports.respond = respond;
|
|
8
5
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
9
|
-
const node_stream_1 = require("node:stream");
|
|
10
|
-
const promises_1 = require("node:stream/promises");
|
|
11
6
|
const abstract_1 = require("./abstract");
|
|
12
7
|
const node_1 = require("./environment/node");
|
|
8
|
+
const http_1 = require("./http");
|
|
13
9
|
var abstract_2 = require("./abstract");
|
|
14
10
|
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
|
|
15
11
|
const STORE = new node_async_hooks_1.AsyncLocalStorage();
|
|
@@ -44,9 +40,9 @@ function createRequestHandler(params, setup) {
|
|
|
44
40
|
return next();
|
|
45
41
|
}
|
|
46
42
|
try {
|
|
47
|
-
const request = convertRequest(req, res);
|
|
43
|
+
const request = (0, http_1.convertRequest)(req, res);
|
|
48
44
|
const response = await requestHandler(request);
|
|
49
|
-
await respond(res, response);
|
|
45
|
+
await (0, http_1.respond)(res, response);
|
|
50
46
|
}
|
|
51
47
|
catch (error) {
|
|
52
48
|
// Express doesn't support async functions, so we have to pass along the
|
|
@@ -55,63 +51,7 @@ function createRequestHandler(params, setup) {
|
|
|
55
51
|
}
|
|
56
52
|
};
|
|
57
53
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (values) {
|
|
62
|
-
if (Array.isArray(values)) {
|
|
63
|
-
for (const value of values) {
|
|
64
|
-
headers.append(key, value);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
headers.set(key, values);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return headers;
|
|
73
|
-
}
|
|
74
|
-
function convertRawHeaders(requestHeaders) {
|
|
75
|
-
const headers = new Headers();
|
|
76
|
-
for (let index = 0; index < requestHeaders.length; index += 2) {
|
|
77
|
-
headers.append(requestHeaders[index], requestHeaders[index + 1]);
|
|
78
|
-
}
|
|
79
|
-
return headers;
|
|
80
|
-
}
|
|
81
|
-
function convertRequest(req, res) {
|
|
82
|
-
const url = new URL(`${req.protocol}://${req.get('host')}${req.url}`);
|
|
83
|
-
// Abort action/loaders once we can no longer write a response
|
|
84
|
-
const controller = new AbortController();
|
|
85
|
-
res.on('close', () => controller.abort());
|
|
86
|
-
const init = {
|
|
87
|
-
method: req.method,
|
|
88
|
-
headers: convertRawHeaders(req.rawHeaders),
|
|
89
|
-
// Cast until reason/throwIfAborted added
|
|
90
|
-
// https://github.com/mysticatea/abort-controller/issues/36
|
|
91
|
-
signal: controller.signal,
|
|
92
|
-
};
|
|
93
|
-
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
94
|
-
init.body = node_stream_1.Readable.toWeb(req);
|
|
95
|
-
init.duplex = 'half';
|
|
96
|
-
}
|
|
97
|
-
return new Request(url.href, init);
|
|
98
|
-
}
|
|
99
|
-
async function respond(res, expoRes) {
|
|
100
|
-
res.statusMessage = expoRes.statusText;
|
|
101
|
-
res.status(expoRes.status);
|
|
102
|
-
if (typeof res.setHeaders === 'function') {
|
|
103
|
-
res.setHeaders(expoRes.headers);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
for (const [key, value] of expoRes.headers.entries()) {
|
|
107
|
-
res.appendHeader(key, value);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (expoRes.body) {
|
|
111
|
-
await (0, promises_1.pipeline)(node_stream_1.Readable.fromWeb(expoRes.body), res);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
res.end();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
54
|
+
var http_2 = require("./http");
|
|
55
|
+
Object.defineProperty(exports, "convertRequest", { enumerable: true, get: function () { return http_2.convertRequest; } });
|
|
56
|
+
Object.defineProperty(exports, "respond", { enumerable: true, get: function () { return http_2.respond; } });
|
|
117
57
|
//# sourceMappingURL=express.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/vendor/express.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/vendor/express.ts"],"names":[],"mappings":";;;AA8BA,oDAwCC;AArED,uDAAqD;AAErD,yCAIoB;AACpB,6CAA2E;AAC3E,iCAAiD;AAEjD,uCAAuC;AAA9B,qGAAA,SAAS,OAAA;AAQlB,MAAM,KAAK,GAAG,IAAI,oCAAiB,EAAE,CAAC;AAQtC;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAAsD,EACtD,KAA4B;IAE5B,MAAM,GAAG,GAAG,IAAA,6BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAA,+BAAiB,EAAC;QAClC,GAAG,IAAA,oBAAa,EAAC,MAAM,CAAC;QACxB,GAAG,KAAK;KACT,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,OAAgB;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG,KAAK,EAAE,gBAAgB,CAAC;YACjD,IAAI,gBAAgB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC;oBACH,OAAO,MAAM,gBAAgB,CAAC,KAAc,CAAC,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC;oBACP,+BAA+B;gBACjC,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;QACvF,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,qBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,IAAA,cAAO,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,wEAAwE;YACxE,+BAA+B;YAC/B,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,+BAAiD;AAAxC,sGAAA,cAAc,OAAA;AAAE,+FAAA,OAAO,OAAA"}
|
|
@@ -15,5 +15,7 @@ export declare function createRequestHandler(params: {
|
|
|
15
15
|
isDevelopment?: boolean;
|
|
16
16
|
}, setup?: Partial<RequestHandlerParams>): RequestHandler;
|
|
17
17
|
export declare function convertRequest(req: http.IncomingMessage, res: http.ServerResponse): Request;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
interface RespondOptions {
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}
|
|
21
|
+
export declare function respond(nodeResponse: http.ServerResponse, webResponse: Response, options?: RespondOptions): Promise<void>;
|
package/build/cjs/vendor/http.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ExpoError = void 0;
|
|
4
4
|
exports.createRequestHandler = createRequestHandler;
|
|
5
5
|
exports.convertRequest = convertRequest;
|
|
6
|
-
exports.convertHeaders = convertHeaders;
|
|
7
6
|
exports.respond = respond;
|
|
8
7
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
9
8
|
const node_stream_1 = require("node:stream");
|
|
@@ -46,7 +45,7 @@ function createRequestHandler(params, setup) {
|
|
|
46
45
|
try {
|
|
47
46
|
const request = convertRequest(req, res);
|
|
48
47
|
const response = await requestHandler(request);
|
|
49
|
-
await respond(res, response);
|
|
48
|
+
await respond(res, response, { signal: request.signal });
|
|
50
49
|
}
|
|
51
50
|
catch (error) {
|
|
52
51
|
// http doesn't support async functions, so we have to pass along the
|
|
@@ -65,14 +64,14 @@ function convertRawHeaders(requestHeaders) {
|
|
|
65
64
|
// Convert an http request to an expo request
|
|
66
65
|
function convertRequest(req, res) {
|
|
67
66
|
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
68
|
-
// Abort action/loaders once we can no longer write a response
|
|
67
|
+
// Abort action/loaders once we can no longer write a response or request aborts
|
|
69
68
|
const controller = new AbortController();
|
|
70
|
-
res.
|
|
69
|
+
res.once('close', () => controller.abort());
|
|
70
|
+
res.once('error', (err) => controller.abort(err));
|
|
71
|
+
req.once('error', (err) => controller.abort(err));
|
|
71
72
|
const init = {
|
|
72
73
|
method: req.method,
|
|
73
74
|
headers: convertRawHeaders(req.rawHeaders),
|
|
74
|
-
// Cast until reason/throwIfAborted added
|
|
75
|
-
// https://github.com/mysticatea/abort-controller/issues/36
|
|
76
75
|
signal: controller.signal,
|
|
77
76
|
};
|
|
78
77
|
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
@@ -81,39 +80,40 @@ function convertRequest(req, res) {
|
|
|
81
80
|
}
|
|
82
81
|
return new Request(url.href, init);
|
|
83
82
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
83
|
+
/** Assign Headers to a Node.js OutgoingMessage (request) */
|
|
84
|
+
const assignOutgoingMessageHeaders = (outgoing, headers) => {
|
|
85
|
+
// Preassemble array headers, mostly only for Set-Cookie
|
|
86
|
+
// We're avoiding `getSetCookie` since support is unclear in Node 18
|
|
87
|
+
const collection = {};
|
|
88
|
+
for (const [key, value] of headers) {
|
|
89
|
+
if (Array.isArray(collection[key])) {
|
|
90
|
+
collection[key].push(value);
|
|
91
|
+
}
|
|
92
|
+
else if (collection[key] != null) {
|
|
93
|
+
collection[key] = [collection[key], value];
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
collection[key] = value;
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
res.statusMessage = expoRes.statusText;
|
|
103
|
-
res.statusCode = expoRes.status;
|
|
104
|
-
if (typeof res.setHeaders === 'function') {
|
|
105
|
-
res.setHeaders(expoRes.headers);
|
|
99
|
+
// We don't use `setHeaders` due to a Bun bug (Fix: https://github.com/oven-sh/bun/pull/27050)
|
|
100
|
+
for (const key in collection) {
|
|
101
|
+
outgoing.setHeader(key, collection[key]);
|
|
106
102
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
};
|
|
104
|
+
async function respond(nodeResponse, webResponse, options) {
|
|
105
|
+
if (nodeResponse.writableEnded || nodeResponse.destroyed) {
|
|
106
|
+
return;
|
|
111
107
|
}
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
nodeResponse.statusMessage = webResponse.statusText;
|
|
109
|
+
nodeResponse.statusCode = webResponse.status;
|
|
110
|
+
assignOutgoingMessageHeaders(nodeResponse, webResponse.headers);
|
|
111
|
+
if (webResponse.body && !options?.signal?.aborted) {
|
|
112
|
+
const body = node_stream_1.Readable.fromWeb(webResponse.body);
|
|
113
|
+
await (0, promises_1.pipeline)(body, nodeResponse, { signal: options?.signal });
|
|
114
114
|
}
|
|
115
115
|
else {
|
|
116
|
-
|
|
116
|
+
nodeResponse.end();
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/vendor/http.ts"],"names":[],"mappings":";;;AAkCA,oDAwCC;AAWD,wCAqBC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/vendor/http.ts"],"names":[],"mappings":"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"}
|
package/build/mjs/manifest.d.ts
CHANGED
|
@@ -48,6 +48,8 @@ export interface RouteInfo<TRegex = RegExp | string> {
|
|
|
48
48
|
methods?: string[];
|
|
49
49
|
/** Path to the loader module for this route, typically `_expo/loaders/[ROUTE].js`. When present, the loader should be executed before rendering. */
|
|
50
50
|
loader?: string;
|
|
51
|
+
/** Per-route async chunk assets. Merged with top-level `assets` at serve time. */
|
|
52
|
+
assets?: AssetInfo;
|
|
51
53
|
}
|
|
52
54
|
export interface RoutesManifest<TRegex = RegExp | string> {
|
|
53
55
|
/**
|
package/build/mjs/rendering.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ImmutableRequest } from './ImmutableRequest';
|
|
2
|
-
import {
|
|
2
|
+
import type { AssetInfo, GetStaticContentOptions } from './manifest';
|
|
3
3
|
/**
|
|
4
4
|
* The SSR render module exported from `_expo/server/render.js`.
|
|
5
5
|
*
|
|
@@ -14,6 +14,7 @@ export interface RenderOptions {
|
|
|
14
14
|
data: unknown;
|
|
15
15
|
key: string;
|
|
16
16
|
};
|
|
17
|
+
assets?: AssetInfo;
|
|
17
18
|
}
|
|
18
19
|
export type SsrRenderFn = (request: Request, options?: RenderOptions) => Promise<string>;
|
|
19
20
|
/** Module exported from loader bundle, typically `_expo/loaders/[ROUTE].js` */
|
|
@@ -50,10 +50,11 @@ export function createEnvironment(input) {
|
|
|
50
50
|
if (!ssrModule) {
|
|
51
51
|
throw new Error(`SSR module not found at: ${manifest.rendering.file}`);
|
|
52
52
|
}
|
|
53
|
-
const
|
|
53
|
+
const topLevelAssets = manifest.assets;
|
|
54
54
|
ssrRenderer = async (request, options) => {
|
|
55
55
|
const url = new URL(request.url);
|
|
56
56
|
const location = new URL(url.pathname + url.search, url.origin);
|
|
57
|
+
const assets = mergeAssets(topLevelAssets, options?.assets);
|
|
57
58
|
return ssrModule.getStaticContent(location, {
|
|
58
59
|
loader: options?.loader,
|
|
59
60
|
request,
|
|
@@ -78,13 +79,14 @@ export function createEnvironment(input) {
|
|
|
78
79
|
// SSR path: Render at runtime if SSR module is available
|
|
79
80
|
const renderer = await getServerRenderer();
|
|
80
81
|
if (renderer) {
|
|
81
|
-
let renderOptions;
|
|
82
|
+
let renderOptions = { assets: route.assets };
|
|
82
83
|
try {
|
|
83
84
|
if (route.loader) {
|
|
84
85
|
const params = parseParams(request, route);
|
|
85
86
|
const result = await executeLoader(request, route, params);
|
|
86
87
|
const data = isResponse(result) ? await result.json() : result;
|
|
87
88
|
renderOptions = {
|
|
89
|
+
assets: route.assets,
|
|
88
90
|
loader: {
|
|
89
91
|
data: data ?? null,
|
|
90
92
|
key: resolveLoaderContextKey(route.page, params),
|
|
@@ -154,4 +156,13 @@ export function createEnvironment(input) {
|
|
|
154
156
|
},
|
|
155
157
|
};
|
|
156
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Merges top-level assets with per-route async chunk assets. Top-level assets come first
|
|
161
|
+
*/
|
|
162
|
+
function mergeAssets(topLevel, routeLevel) {
|
|
163
|
+
return {
|
|
164
|
+
css: [...(topLevel?.css ?? []), ...(routeLevel?.css ?? [])],
|
|
165
|
+
js: [...(topLevel?.js ?? []), ...(routeLevel?.js ?? [])],
|
|
166
|
+
};
|
|
167
|
+
}
|
|
157
168
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/vendor/environment/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAExF,SAAS,kBAAkB,CAAC,QAAqB;IAC/C,OAAO;QACL,GAAG,QAAQ;QACX,UAAU,EACR,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,SAAS,EACP,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,cAAc,EACZ,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,SAAS,EACP,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;QACX,QAAQ,EACN,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjC,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE;KACZ,CAAC;AACJ,CAAC;AAkBD,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,iEAAiE;IACjE,IAAI,cAA2C,CAAC;IAChD,IAAI,WAAW,GAAuB,IAAI,CAAC;IAE3C,KAAK,UAAU,iBAAiB;QAC9B,IAAI,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YACvD,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC3C,IAAI,QAAQ,EAAE,SAAS,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0FAA0F;QAC1F,YAAY;QACZ,MAAM,SAAS,GAAG,CAAC,MAAM,KAAK,CAAC,UAAU,CACvC,QAAQ,CAAC,SAAS,CAAC,IAAI,CACxB,CAA8B,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/vendor/environment/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,4 @@ export declare function createRequestHandler(params: {
|
|
|
12
12
|
build: string;
|
|
13
13
|
environment?: string | null;
|
|
14
14
|
}, setup?: RequestHandlerParams): RequestHandler;
|
|
15
|
-
export
|
|
16
|
-
export declare function convertRequest(req: express.Request, res: express.Response): Request;
|
|
17
|
-
export declare function respond(res: express.Response, expoRes: Response): Promise<void>;
|
|
15
|
+
export { convertRequest, respond } from './http';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
import { Readable } from 'node:stream';
|
|
3
|
-
import { pipeline } from 'node:stream/promises';
|
|
4
2
|
import { createRequestHandler as createExpoHandler, } from './abstract';
|
|
5
3
|
import { createNodeEnv, createNodeRequestScope } from './environment/node';
|
|
4
|
+
import { respond, convertRequest } from './http';
|
|
6
5
|
export { ExpoError } from './abstract';
|
|
7
6
|
const STORE = new AsyncLocalStorage();
|
|
8
7
|
/**
|
|
@@ -47,63 +46,5 @@ export function createRequestHandler(params, setup) {
|
|
|
47
46
|
}
|
|
48
47
|
};
|
|
49
48
|
}
|
|
50
|
-
export
|
|
51
|
-
const headers = new Headers();
|
|
52
|
-
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
53
|
-
if (values) {
|
|
54
|
-
if (Array.isArray(values)) {
|
|
55
|
-
for (const value of values) {
|
|
56
|
-
headers.append(key, value);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
headers.set(key, values);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return headers;
|
|
65
|
-
}
|
|
66
|
-
function convertRawHeaders(requestHeaders) {
|
|
67
|
-
const headers = new Headers();
|
|
68
|
-
for (let index = 0; index < requestHeaders.length; index += 2) {
|
|
69
|
-
headers.append(requestHeaders[index], requestHeaders[index + 1]);
|
|
70
|
-
}
|
|
71
|
-
return headers;
|
|
72
|
-
}
|
|
73
|
-
export function convertRequest(req, res) {
|
|
74
|
-
const url = new URL(`${req.protocol}://${req.get('host')}${req.url}`);
|
|
75
|
-
// Abort action/loaders once we can no longer write a response
|
|
76
|
-
const controller = new AbortController();
|
|
77
|
-
res.on('close', () => controller.abort());
|
|
78
|
-
const init = {
|
|
79
|
-
method: req.method,
|
|
80
|
-
headers: convertRawHeaders(req.rawHeaders),
|
|
81
|
-
// Cast until reason/throwIfAborted added
|
|
82
|
-
// https://github.com/mysticatea/abort-controller/issues/36
|
|
83
|
-
signal: controller.signal,
|
|
84
|
-
};
|
|
85
|
-
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
86
|
-
init.body = Readable.toWeb(req);
|
|
87
|
-
init.duplex = 'half';
|
|
88
|
-
}
|
|
89
|
-
return new Request(url.href, init);
|
|
90
|
-
}
|
|
91
|
-
export async function respond(res, expoRes) {
|
|
92
|
-
res.statusMessage = expoRes.statusText;
|
|
93
|
-
res.status(expoRes.status);
|
|
94
|
-
if (typeof res.setHeaders === 'function') {
|
|
95
|
-
res.setHeaders(expoRes.headers);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
for (const [key, value] of expoRes.headers.entries()) {
|
|
99
|
-
res.appendHeader(key, value);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (expoRes.body) {
|
|
103
|
-
await pipeline(Readable.fromWeb(expoRes.body), res);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
res.end();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
49
|
+
export { convertRequest, respond } from './http';
|
|
109
50
|
//# sourceMappingURL=express.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/vendor/express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/vendor/express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EACL,oBAAoB,IAAI,iBAAiB,GAG1C,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAQtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAsD,EACtD,KAA4B;IAE5B,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,iBAAiB,CAAC;QAClC,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,GAAG,KAAK;KACT,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,OAAgB;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG,KAAK,EAAE,gBAAgB,CAAC;YACjD,IAAI,gBAAgB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC;oBACH,OAAO,MAAM,gBAAgB,CAAC,KAAc,CAAC,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC;oBACP,+BAA+B;gBACjC,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;QACvF,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,wEAAwE;YACxE,+BAA+B;YAC/B,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -15,5 +15,7 @@ export declare function createRequestHandler(params: {
|
|
|
15
15
|
isDevelopment?: boolean;
|
|
16
16
|
}, setup?: Partial<RequestHandlerParams>): RequestHandler;
|
|
17
17
|
export declare function convertRequest(req: http.IncomingMessage, res: http.ServerResponse): Request;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
interface RespondOptions {
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}
|
|
21
|
+
export declare function respond(nodeResponse: http.ServerResponse, webResponse: Response, options?: RespondOptions): Promise<void>;
|
package/build/mjs/vendor/http.js
CHANGED
|
@@ -38,7 +38,7 @@ export function createRequestHandler(params, setup) {
|
|
|
38
38
|
try {
|
|
39
39
|
const request = convertRequest(req, res);
|
|
40
40
|
const response = await requestHandler(request);
|
|
41
|
-
await respond(res, response);
|
|
41
|
+
await respond(res, response, { signal: request.signal });
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
44
|
// http doesn't support async functions, so we have to pass along the
|
|
@@ -57,14 +57,14 @@ function convertRawHeaders(requestHeaders) {
|
|
|
57
57
|
// Convert an http request to an expo request
|
|
58
58
|
export function convertRequest(req, res) {
|
|
59
59
|
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
60
|
-
// Abort action/loaders once we can no longer write a response
|
|
60
|
+
// Abort action/loaders once we can no longer write a response or request aborts
|
|
61
61
|
const controller = new AbortController();
|
|
62
|
-
res.
|
|
62
|
+
res.once('close', () => controller.abort());
|
|
63
|
+
res.once('error', (err) => controller.abort(err));
|
|
64
|
+
req.once('error', (err) => controller.abort(err));
|
|
63
65
|
const init = {
|
|
64
66
|
method: req.method,
|
|
65
67
|
headers: convertRawHeaders(req.rawHeaders),
|
|
66
|
-
// Cast until reason/throwIfAborted added
|
|
67
|
-
// https://github.com/mysticatea/abort-controller/issues/36
|
|
68
68
|
signal: controller.signal,
|
|
69
69
|
};
|
|
70
70
|
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
@@ -73,39 +73,40 @@ export function convertRequest(req, res) {
|
|
|
73
73
|
}
|
|
74
74
|
return new Request(url.href, init);
|
|
75
75
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
76
|
+
/** Assign Headers to a Node.js OutgoingMessage (request) */
|
|
77
|
+
const assignOutgoingMessageHeaders = (outgoing, headers) => {
|
|
78
|
+
// Preassemble array headers, mostly only for Set-Cookie
|
|
79
|
+
// We're avoiding `getSetCookie` since support is unclear in Node 18
|
|
80
|
+
const collection = {};
|
|
81
|
+
for (const [key, value] of headers) {
|
|
82
|
+
if (Array.isArray(collection[key])) {
|
|
83
|
+
collection[key].push(value);
|
|
84
|
+
}
|
|
85
|
+
else if (collection[key] != null) {
|
|
86
|
+
collection[key] = [collection[key], value];
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
collection[key] = value;
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
res.statusMessage = expoRes.statusText;
|
|
95
|
-
res.statusCode = expoRes.status;
|
|
96
|
-
if (typeof res.setHeaders === 'function') {
|
|
97
|
-
res.setHeaders(expoRes.headers);
|
|
92
|
+
// We don't use `setHeaders` due to a Bun bug (Fix: https://github.com/oven-sh/bun/pull/27050)
|
|
93
|
+
for (const key in collection) {
|
|
94
|
+
outgoing.setHeader(key, collection[key]);
|
|
98
95
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
};
|
|
97
|
+
export async function respond(nodeResponse, webResponse, options) {
|
|
98
|
+
if (nodeResponse.writableEnded || nodeResponse.destroyed) {
|
|
99
|
+
return;
|
|
103
100
|
}
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
nodeResponse.statusMessage = webResponse.statusText;
|
|
102
|
+
nodeResponse.statusCode = webResponse.status;
|
|
103
|
+
assignOutgoingMessageHeaders(nodeResponse, webResponse.headers);
|
|
104
|
+
if (webResponse.body && !options?.signal?.aborted) {
|
|
105
|
+
const body = Readable.fromWeb(webResponse.body);
|
|
106
|
+
await pipeline(body, nodeResponse, { signal: options?.signal });
|
|
106
107
|
}
|
|
107
108
|
else {
|
|
108
|
-
|
|
109
|
+
nodeResponse.end();
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/vendor/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EACL,oBAAoB,IAAI,iBAAiB,GAG1C,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAQtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA+E,EAC/E,KAAqC;IAErC,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,iBAAiB,CAAC;QAClC,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,GAAG,KAAK;KACT,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,OAAgB;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG,KAAK,EAAE,gBAAgB,CAAC;YACjD,IAAI,gBAAgB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC;oBACH,OAAO,MAAM,gBAAgB,CAAC,KAAc,CAAC,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC;oBACP,+BAA+B;gBACjC,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,EAAE,GAAyB,EAAE,GAAwB,EAAE,IAAkB,EAAE,EAAE;QACvF,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/vendor/http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-server",
|
|
3
|
-
"version": "55.0.
|
|
3
|
+
"version": "55.0.6",
|
|
4
4
|
"description": "Server API for Expo Router projects",
|
|
5
5
|
"main": "build/cjs/index.js",
|
|
6
6
|
"module": "build/mjs/index.js",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"engines": {
|
|
71
71
|
"node": ">=20.16.0"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "413b0450434d3e456eb391eca792ee9ac1e1efec"
|
|
74
74
|
}
|