expo-server 0.0.0 → 0.0.1
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/README.md +1 -0
- package/build/cjs/ImmutableRequest.d.ts +60 -0
- package/build/cjs/ImmutableRequest.js +160 -0
- package/build/cjs/ImmutableRequest.js.map +1 -0
- package/build/cjs/global.types.d.ts +13 -0
- package/build/cjs/global.types.js +3 -0
- package/build/cjs/global.types.js.map +1 -0
- package/build/cjs/index.d.ts +2 -0
- package/build/cjs/index.js +18 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/manifest.d.ts +27 -0
- package/build/cjs/manifest.js +3 -0
- package/build/cjs/manifest.js.map +1 -0
- package/build/cjs/middleware/rsc.d.ts +36 -0
- package/build/cjs/middleware/rsc.js +124 -0
- package/build/cjs/middleware/rsc.js.map +1 -0
- package/build/cjs/private.d.ts +2 -0
- package/build/cjs/private.js +6 -0
- package/build/cjs/private.js.map +1 -0
- package/build/cjs/runtime/api.d.ts +36 -0
- package/build/cjs/runtime/api.js +64 -0
- package/build/cjs/runtime/api.js.map +1 -0
- package/build/cjs/runtime/error.d.ts +19 -0
- package/build/cjs/runtime/error.js +69 -0
- package/build/cjs/runtime/error.js.map +1 -0
- package/build/cjs/runtime/index.d.ts +11 -0
- package/build/cjs/runtime/index.js +77 -0
- package/build/cjs/runtime/index.js.map +1 -0
- package/build/cjs/runtime/scope.d.ts +10 -0
- package/build/cjs/runtime/scope.js +12 -0
- package/build/cjs/runtime/scope.js.map +1 -0
- package/build/cjs/types.d.ts +43 -0
- package/build/cjs/types.js +3 -0
- package/build/cjs/types.js.map +1 -0
- package/build/cjs/utils/createReadableStreamFromReadable.d.ts +15 -0
- package/build/cjs/utils/createReadableStreamFromReadable.js +97 -0
- package/build/cjs/utils/createReadableStreamFromReadable.js.map +1 -0
- package/build/cjs/utils/importMetaRegistry.d.ts +3 -0
- package/build/cjs/utils/importMetaRegistry.js +30 -0
- package/build/cjs/utils/importMetaRegistry.js.map +1 -0
- package/build/cjs/utils/matchers.d.ts +12 -0
- package/build/cjs/utils/matchers.js +76 -0
- package/build/cjs/utils/matchers.js.map +1 -0
- package/build/cjs/utils/middleware.d.ts +9 -0
- package/build/cjs/utils/middleware.js +82 -0
- package/build/cjs/utils/middleware.js.map +1 -0
- package/build/cjs/vendor/abstract.d.ts +40 -0
- package/build/cjs/vendor/abstract.js +245 -0
- package/build/cjs/vendor/abstract.js.map +1 -0
- package/build/cjs/vendor/bun.d.ts +10 -0
- package/build/cjs/vendor/bun.js +22 -0
- package/build/cjs/vendor/bun.js.map +1 -0
- package/build/cjs/vendor/eas.d.ts +10 -0
- package/build/cjs/vendor/eas.js +28 -0
- package/build/cjs/vendor/eas.js.map +1 -0
- package/build/cjs/vendor/environment/common.d.ts +14 -0
- package/build/cjs/vendor/environment/common.js +66 -0
- package/build/cjs/vendor/environment/common.js.map +1 -0
- package/build/cjs/vendor/environment/node.d.ts +14 -0
- package/build/cjs/vendor/environment/node.js +55 -0
- package/build/cjs/vendor/environment/node.js.map +1 -0
- package/build/cjs/vendor/environment/workerd.d.ts +18 -0
- package/build/cjs/vendor/environment/workerd.js +72 -0
- package/build/cjs/vendor/environment/workerd.js.map +1 -0
- package/build/cjs/vendor/express.d.ts +14 -0
- package/build/cjs/vendor/express.js +100 -0
- package/build/cjs/vendor/express.js.map +1 -0
- package/build/cjs/vendor/http.d.ts +15 -0
- package/build/cjs/vendor/http.js +103 -0
- package/build/cjs/vendor/http.js.map +1 -0
- package/build/cjs/vendor/netlify.d.ts +15 -0
- package/build/cjs/vendor/netlify.js +46 -0
- package/build/cjs/vendor/netlify.js.map +1 -0
- package/build/cjs/vendor/vercel.d.ts +13 -0
- package/build/cjs/vendor/vercel.js +109 -0
- package/build/cjs/vendor/vercel.js.map +1 -0
- package/build/cjs/vendor/workerd.d.ts +11 -0
- package/build/cjs/vendor/workerd.js +22 -0
- package/build/cjs/vendor/workerd.js.map +1 -0
- package/build/mjs/ImmutableRequest.d.ts +60 -0
- package/build/mjs/ImmutableRequest.js +155 -0
- package/build/mjs/ImmutableRequest.js.map +1 -0
- package/build/mjs/global.types.d.ts +13 -0
- package/build/mjs/global.types.js +2 -0
- package/build/mjs/global.types.js.map +1 -0
- package/build/mjs/index.d.ts +2 -0
- package/build/mjs/index.js +2 -0
- package/build/mjs/index.js.map +1 -0
- package/build/mjs/manifest.d.ts +27 -0
- package/build/mjs/manifest.js +2 -0
- package/build/mjs/manifest.js.map +1 -0
- package/build/mjs/middleware/rsc.d.ts +36 -0
- package/build/mjs/middleware/rsc.js +119 -0
- package/build/mjs/middleware/rsc.js.map +1 -0
- package/build/mjs/private.d.ts +2 -0
- package/build/mjs/private.js +2 -0
- package/build/mjs/private.js.map +1 -0
- package/build/mjs/runtime/api.d.ts +36 -0
- package/build/mjs/runtime/api.js +56 -0
- package/build/mjs/runtime/api.js.map +1 -0
- package/build/mjs/runtime/error.d.ts +19 -0
- package/build/mjs/runtime/error.js +64 -0
- package/build/mjs/runtime/error.js.map +1 -0
- package/build/mjs/runtime/index.d.ts +11 -0
- package/build/mjs/runtime/index.js +74 -0
- package/build/mjs/runtime/index.js.map +1 -0
- package/build/mjs/runtime/scope.d.ts +10 -0
- package/build/mjs/runtime/scope.js +9 -0
- package/build/mjs/runtime/scope.js.map +1 -0
- package/build/mjs/types.d.ts +43 -0
- package/build/mjs/types.js +2 -0
- package/build/mjs/types.js.map +1 -0
- package/build/mjs/utils/createReadableStreamFromReadable.d.ts +15 -0
- package/build/mjs/utils/createReadableStreamFromReadable.js +93 -0
- package/build/mjs/utils/createReadableStreamFromReadable.js.map +1 -0
- package/build/mjs/utils/importMetaRegistry.d.ts +3 -0
- package/build/mjs/utils/importMetaRegistry.js +27 -0
- package/build/mjs/utils/importMetaRegistry.js.map +1 -0
- package/build/mjs/utils/matchers.d.ts +12 -0
- package/build/mjs/utils/matchers.js +69 -0
- package/build/mjs/utils/matchers.js.map +1 -0
- package/build/mjs/utils/middleware.d.ts +9 -0
- package/build/mjs/utils/middleware.js +79 -0
- package/build/mjs/utils/middleware.js.map +1 -0
- package/build/mjs/vendor/abstract.d.ts +40 -0
- package/build/mjs/vendor/abstract.js +240 -0
- package/build/mjs/vendor/abstract.js.map +1 -0
- package/build/mjs/vendor/bun.d.ts +10 -0
- package/build/mjs/vendor/bun.js +17 -0
- package/build/mjs/vendor/bun.js.map +1 -0
- package/build/mjs/vendor/eas.d.ts +10 -0
- package/build/mjs/vendor/eas.js +23 -0
- package/build/mjs/vendor/eas.js.map +1 -0
- package/build/mjs/vendor/environment/common.d.ts +14 -0
- package/build/mjs/vendor/environment/common.js +63 -0
- package/build/mjs/vendor/environment/common.js.map +1 -0
- package/build/mjs/vendor/environment/node.d.ts +14 -0
- package/build/mjs/vendor/environment/node.js +48 -0
- package/build/mjs/vendor/environment/node.js.map +1 -0
- package/build/mjs/vendor/environment/workerd.d.ts +18 -0
- package/build/mjs/vendor/environment/workerd.js +68 -0
- package/build/mjs/vendor/environment/workerd.js.map +1 -0
- package/build/mjs/vendor/express.d.ts +14 -0
- package/build/mjs/vendor/express.js +92 -0
- package/build/mjs/vendor/express.js.map +1 -0
- package/build/mjs/vendor/http.d.ts +15 -0
- package/build/mjs/vendor/http.js +95 -0
- package/build/mjs/vendor/http.js.map +1 -0
- package/build/mjs/vendor/netlify.d.ts +15 -0
- package/build/mjs/vendor/netlify.js +41 -0
- package/build/mjs/vendor/netlify.js.map +1 -0
- package/build/mjs/vendor/vercel.d.ts +13 -0
- package/build/mjs/vendor/vercel.js +101 -0
- package/build/mjs/vendor/vercel.js.map +1 -0
- package/build/mjs/vendor/workerd.d.ts +11 -0
- package/build/mjs/vendor/workerd.js +17 -0
- package/build/mjs/vendor/workerd.js.map +1 -0
- package/package.json +58 -7
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { ImmutableRequest } from '../ImmutableRequest';
|
|
2
|
+
import { getRedirectRewriteLocation, isResponse, parseParams } from '../utils/matchers';
|
|
3
|
+
import { shouldRunMiddleware } from '../utils/middleware';
|
|
4
|
+
/** Internal errors class to indicate that the server has failed
|
|
5
|
+
* @remarks
|
|
6
|
+
* This should be thrown for unexpected errors, so they show up as crashes.
|
|
7
|
+
* Typically malformed project structure, missing manifest, html or other files.
|
|
8
|
+
*/
|
|
9
|
+
export class ExpoError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'ExpoError';
|
|
13
|
+
}
|
|
14
|
+
static isExpoError(error) {
|
|
15
|
+
return !!error && error instanceof ExpoError;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function noopBeforeResponse(responseInit, _route) {
|
|
19
|
+
return responseInit;
|
|
20
|
+
}
|
|
21
|
+
export function createRequestHandler({ getRoutesManifest, getHtml, getApiRoute, handleRouteError, getMiddleware, beforeErrorResponse = noopBeforeResponse, beforeResponse = noopBeforeResponse, beforeHTMLResponse = noopBeforeResponse, beforeAPIResponse = noopBeforeResponse, }) {
|
|
22
|
+
let manifest = null;
|
|
23
|
+
return async function handler(request) {
|
|
24
|
+
if (!manifest) {
|
|
25
|
+
manifest = await getRoutesManifest();
|
|
26
|
+
}
|
|
27
|
+
return requestHandler(request, manifest);
|
|
28
|
+
};
|
|
29
|
+
async function requestHandler(incomingRequest, manifest) {
|
|
30
|
+
if (!manifest) {
|
|
31
|
+
// NOTE(@EvanBacon): Development error when Expo Router is not setup.
|
|
32
|
+
// NOTE(@kitten): If the manifest is not found, we treat this as
|
|
33
|
+
// an SSG deployment and do nothing
|
|
34
|
+
return createResponse(null, null, 'Not found', {
|
|
35
|
+
status: 404,
|
|
36
|
+
headers: new Headers({
|
|
37
|
+
'Content-Type': 'text/plain',
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
let request = incomingRequest;
|
|
42
|
+
let url = new URL(request.url);
|
|
43
|
+
if (manifest.middleware) {
|
|
44
|
+
try {
|
|
45
|
+
const middleware = await getMiddleware(manifest.middleware);
|
|
46
|
+
if (shouldRunMiddleware(request, middleware)) {
|
|
47
|
+
const middlewareResponse = await middleware.default(new ImmutableRequest(request));
|
|
48
|
+
if (middlewareResponse instanceof Response) {
|
|
49
|
+
return middlewareResponse;
|
|
50
|
+
}
|
|
51
|
+
// If middleware returns undefined/void, continue to route matching
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
// Shows RedBox in development
|
|
56
|
+
return handleRouteError(error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (manifest.redirects) {
|
|
60
|
+
for (const route of manifest.redirects) {
|
|
61
|
+
if (!route.namedRegex.test(url.pathname)) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (route.methods && !route.methods.includes(request.method)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
return respondRedirect(url, request, route);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (manifest.rewrites) {
|
|
71
|
+
for (const route of manifest.rewrites) {
|
|
72
|
+
if (!route.namedRegex.test(url.pathname)) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (route.methods && !route.methods.includes(request.method)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Replace URL and Request with rewrite target
|
|
79
|
+
url = getRedirectRewriteLocation(url, request, route);
|
|
80
|
+
request = new Request(url, request);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// First, test static routes
|
|
84
|
+
if (request.method === 'GET' || request.method === 'HEAD') {
|
|
85
|
+
for (const route of manifest.htmlRoutes) {
|
|
86
|
+
if (!route.namedRegex.test(url.pathname)) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
const html = await getHtml(request, route);
|
|
91
|
+
return respondHTML(html, route);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
// Shows RedBox in development
|
|
95
|
+
return handleRouteError(error);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Next, test API routes
|
|
100
|
+
for (const route of manifest.apiRoutes) {
|
|
101
|
+
if (!route.namedRegex.test(url.pathname)) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const mod = await getApiRoute(route);
|
|
106
|
+
return await respondAPI(mod, request, route);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
// Shows RedBox in development
|
|
110
|
+
return handleRouteError(error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Finally, test 404 routes
|
|
114
|
+
if (request.method === 'GET' || request.method === 'HEAD') {
|
|
115
|
+
for (const route of manifest.notFoundRoutes) {
|
|
116
|
+
if (!route.namedRegex.test(url.pathname)) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const contents = await getHtml(request, route);
|
|
121
|
+
return respondNotFoundHTML(contents, route);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// NOTE(@krystofwoldrich): Should we show a dismissible RedBox in development?
|
|
125
|
+
// Handle missing/corrupted not found route files
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// 404
|
|
131
|
+
return createResponse(null, null, 'Not found', {
|
|
132
|
+
status: 404,
|
|
133
|
+
headers: new Headers({ 'Content-Type': 'text/plain' }),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
function createResponse(routeType = null, route, bodyInit, responseInit) {
|
|
137
|
+
const originalStatus = responseInit.status;
|
|
138
|
+
let callbackRoute;
|
|
139
|
+
if (route && routeType) {
|
|
140
|
+
route.type = routeType;
|
|
141
|
+
callbackRoute = route;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
callbackRoute = { type: null };
|
|
145
|
+
}
|
|
146
|
+
let modifiedResponseInit = responseInit;
|
|
147
|
+
// Callback call order matters, general rule is to call more specific callbacks first.
|
|
148
|
+
if (routeType === 'html') {
|
|
149
|
+
modifiedResponseInit = beforeHTMLResponse(modifiedResponseInit, callbackRoute);
|
|
150
|
+
}
|
|
151
|
+
if (routeType === 'api') {
|
|
152
|
+
modifiedResponseInit = beforeAPIResponse(modifiedResponseInit, callbackRoute);
|
|
153
|
+
}
|
|
154
|
+
// Second to last is error response callback
|
|
155
|
+
if (originalStatus && originalStatus > 399) {
|
|
156
|
+
modifiedResponseInit = beforeErrorResponse(modifiedResponseInit, callbackRoute);
|
|
157
|
+
}
|
|
158
|
+
// Generic before response callback last
|
|
159
|
+
modifiedResponseInit = beforeResponse(modifiedResponseInit, callbackRoute);
|
|
160
|
+
return new Response(bodyInit, modifiedResponseInit);
|
|
161
|
+
}
|
|
162
|
+
function createResponseFrom(routeType = null, route, response) {
|
|
163
|
+
const modifiedResponseInit = {
|
|
164
|
+
headers: new Headers(response.headers),
|
|
165
|
+
status: response.status,
|
|
166
|
+
statusText: response.statusText,
|
|
167
|
+
cf: response.cf,
|
|
168
|
+
webSocket: response.webSocket,
|
|
169
|
+
};
|
|
170
|
+
return createResponse(routeType, route, response.body, modifiedResponseInit);
|
|
171
|
+
}
|
|
172
|
+
async function respondNotFoundHTML(html, route) {
|
|
173
|
+
if (typeof html === 'string') {
|
|
174
|
+
return createResponse('notFoundHtml', route, html, {
|
|
175
|
+
status: 404,
|
|
176
|
+
headers: new Headers({
|
|
177
|
+
'Content-Type': 'text/html',
|
|
178
|
+
}),
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
if (isResponse(html)) {
|
|
182
|
+
// Only used for development errors
|
|
183
|
+
return html;
|
|
184
|
+
}
|
|
185
|
+
throw new ExpoError(`HTML route file ${route.page}.html could not be loaded`);
|
|
186
|
+
}
|
|
187
|
+
async function respondAPI(mod, request, route) {
|
|
188
|
+
if (!mod || typeof mod !== 'object') {
|
|
189
|
+
throw new ExpoError(`API route module ${route.page} could not be loaded`);
|
|
190
|
+
}
|
|
191
|
+
if (isResponse(mod)) {
|
|
192
|
+
// Only used for development API route bundling errors
|
|
193
|
+
return mod;
|
|
194
|
+
}
|
|
195
|
+
const handler = mod[request.method];
|
|
196
|
+
if (!handler || typeof handler !== 'function') {
|
|
197
|
+
return createResponse('notAllowedApi', route, 'Method not allowed', {
|
|
198
|
+
status: 405,
|
|
199
|
+
headers: new Headers({
|
|
200
|
+
'Content-Type': 'text/plain',
|
|
201
|
+
}),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
const params = parseParams(request, route);
|
|
205
|
+
const response = await handler(request, params);
|
|
206
|
+
if (!isResponse(response)) {
|
|
207
|
+
throw new ExpoError(`API route ${request.method} handler ${route.page} resolved to a non-Response result`);
|
|
208
|
+
}
|
|
209
|
+
return createResponseFrom('api', route, response);
|
|
210
|
+
}
|
|
211
|
+
function respondHTML(html, route) {
|
|
212
|
+
if (typeof html === 'string') {
|
|
213
|
+
return createResponse('html', route, html, {
|
|
214
|
+
status: 200,
|
|
215
|
+
headers: new Headers({
|
|
216
|
+
'Content-Type': 'text/html',
|
|
217
|
+
}),
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
if (isResponse(html)) {
|
|
221
|
+
// Only used for development error responses
|
|
222
|
+
return html;
|
|
223
|
+
}
|
|
224
|
+
throw new ExpoError(`HTML route file ${route.page}.html could not be loaded`);
|
|
225
|
+
}
|
|
226
|
+
function respondRedirect(url, request, route) {
|
|
227
|
+
// NOTE(@krystofwoldrich): @expo/server would not redirect when location was empty,
|
|
228
|
+
// it would keep searching for match and eventually return 404. Worker redirects to origin.
|
|
229
|
+
const target = getRedirectRewriteLocation(url, request, route);
|
|
230
|
+
let status;
|
|
231
|
+
if (request.method === 'GET' || request.method === 'HEAD') {
|
|
232
|
+
status = route.permanent ? 301 : 302;
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
status = route.permanent ? 308 : 307;
|
|
236
|
+
}
|
|
237
|
+
return Response.redirect(target, status);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=abstract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/vendor/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type RequestHandlerParams } from './abstract';
|
|
2
|
+
export { ExpoError } from './abstract';
|
|
3
|
+
export type RequestHandler = (req: Request) => Promise<Response>;
|
|
4
|
+
/**
|
|
5
|
+
* Returns a request handler for Express that serves the response using Remix.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createRequestHandler(params: {
|
|
8
|
+
build: string;
|
|
9
|
+
environment?: string | null;
|
|
10
|
+
}, setup?: Partial<RequestHandlerParams>): RequestHandler;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { createRequestHandler as createExpoHandler } from './abstract';
|
|
3
|
+
import { createNodeEnv, createNodeRequestScope } from './environment/node';
|
|
4
|
+
export { ExpoError } from './abstract';
|
|
5
|
+
const STORE = new AsyncLocalStorage();
|
|
6
|
+
/**
|
|
7
|
+
* Returns a request handler for Express that serves the response using Remix.
|
|
8
|
+
*/
|
|
9
|
+
export function createRequestHandler(params, setup) {
|
|
10
|
+
const run = createNodeRequestScope(STORE, params);
|
|
11
|
+
const onRequest = createExpoHandler({
|
|
12
|
+
...createNodeEnv(params),
|
|
13
|
+
...setup,
|
|
14
|
+
});
|
|
15
|
+
return (request) => run(onRequest, request);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=bun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun.js","sourceRoot":"","sources":["../../../src/vendor/bun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,oBAAoB,IAAI,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAsD,EACtD,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;IACH,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type RequestHandlerParams } from './abstract';
|
|
2
|
+
import { ExecutionContext } from './environment/workerd';
|
|
3
|
+
export { ExpoError } from './abstract';
|
|
4
|
+
export type RequestHandler<Env = unknown> = (req: Request, env: Env, ctx: ExecutionContext) => Promise<Response>;
|
|
5
|
+
/**
|
|
6
|
+
* Returns a request handler for EAS Hosting deployments.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createRequestHandler<Env = unknown>(params: {
|
|
9
|
+
build?: string;
|
|
10
|
+
}, setup?: Partial<RequestHandlerParams>): RequestHandler<Env>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { createRequestScope } from '../runtime';
|
|
3
|
+
import { createRequestHandler as createExpoHandler } from './abstract';
|
|
4
|
+
import { createWorkerdEnv } from './environment/workerd';
|
|
5
|
+
export { ExpoError } from './abstract';
|
|
6
|
+
const STORE = new AsyncLocalStorage();
|
|
7
|
+
/**
|
|
8
|
+
* Returns a request handler for EAS Hosting deployments.
|
|
9
|
+
*/
|
|
10
|
+
export function createRequestHandler(params, setup) {
|
|
11
|
+
const makeRequestAPISetup = (request, _env, ctx) => ({
|
|
12
|
+
origin: request.headers.get('Origin') || 'null',
|
|
13
|
+
environment: request.headers.get('eas-environment') || null,
|
|
14
|
+
waitUntil: ctx.waitUntil?.bind(ctx),
|
|
15
|
+
});
|
|
16
|
+
const run = createRequestScope(STORE, makeRequestAPISetup);
|
|
17
|
+
const onRequest = createExpoHandler({
|
|
18
|
+
...createWorkerdEnv(params),
|
|
19
|
+
...setup,
|
|
20
|
+
});
|
|
21
|
+
return (request, env, ctx) => run(onRequest, request, env, ctx);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=eas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eas.js","sourceRoot":"","sources":["../../../src/vendor/eas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,IAAI,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA0B,EAC1B,KAAqC;IAErC,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,IAAS,EAAE,GAAqB,EAAE,EAAE,CAAC,CAAC;QACnF,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM;QAC/C,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI;QAC3D,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,iBAAiB,CAAC;QAClC,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,KAAK;KACT,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Manifest, MiddlewareInfo, Route } from '../../manifest';
|
|
2
|
+
interface EnvironmentInput {
|
|
3
|
+
readText(request: string): Promise<string | null>;
|
|
4
|
+
readJson(request: string): Promise<unknown>;
|
|
5
|
+
loadModule(request: string): Promise<unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createEnvironment(input: EnvironmentInput): {
|
|
8
|
+
getRoutesManifest(): Promise<Manifest>;
|
|
9
|
+
getHtml(_request: Request, route: Route): Promise<string | Response | null>;
|
|
10
|
+
getApiRoute(route: Route): Promise<unknown>;
|
|
11
|
+
getMiddleware(middleware: MiddlewareInfo): Promise<any>;
|
|
12
|
+
handleRouteError(error: Error): Promise<Response>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
function initManifestRegExp(manifest) {
|
|
2
|
+
return {
|
|
3
|
+
...manifest,
|
|
4
|
+
htmlRoutes: manifest.htmlRoutes.map((route) => ({
|
|
5
|
+
...route,
|
|
6
|
+
namedRegex: new RegExp(route.namedRegex),
|
|
7
|
+
})),
|
|
8
|
+
apiRoutes: manifest.apiRoutes.map((route) => ({
|
|
9
|
+
...route,
|
|
10
|
+
namedRegex: new RegExp(route.namedRegex),
|
|
11
|
+
})),
|
|
12
|
+
notFoundRoutes: manifest.notFoundRoutes.map((route) => ({
|
|
13
|
+
...route,
|
|
14
|
+
namedRegex: new RegExp(route.namedRegex),
|
|
15
|
+
})),
|
|
16
|
+
redirects: manifest.redirects?.map((route) => ({
|
|
17
|
+
...route,
|
|
18
|
+
namedRegex: new RegExp(route.namedRegex),
|
|
19
|
+
})),
|
|
20
|
+
rewrites: manifest.rewrites?.map((route) => ({
|
|
21
|
+
...route,
|
|
22
|
+
namedRegex: new RegExp(route.namedRegex),
|
|
23
|
+
})),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function createEnvironment(input) {
|
|
27
|
+
return {
|
|
28
|
+
async getRoutesManifest() {
|
|
29
|
+
const json = await input.readJson('_expo/routes.json');
|
|
30
|
+
return initManifestRegExp(json);
|
|
31
|
+
},
|
|
32
|
+
async getHtml(_request, route) {
|
|
33
|
+
let html;
|
|
34
|
+
if ((html = await input.readText(route.page + '.html')) != null) {
|
|
35
|
+
return html;
|
|
36
|
+
}
|
|
37
|
+
// Serve a static file by route name with hoisted index
|
|
38
|
+
// See: https://github.com/expo/expo/pull/27935
|
|
39
|
+
const INDEX_PATH = '/index';
|
|
40
|
+
if (route.page.endsWith(INDEX_PATH) && route.page.length > INDEX_PATH.length) {
|
|
41
|
+
const page = route.page.slice(0, -INDEX_PATH.length);
|
|
42
|
+
if ((html = await input.readText(page + '.html')) != null) {
|
|
43
|
+
return html;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
},
|
|
48
|
+
async getApiRoute(route) {
|
|
49
|
+
return input.loadModule(route.file);
|
|
50
|
+
},
|
|
51
|
+
async getMiddleware(middleware) {
|
|
52
|
+
const mod = (await input.loadModule(middleware.file));
|
|
53
|
+
if (typeof mod?.default !== 'function') {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return mod;
|
|
57
|
+
},
|
|
58
|
+
handleRouteError(error) {
|
|
59
|
+
throw error;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/vendor/environment/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ScopeDefinition } from '../../runtime/scope';
|
|
2
|
+
interface NodeEnvParams {
|
|
3
|
+
build: string;
|
|
4
|
+
environment?: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function createNodeEnv(params: NodeEnvParams): {
|
|
7
|
+
getRoutesManifest(): Promise<import("../../manifest").Manifest>;
|
|
8
|
+
getHtml(_request: Request, route: import("../../manifest").Route): Promise<string | Response | null>;
|
|
9
|
+
getApiRoute(route: import("../../manifest").Route): Promise<unknown>;
|
|
10
|
+
getMiddleware(middleware: import("../../manifest").MiddlewareInfo): Promise<any>;
|
|
11
|
+
handleRouteError(error: Error): Promise<Response>;
|
|
12
|
+
};
|
|
13
|
+
export declare function createNodeRequestScope(scopeDefinition: ScopeDefinition, params: NodeEnvParams): (fn: (request: Request) => Promise<Response>, request: Request) => Promise<Response>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { createEnvironment } from './common';
|
|
4
|
+
import { assertRuntimeFetchAPISupport } from '../../ImmutableRequest';
|
|
5
|
+
import { createRequestScope } from '../../runtime';
|
|
6
|
+
export function createNodeEnv(params) {
|
|
7
|
+
assertRuntimeFetchAPISupport();
|
|
8
|
+
async function readText(request) {
|
|
9
|
+
const filePath = path.join(params.build, request);
|
|
10
|
+
if (!fs.existsSync(filePath)) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
return await fs.promises.readFile(filePath, 'utf-8');
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async function readJson(request) {
|
|
21
|
+
const json = await readText(request);
|
|
22
|
+
return json != null ? JSON.parse(json) : null;
|
|
23
|
+
}
|
|
24
|
+
async function loadModule(request) {
|
|
25
|
+
const filePath = path.join(params.build, request);
|
|
26
|
+
if (!fs.existsSync(filePath)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
else if (/\.c?js$/.test(filePath)) {
|
|
30
|
+
return require(filePath);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return await import(filePath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return createEnvironment({
|
|
37
|
+
readText,
|
|
38
|
+
readJson,
|
|
39
|
+
loadModule,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function createNodeRequestScope(scopeDefinition, params) {
|
|
43
|
+
return createRequestScope(scopeDefinition, (request) => ({
|
|
44
|
+
origin: request.headers.get('Origin') || 'null',
|
|
45
|
+
environment: params.environment ?? process.env.NODE_ENV,
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../src/vendor/environment/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQnD,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,4BAA4B,EAAE,CAAC;IAE/B,KAAK,UAAU,QAAQ,CAAC,OAAe;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,OAAe;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,OAAe;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;QACvB,QAAQ;QACR,QAAQ;QACR,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,eAAgC,EAAE,MAAqB;IAC5F,OAAO,kBAAkB,CAAC,eAAe,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM;QAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;KACxD,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ScopeDefinition } from '../../runtime/scope';
|
|
2
|
+
interface WorkerdEnvParams {
|
|
3
|
+
build?: string;
|
|
4
|
+
environment?: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function createWorkerdEnv(params: WorkerdEnvParams): {
|
|
7
|
+
getRoutesManifest(): Promise<import("../../manifest").Manifest>;
|
|
8
|
+
getHtml(_request: Request, route: import("../../manifest").Route): Promise<string | Response | null>;
|
|
9
|
+
getApiRoute(route: import("../../manifest").Route): Promise<unknown>;
|
|
10
|
+
getMiddleware(middleware: import("../../manifest").MiddlewareInfo): Promise<any>;
|
|
11
|
+
handleRouteError(error: Error): Promise<Response>;
|
|
12
|
+
};
|
|
13
|
+
export interface ExecutionContext {
|
|
14
|
+
waitUntil?(promise: Promise<any>): void;
|
|
15
|
+
props?: any;
|
|
16
|
+
}
|
|
17
|
+
export declare function createWorkerdRequestScope<Env = unknown>(scopeDefinition: ScopeDefinition, params: WorkerdEnvParams): (fn: (request: Request, _env: Env, ctx: ExecutionContext) => Promise<Response>, request: Request, _env: Env, ctx: ExecutionContext) => Promise<Response>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createEnvironment } from './common';
|
|
2
|
+
import { createRequestScope } from '../../runtime';
|
|
3
|
+
const createCachedImport = () => {
|
|
4
|
+
const importCache = new Map();
|
|
5
|
+
return async function importCached(request) {
|
|
6
|
+
let result = importCache.get(request);
|
|
7
|
+
if (!result) {
|
|
8
|
+
try {
|
|
9
|
+
result = { type: 'success', value: await import(request) };
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
result = { type: 'error', value: error };
|
|
13
|
+
}
|
|
14
|
+
importCache.set(request, result);
|
|
15
|
+
}
|
|
16
|
+
if (result.type === 'success') {
|
|
17
|
+
return result.value;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw result.value;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export function createWorkerdEnv(params) {
|
|
25
|
+
const build = params.build || '.';
|
|
26
|
+
const importCached = createCachedImport();
|
|
27
|
+
async function readText(request) {
|
|
28
|
+
try {
|
|
29
|
+
const mod = await importCached(`${build}/${request}`);
|
|
30
|
+
return mod.default;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function readJson(request) {
|
|
37
|
+
try {
|
|
38
|
+
const mod = await importCached(`${build}/${request}`);
|
|
39
|
+
if (typeof mod.default === 'string' && mod.default[0] === '{') {
|
|
40
|
+
return JSON.parse(mod.default);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return mod.default;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function loadModule(request) {
|
|
51
|
+
const target = `${build}/${request}`;
|
|
52
|
+
return (await import(target)).default;
|
|
53
|
+
}
|
|
54
|
+
return createEnvironment({
|
|
55
|
+
readText,
|
|
56
|
+
readJson,
|
|
57
|
+
loadModule,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export function createWorkerdRequestScope(scopeDefinition, params) {
|
|
61
|
+
const makeRequestAPISetup = (request, _env, ctx) => ({
|
|
62
|
+
origin: request.headers.get('Origin') || 'null',
|
|
63
|
+
environment: params.environment ?? null,
|
|
64
|
+
waitUntil: ctx.waitUntil?.bind(ctx),
|
|
65
|
+
});
|
|
66
|
+
return createRequestScope(scopeDefinition, makeRequestAPISetup);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=workerd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerd.js","sourceRoot":"","sources":["../../../../src/vendor/environment/workerd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type * as express from 'express';
|
|
2
|
+
import { type RequestHandlerParams } from './abstract';
|
|
3
|
+
export { ExpoError } from './abstract';
|
|
4
|
+
export type RequestHandler = (req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Returns a request handler for Express that serves the response using Remix.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createRequestHandler(params: {
|
|
9
|
+
build: string;
|
|
10
|
+
environment?: string | null;
|
|
11
|
+
}, setup?: Partial<RequestHandlerParams>): RequestHandler;
|
|
12
|
+
export declare function convertHeaders(requestHeaders: express.Request['headers']): Headers;
|
|
13
|
+
export declare function convertRequest(req: express.Request, res: express.Response): Request;
|
|
14
|
+
export declare function respond(res: express.Response, expoRes: Response): Promise<void>;
|