first commit

This commit is contained in:
2026-03-10 16:18:05 +00:00
commit 11f9c069b5
31635 changed files with 3187747 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import type { Manifest, MiddlewareInfo, Route } from '../manifest';
import { MiddlewareModule } from '../utils/middleware';
/** Internal errors class to indicate that the server has failed
* @remarks
* This should be thrown for unexpected errors, so they show up as crashes.
* Typically malformed project structure, missing manifest, html or other files.
*/
export declare class ExpoError extends Error {
constructor(message: string);
static isExpoError(error: unknown): error is ExpoError;
}
type ResponseInitLike = Omit<ResponseInit, 'headers'> & {
headers: Headers;
cf?: unknown;
webSocket?: unknown;
};
type CallbackRouteType = 'html' | 'api' | 'notFoundHtml' | 'notAllowedApi';
type CallbackRoute = (Route & {
type: CallbackRouteType;
}) | {
type: null;
};
type BeforeResponseCallback = (responseInit: ResponseInitLike, route: CallbackRoute) => ResponseInitLike;
export interface RequestHandlerParams {
/** Before handler response 4XX, not before unhandled error */
beforeErrorResponse?: BeforeResponseCallback;
/** Before handler responses */
beforeResponse?: BeforeResponseCallback;
/** Before handler HTML responses, not before 404 HTML */
beforeHTMLResponse?: BeforeResponseCallback;
/** Before handler API responses */
beforeAPIResponse?: BeforeResponseCallback;
}
export interface RequestHandlerInput {
getHtml(request: Request, route: Route): Promise<string | Response | null>;
getRoutesManifest(): Promise<Manifest | null>;
getApiRoute(route: Route): Promise<any>;
getMiddleware(route: MiddlewareInfo): Promise<MiddlewareModule>;
getLoaderData(request: Request, route: Route): Promise<Response>;
}
export declare function createRequestHandler({ getRoutesManifest, getHtml, getApiRoute, getMiddleware, getLoaderData, beforeErrorResponse, beforeResponse, beforeHTMLResponse, beforeAPIResponse, }: RequestHandlerParams & RequestHandlerInput): (request: Request) => Promise<Response>;
export {};

260
node_modules/expo-server/build/cjs/vendor/abstract.js generated vendored Normal file
View File

@@ -0,0 +1,260 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
const ImmutableRequest_1 = require("../ImmutableRequest");
const matchers_1 = require("../utils/matchers");
const middleware_1 = require("../utils/middleware");
/** Internal errors class to indicate that the server has failed
* @remarks
* This should be thrown for unexpected errors, so they show up as crashes.
* Typically malformed project structure, missing manifest, html or other files.
*/
class ExpoError extends Error {
constructor(message) {
super(message);
this.name = 'ExpoError';
}
static isExpoError(error) {
return !!error && error instanceof ExpoError;
}
}
exports.ExpoError = ExpoError;
function noopBeforeResponse(responseInit, _route) {
return responseInit;
}
function createRequestHandler({ getRoutesManifest, getHtml, getApiRoute, getMiddleware, getLoaderData, beforeErrorResponse = noopBeforeResponse, beforeResponse = noopBeforeResponse, beforeHTMLResponse = noopBeforeResponse, beforeAPIResponse = noopBeforeResponse, }) {
let manifest = null;
return async function handler(request) {
manifest = await getRoutesManifest();
return requestHandler(request, manifest);
};
async function requestHandler(incomingRequest, manifest) {
if (!manifest) {
// NOTE(@EvanBacon): Development error when Expo Router is not setup.
// NOTE(@kitten): If the manifest is not found, we treat this as
// an SSG deployment and do nothing
return createResponse(null, null, 'Not found', {
status: 404,
headers: new Headers({
'Content-Type': 'text/plain',
}),
});
}
let request = incomingRequest;
let url = new URL(request.url);
if (manifest.middleware) {
const middleware = await getMiddleware(manifest.middleware);
if ((0, middleware_1.shouldRunMiddleware)(request, middleware)) {
const middlewareResponse = await middleware.default(new ImmutableRequest_1.ImmutableRequest(request));
if (middlewareResponse instanceof Response) {
return middlewareResponse;
}
// If middleware returns undefined/void, continue to route matching
}
}
if (manifest.redirects) {
for (const route of manifest.redirects) {
if (!route.namedRegex.test(url.pathname)) {
continue;
}
if (route.methods && !route.methods.includes(request.method)) {
continue;
}
return respondRedirect(url, request, route);
}
}
if (manifest.rewrites) {
for (const route of manifest.rewrites) {
if (!route.namedRegex.test(url.pathname)) {
continue;
}
if (route.methods && !route.methods.includes(request.method)) {
continue;
}
// Replace URL and Request with rewrite target
url = (0, matchers_1.getRedirectRewriteLocation)(url, request, route);
request = new Request(url, request);
}
}
// First, test static routes and loader data requests
if (request.method === 'GET' || request.method === 'HEAD') {
const isLoaderRequest = url.pathname.startsWith('/_expo/loaders/');
const matchedPath = isLoaderRequest
? url.pathname.replace('/_expo/loaders', '').replace(/\/index$/, '/')
: url.pathname;
for (const route of manifest.htmlRoutes) {
if (!route.namedRegex.test(matchedPath)) {
continue;
}
// Handle loader data requests for client-side navigation
if (isLoaderRequest) {
if (!route.loader) {
continue; // Route matched but has no loader
}
// Create a request with the actual route path so `parseParams()` works correctly
// NOTE(@hassankhan): Relocate the request rewriting logic from here
url.pathname = matchedPath;
const loaderRequest = new Request(url, request);
return createResponseFrom('api', route, await getLoaderData(loaderRequest, route));
}
const html = await getHtml(request, route);
return respondHTML(html, route);
}
}
// Next, test API routes
for (const route of manifest.apiRoutes) {
if (!route.namedRegex.test(url.pathname)) {
continue;
}
const mod = await getApiRoute(route);
return await respondAPI(mod, request, route);
}
// Finally, test 404 routes
if (request.method === 'GET' || request.method === 'HEAD') {
for (const route of manifest.notFoundRoutes) {
if (!route.namedRegex.test(url.pathname)) {
continue;
}
try {
const contents = await getHtml(request, route);
return respondNotFoundHTML(contents, route);
}
catch {
// NOTE(@krystofwoldrich): Should we show a dismissible RedBox in development?
// Handle missing/corrupted not found route files
continue;
}
}
}
// 404
return createResponse(null, null, 'Not found', {
status: 404,
headers: new Headers({ 'Content-Type': 'text/plain' }),
});
}
function createResponse(routeType = null, route, bodyInit, responseInit) {
const originalStatus = responseInit.status;
let callbackRoute;
if (route && routeType) {
route.type = routeType;
callbackRoute = route;
}
else {
callbackRoute = { type: null };
}
let modifiedResponseInit = responseInit;
// Apply user-defined headers, if provided
if (manifest?.headers) {
for (const headerName in manifest.headers) {
if (Array.isArray(manifest.headers[headerName])) {
for (const headerValue of manifest.headers[headerName]) {
modifiedResponseInit.headers.append(headerName, headerValue);
}
}
else if (manifest.headers[headerName] != null &&
!modifiedResponseInit.headers.has(headerName)) {
modifiedResponseInit.headers.set(headerName, manifest.headers[headerName]);
}
}
}
// Callback call order matters, general rule is to call more specific callbacks first.
if (routeType === 'html') {
modifiedResponseInit = beforeHTMLResponse(modifiedResponseInit, callbackRoute);
}
if (routeType === 'api') {
modifiedResponseInit = beforeAPIResponse(modifiedResponseInit, callbackRoute);
}
// Second to last is error response callback
if (typeof originalStatus === 'number' &&
(originalStatus === 0 /* Response.error() */ || originalStatus > 399)) {
modifiedResponseInit = beforeErrorResponse(modifiedResponseInit, callbackRoute);
}
// Generic before response callback last
modifiedResponseInit = beforeResponse(modifiedResponseInit, callbackRoute);
if (originalStatus === 0) {
// Response.error() results in status 0, which will cause new Response() to fail.
// We convert it to 500 only if originally 0, if cbs set the values to 0, we don't protect against it.
modifiedResponseInit.status = 500;
}
return new Response(bodyInit, modifiedResponseInit);
}
function createResponseFrom(routeType = null, route, response) {
const modifiedResponseInit = {
headers: new Headers(response.headers),
status: response.status,
statusText: response.statusText,
cf: response.cf,
webSocket: response.webSocket,
};
return createResponse(routeType, route, response.body, modifiedResponseInit);
}
async function respondNotFoundHTML(html, route) {
if (typeof html === 'string') {
return createResponse('notFoundHtml', route, html, {
status: 404,
headers: new Headers({
'Content-Type': 'text/html',
}),
});
}
if ((0, matchers_1.isResponse)(html)) {
// Only used for development errors
return html;
}
throw new ExpoError(`HTML route file ${route.page}.html could not be loaded`);
}
async function respondAPI(mod, request, route) {
if (!mod || typeof mod !== 'object') {
throw new ExpoError(`API route module ${route.page} could not be loaded`);
}
if ((0, matchers_1.isResponse)(mod)) {
// Only used for development API route bundling errors
return mod;
}
const handler = mod[request.method];
if (!handler || typeof handler !== 'function') {
return createResponse('notAllowedApi', route, 'Method not allowed', {
status: 405,
headers: new Headers({
'Content-Type': 'text/plain',
}),
});
}
const params = (0, matchers_1.parseParams)(request, route);
const response = await handler(request, params);
if (!(0, matchers_1.isResponse)(response)) {
throw new ExpoError(`API route ${request.method} handler ${route.page} resolved to a non-Response result`);
}
return createResponseFrom('api', route, response);
}
function respondHTML(html, route) {
if (typeof html === 'string') {
return createResponse('html', route, html, {
status: 200,
headers: new Headers({
'Content-Type': 'text/html',
}),
});
}
if ((0, matchers_1.isResponse)(html)) {
// Only used for development error responses
return html;
}
throw new ExpoError(`HTML route file ${route.page}.html could not be loaded`);
}
function respondRedirect(url, request, route) {
// NOTE(@krystofwoldrich): @expo/server would not redirect when location was empty,
// it would keep searching for match and eventually return 404. Worker redirects to origin.
const target = (0, matchers_1.getRedirectRewriteLocation)(url, request, route);
let status;
if (request.method === 'GET' || request.method === 'HEAD') {
status = route.permanent ? 301 : 302;
}
else {
status = route.permanent ? 308 : 307;
}
return Response.redirect(target, status);
}
}
//# sourceMappingURL=abstract.js.map

File diff suppressed because one or more lines are too long

12
node_modules/expo-server/build/cjs/vendor/bun.d.ts generated vendored Normal file
View File

@@ -0,0 +1,12 @@
import { type RequestHandlerInput as ExpoRequestHandlerInput, type RequestHandlerParams as ExpoRequestHandlerParams } from './abstract';
export { ExpoError } from './abstract';
export type RequestHandler = (req: Request) => Promise<Response>;
export interface RequestHandlerParams extends ExpoRequestHandlerParams, Partial<ExpoRequestHandlerInput> {
}
/**
* Returns a request handler for Express that serves the response using Remix.
*/
export declare function createRequestHandler(params: {
build: string;
environment?: string | null;
}, setup?: RequestHandlerParams): RequestHandler;

22
node_modules/expo-server/build/cjs/vendor/bun.js generated vendored Normal file
View File

@@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
const node_async_hooks_1 = require("node:async_hooks");
const abstract_1 = require("./abstract");
const node_1 = require("./environment/node");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const STORE = new node_async_hooks_1.AsyncLocalStorage();
/**
* Returns a request handler for Express that serves the response using Remix.
*/
function createRequestHandler(params, setup) {
const run = (0, node_1.createNodeRequestScope)(STORE, params);
const onRequest = (0, abstract_1.createRequestHandler)({
...(0, node_1.createNodeEnv)(params),
...setup,
});
return (request) => run(onRequest, request);
}
//# sourceMappingURL=bun.js.map

1
node_modules/expo-server/build/cjs/vendor/bun.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"bun.js","sourceRoot":"","sources":["../../../src/vendor/bun.ts"],"names":[],"mappings":";;;AAsBA,oDAUC;AAhCD,uDAAqD;AAErD,yCAIoB;AACpB,6CAA2E;AAE3E,uCAAuC;AAA9B,qGAAA,SAAS,OAAA;AAIlB,MAAM,KAAK,GAAG,IAAI,oCAAiB,EAAE,CAAC;AAMtC;;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;IACH,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}

13
node_modules/expo-server/build/cjs/vendor/eas.d.ts generated vendored Normal file
View File

@@ -0,0 +1,13 @@
import { type RequestHandlerParams } from './abstract';
import { ExecutionContext } from './environment/workerd';
export { ExpoError } from './abstract';
export interface RequestHandler<Env = unknown> {
(req: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
preload(): Promise<void>;
}
/**
* Returns a request handler for EAS Hosting deployments.
*/
export declare function createRequestHandler<Env = unknown>(params: {
build?: string;
}, setup?: RequestHandlerParams): RequestHandler<Env>;

30
node_modules/expo-server/build/cjs/vendor/eas.js generated vendored Normal file
View File

@@ -0,0 +1,30 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
const node_async_hooks_1 = require("node:async_hooks");
const runtime_1 = require("../runtime");
const abstract_1 = require("./abstract");
const workerd_1 = require("./environment/workerd");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const STORE = new node_async_hooks_1.AsyncLocalStorage();
/**
* Returns a request handler for EAS Hosting deployments.
*/
function createRequestHandler(params, setup) {
const makeRequestAPISetup = (request, _env, ctx) => ({
origin: request.headers.get('Origin') || null,
environment: request.headers.get('eas-environment') || null,
waitUntil: ctx.waitUntil?.bind(ctx),
});
const run = (0, runtime_1.createRequestScope)(STORE, makeRequestAPISetup);
const common = (0, workerd_1.createWorkerdEnv)(params);
const onRequest = (0, abstract_1.createRequestHandler)({ ...common, ...setup });
function handler(request, env, ctx) {
return run(onRequest, request, env, ctx);
}
handler.preload = common.preload;
return handler;
}
//# sourceMappingURL=eas.js.map

1
node_modules/expo-server/build/cjs/vendor/eas.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"eas.js","sourceRoot":"","sources":["../../../src/vendor/eas.ts"],"names":[],"mappings":";;;AAkBA,oDAmBC;AArCD,uDAAqD;AAErD,wCAAgD;AAChD,yCAAkG;AAClG,mDAA2E;AAE3E,uCAAuC;AAA9B,qGAAA,SAAS,OAAA;AAOlB,MAAM,KAAK,GAAG,IAAI,oCAAiB,EAAE,CAAC;AAEtC;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAA0B,EAC1B,KAA4B;IAE5B,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,IAAI;QAC7C,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,IAAA,4BAAkB,EAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAA,+BAAiB,EAAC,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAE7D,SAAS,OAAO,CAAC,OAAgB,EAAE,GAAQ,EAAE,GAAqB;QAChE,OAAO,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC"}

View File

@@ -0,0 +1,17 @@
import type { Manifest, MiddlewareInfo, Route } from '../../manifest';
interface EnvironmentInput {
readText(request: string): Promise<string | null>;
readJson(request: string): Promise<unknown>;
loadModule(request: string): Promise<unknown>;
isDevelopment: boolean;
}
export interface CommonEnvironment {
getRoutesManifest(): Promise<Manifest | null>;
getHtml(request: Request, route: Route): Promise<string | Response | null>;
getApiRoute(route: Route): Promise<unknown>;
getMiddleware(middleware: MiddlewareInfo): Promise<any>;
getLoaderData(request: Request, route: Route): Promise<Response>;
preload(): Promise<void>;
}
export declare function createEnvironment(input: EnvironmentInput): CommonEnvironment;
export {};

View File

@@ -0,0 +1,171 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createEnvironment = createEnvironment;
const ImmutableRequest_1 = require("../../ImmutableRequest");
const matchers_1 = require("../../utils/matchers");
function initManifestRegExp(manifest) {
return {
...manifest,
htmlRoutes: manifest.htmlRoutes?.map((route) => ({
...route,
namedRegex: new RegExp(route.namedRegex),
})) ?? [],
apiRoutes: manifest.apiRoutes?.map((route) => ({
...route,
namedRegex: new RegExp(route.namedRegex),
})) ?? [],
notFoundRoutes: manifest.notFoundRoutes?.map((route) => ({
...route,
namedRegex: new RegExp(route.namedRegex),
})) ?? [],
redirects: manifest.redirects?.map((route) => ({
...route,
namedRegex: new RegExp(route.namedRegex),
})) ?? [],
rewrites: manifest.rewrites?.map((route) => ({
...route,
namedRegex: new RegExp(route.namedRegex),
})) ?? [],
};
}
function createEnvironment(input) {
// Cached manifest and SSR renderer, initialized on first request
let cachedManifest;
let ssrRenderer = null;
async function getRoutesManifest() {
if (cachedManifest === undefined || input.isDevelopment) {
const json = await input.readJson('_expo/routes.json');
cachedManifest = json ? initManifestRegExp(json) : null;
}
return cachedManifest;
}
async function getServerRenderer() {
if (ssrRenderer && !input.isDevelopment) {
return ssrRenderer;
}
const manifest = await getRoutesManifest();
if (manifest?.rendering?.mode !== 'ssr') {
return null;
}
// If `manifest.rendering.mode === 'ssr'`, we always expect the SSR rendering module to be
// available
const ssrModule = (await input.loadModule(manifest.rendering.file));
if (!ssrModule) {
throw new Error(`SSR module not found at: ${manifest.rendering.file}`);
}
const topLevelAssets = manifest.assets;
ssrRenderer = async (request, options) => {
const url = new URL(request.url);
const location = new URL(url.pathname + url.search, url.origin);
const assets = mergeAssets(topLevelAssets, options?.assets);
return ssrModule.getStaticContent(location, {
loader: options?.loader,
request,
assets,
});
};
return ssrRenderer;
}
async function executeLoader(request, route, params) {
if (!route.loader) {
return undefined;
}
const loaderModule = (await input.loadModule(route.loader));
if (!loaderModule) {
throw new Error(`Loader module not found at: ${route.loader}`);
}
return loaderModule.loader(new ImmutableRequest_1.ImmutableRequest(request), params);
}
return {
getRoutesManifest,
async getHtml(request, route) {
// SSR path: Render at runtime if SSR module is available
const renderer = await getServerRenderer();
if (renderer) {
let renderOptions = { assets: route.assets };
try {
if (route.loader) {
const params = (0, matchers_1.parseParams)(request, route);
const result = await executeLoader(request, route, params);
const data = (0, matchers_1.isResponse)(result) ? await result.json() : result;
renderOptions = {
assets: route.assets,
loader: {
data: data ?? null,
key: (0, matchers_1.resolveLoaderContextKey)(route.page, params),
},
};
}
return await renderer(request, renderOptions);
}
catch (error) {
console.error('SSR render error:', error);
throw error;
}
}
// SSG fallback: Read pre-rendered HTML from disk
let html;
if ((html = await input.readText(route.page + '.html')) != null) {
return html;
}
// Serve a static file by route name with hoisted index
// See: https://github.com/expo/expo/pull/27935
const INDEX_PATH = '/index';
if (route.page.endsWith(INDEX_PATH) && route.page.length > INDEX_PATH.length) {
const page = route.page.slice(0, -INDEX_PATH.length);
if ((html = await input.readText(page + '.html')) != null) {
return html;
}
}
return null;
},
async getApiRoute(route) {
return input.loadModule(route.file);
},
async getMiddleware(middleware) {
const mod = (await input.loadModule(middleware.file));
if (typeof mod?.default !== 'function') {
return null;
}
return mod;
},
async getLoaderData(request, route) {
const params = (0, matchers_1.parseParams)(request, route);
const result = await executeLoader(request, route, params);
if ((0, matchers_1.isResponse)(result)) {
return result;
}
return Response.json(result ?? null);
},
async preload() {
if (input.isDevelopment) {
return;
}
const manifest = await getRoutesManifest();
if (manifest) {
const requests = [];
if (manifest.middleware)
requests.push(manifest.middleware.file);
if (manifest.rendering)
requests.push(manifest.rendering.file);
for (const apiRoute of manifest.apiRoutes)
requests.push(apiRoute.file);
for (const htmlRoute of manifest.htmlRoutes) {
if (htmlRoute.loader)
requests.push(htmlRoute.loader);
}
await Promise.all(requests.map((request) => input.loadModule(request)));
}
},
};
}
/**
* Merges top-level assets with per-route async chunk assets. Top-level assets come first
*/
function mergeAssets(topLevel, routeLevel) {
return {
css: [...(topLevel?.css ?? []), ...(routeLevel?.css ?? [])],
js: [...(topLevel?.js ?? []), ...(routeLevel?.js ?? [])],
};
}
//# sourceMappingURL=common.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
import { type CommonEnvironment } from './common';
import type { ScopeDefinition } from '../../runtime/scope';
interface NodeEnvParams {
build: string;
environment?: string | null;
isDevelopment?: boolean;
}
export declare function createNodeEnv(params: NodeEnvParams): CommonEnvironment;
export declare function createNodeRequestScope(scopeDefinition: ScopeDefinition, params: NodeEnvParams): (fn: (request: Request) => Promise<Response>, request: Request) => Promise<Response>;
export {};

View File

@@ -0,0 +1,66 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createNodeEnv = createNodeEnv;
exports.createNodeRequestScope = createNodeRequestScope;
const node_fs_1 = __importDefault(require("node:fs"));
const node_path_1 = __importDefault(require("node:path"));
const common_1 = require("./common");
const ImmutableRequest_1 = require("../../ImmutableRequest");
const runtime_1 = require("../../runtime");
function createNodeEnv(params) {
(0, ImmutableRequest_1.assertRuntimeFetchAPISupport)();
async function readText(request) {
const filePath = node_path_1.default.join(params.build, request);
if (!node_fs_1.default.existsSync(filePath)) {
return null;
}
try {
return await node_fs_1.default.promises.readFile(filePath, 'utf-8');
}
catch {
return null;
}
}
async function readJson(request) {
const json = await readText(request);
return json != null ? JSON.parse(json) : null;
}
async function loadModule(request) {
const filePath = node_path_1.default.join(params.build, request);
if (!node_fs_1.default.existsSync(filePath)) {
return null;
}
else if (/\.c?js$/.test(filePath)) {
return require(filePath);
}
else {
return await import(filePath);
}
}
return (0, common_1.createEnvironment)({
readText,
readJson,
loadModule,
isDevelopment: params.isDevelopment ?? false,
});
}
const getRequestURLOrigin = (request) => {
try {
// NOTE: We don't trust any headers on incoming requests in "raw" environments
return new URL(request.url).origin || null;
}
catch {
return null;
}
};
function createNodeRequestScope(scopeDefinition, params) {
return (0, runtime_1.createRequestScope)(scopeDefinition, (request) => ({
requestHeaders: request.headers,
origin: getRequestURLOrigin(request),
environment: params.environment ?? process.env.NODE_ENV,
}));
}
//# sourceMappingURL=node.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../src/vendor/environment/node.ts"],"names":[],"mappings":";;;;;AAcA,sCAqCC;AAWD,wDAMC;AApED,sDAAyB;AACzB,0DAA6B;AAE7B,qCAAqE;AACrE,6DAAsE;AACtE,2CAAmD;AASnD,SAAgB,aAAa,CAAC,MAAqB;IACjD,IAAA,+CAA4B,GAAE,CAAC;IAE/B,KAAK,UAAU,QAAQ,CAAC,OAAe;QACrC,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,iBAAE,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,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAE,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,IAAA,0BAAiB,EAAC;QACvB,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC/C,IAAI,CAAC;QACH,8EAA8E;QAC9E,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,sBAAsB,CAAC,eAAgC,EAAE,MAAqB;IAC5F,OAAO,IAAA,4BAAkB,EAAC,eAAe,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC;QAChE,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACpC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;KACxD,CAAC,CAAC,CAAC;AACN,CAAC"}

View File

@@ -0,0 +1,14 @@
import { type CommonEnvironment } from './common';
import type { ScopeDefinition } from '../../runtime/scope';
interface WorkerdEnvParams {
build?: string;
environment?: string | null;
isDevelopment?: boolean;
}
export declare function createWorkerdEnv(params: WorkerdEnvParams): CommonEnvironment;
export interface ExecutionContext {
waitUntil?(promise: Promise<any>): void;
props?: any;
}
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>;
export {};

View File

@@ -0,0 +1,83 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createWorkerdEnv = createWorkerdEnv;
exports.createWorkerdRequestScope = createWorkerdRequestScope;
const common_1 = require("./common");
const runtime_1 = require("../../runtime");
const createCachedImport = () => {
const importCache = new Map();
return async function importCached(request) {
let result = importCache.get(request);
if (!result) {
try {
result = { type: 'success', value: await import(request) };
}
catch (error) {
result = { type: 'error', value: error };
}
importCache.set(request, result);
}
if (result.type === 'success') {
return result.value;
}
else {
throw result.value;
}
};
};
function createWorkerdEnv(params) {
const build = params.build || '.';
const importCached = createCachedImport();
async function readText(request) {
try {
const mod = await importCached(`${build}/${request}`);
return mod.default;
}
catch {
return null;
}
}
async function readJson(request) {
try {
const mod = await importCached(`${build}/${request}`);
if (typeof mod.default === 'string' && mod.default[0] === '{') {
return JSON.parse(mod.default);
}
else {
return mod.default;
}
}
catch {
return null;
}
}
async function loadModule(request) {
const target = `${build}/${request}`;
return (await import(target)).default;
}
return (0, common_1.createEnvironment)({
readText,
readJson,
loadModule,
isDevelopment: params.isDevelopment ?? false,
});
}
const getRequestURLOrigin = (request) => {
try {
// NOTE: We don't trust any headers on incoming requests in "raw" environments
return new URL(request.url).origin || null;
}
catch {
return null;
}
};
function createWorkerdRequestScope(scopeDefinition, params) {
const makeRequestAPISetup = (request, _env, ctx) => ({
requestHeaders: request.headers,
origin: getRequestURLOrigin(request),
environment: params.environment ?? null,
waitUntil: ctx.waitUntil?.bind(ctx),
});
return (0, runtime_1.createRequestScope)(scopeDefinition, makeRequestAPISetup);
}
//# sourceMappingURL=workerd.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"workerd.js","sourceRoot":"","sources":["../../../../src/vendor/environment/workerd.ts"],"names":[],"mappings":"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"}

15
node_modules/expo-server/build/cjs/vendor/express.d.ts generated vendored Normal file
View File

@@ -0,0 +1,15 @@
import type * as express from 'express';
import { type RequestHandlerInput as ExpoRequestHandlerInput, type RequestHandlerParams as ExpoRequestHandlerParams } from './abstract';
export { ExpoError } from './abstract';
export type RequestHandler = (req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>;
export interface RequestHandlerParams extends ExpoRequestHandlerParams, Partial<ExpoRequestHandlerInput> {
handleRouteError?(error: Error): Promise<Response>;
}
/**
* Returns a request handler for Express that serves the response using Remix.
*/
export declare function createRequestHandler(params: {
build: string;
environment?: string | null;
}, setup?: RequestHandlerParams): RequestHandler;
export { convertRequest, respond } from './http';

57
node_modules/expo-server/build/cjs/vendor/express.js generated vendored Normal file
View File

@@ -0,0 +1,57 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.respond = exports.convertRequest = exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
const node_async_hooks_1 = require("node:async_hooks");
const abstract_1 = require("./abstract");
const node_1 = require("./environment/node");
const http_1 = require("./http");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const STORE = new node_async_hooks_1.AsyncLocalStorage();
/**
* Returns a request handler for Express that serves the response using Remix.
*/
function createRequestHandler(params, setup) {
const run = (0, node_1.createNodeRequestScope)(STORE, params);
const onRequest = (0, abstract_1.createRequestHandler)({
...(0, node_1.createNodeEnv)(params),
...setup,
});
async function requestHandler(request) {
try {
return await run(onRequest, request);
}
catch (error) {
const handleRouteError = setup?.handleRouteError;
if (handleRouteError && error != null && typeof error === 'object') {
try {
return await handleRouteError(error);
}
catch {
// Rethrow original error below
}
}
throw error;
}
}
return async (req, res, next) => {
if (!req?.url || !req.method) {
return next();
}
try {
const request = (0, http_1.convertRequest)(req, res);
const response = await requestHandler(request);
await (0, http_1.respond)(res, response);
}
catch (error) {
// Express doesn't support async functions, so we have to pass along the
// error manually using next().
next(error);
}
};
}
var http_2 = require("./http");
Object.defineProperty(exports, "convertRequest", { enumerable: true, get: function () { return http_2.convertRequest; } });
Object.defineProperty(exports, "respond", { enumerable: true, get: function () { return http_2.respond; } });
//# sourceMappingURL=express.js.map

View File

@@ -0,0 +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"}

21
node_modules/expo-server/build/cjs/vendor/http.d.ts generated vendored Normal file
View File

@@ -0,0 +1,21 @@
import * as http from 'http';
import { type RequestHandlerInput as ExpoRequestHandlerInput, type RequestHandlerParams as ExpoRequestHandlerParams } from './abstract';
export { ExpoError } from './abstract';
type NextFunction = (err?: any) => void;
export type RequestHandler = (req: http.IncomingMessage, res: http.ServerResponse, next: NextFunction) => Promise<void>;
export interface RequestHandlerParams extends ExpoRequestHandlerParams, Partial<ExpoRequestHandlerInput> {
handleRouteError?(error: Error): Promise<Response>;
}
/**
* Returns a request handler for http that serves the response using Remix.
*/
export declare function createRequestHandler(params: {
build: string;
environment?: string | null;
isDevelopment?: boolean;
}, setup?: Partial<RequestHandlerParams>): RequestHandler;
export declare function convertRequest(req: http.IncomingMessage, res: http.ServerResponse): Request;
interface RespondOptions {
signal?: AbortSignal;
}
export declare function respond(nodeResponse: http.ServerResponse, webResponse: Response, options?: RespondOptions): Promise<void>;

119
node_modules/expo-server/build/cjs/vendor/http.js generated vendored Normal file
View File

@@ -0,0 +1,119 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
exports.convertRequest = convertRequest;
exports.respond = respond;
const node_async_hooks_1 = require("node:async_hooks");
const node_stream_1 = require("node:stream");
const promises_1 = require("node:stream/promises");
const abstract_1 = require("./abstract");
const node_1 = require("./environment/node");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const STORE = new node_async_hooks_1.AsyncLocalStorage();
/**
* Returns a request handler for http that serves the response using Remix.
*/
function createRequestHandler(params, setup) {
const run = (0, node_1.createNodeRequestScope)(STORE, params);
const onRequest = (0, abstract_1.createRequestHandler)({
...(0, node_1.createNodeEnv)(params),
...setup,
});
async function requestHandler(request) {
try {
return await run(onRequest, request);
}
catch (error) {
const handleRouteError = setup?.handleRouteError;
if (handleRouteError && error != null && typeof error === 'object') {
try {
return await handleRouteError(error);
}
catch {
// Rethrow original error below
}
}
throw error;
}
}
return async (req, res, next) => {
if (!req?.url || !req.method) {
return next();
}
try {
const request = convertRequest(req, res);
const response = await requestHandler(request);
await respond(res, response, { signal: request.signal });
}
catch (error) {
// http doesn't support async functions, so we have to pass along the
// error manually using next().
next(error);
}
};
}
function convertRawHeaders(requestHeaders) {
const headers = new Headers();
for (let index = 0; index < requestHeaders.length; index += 2) {
headers.append(requestHeaders[index], requestHeaders[index + 1]);
}
return headers;
}
// Convert an http request to an expo request
function convertRequest(req, res) {
const url = new URL(req.url, `http://${req.headers.host}`);
// Abort action/loaders once we can no longer write a response or request aborts
const controller = new AbortController();
res.once('close', () => controller.abort());
res.once('error', (err) => controller.abort(err));
req.once('error', (err) => controller.abort(err));
const init = {
method: req.method,
headers: convertRawHeaders(req.rawHeaders),
signal: controller.signal,
};
if (req.method !== 'GET' && req.method !== 'HEAD') {
init.body = node_stream_1.Readable.toWeb(req);
init.duplex = 'half';
}
return new Request(url.href, init);
}
/** Assign Headers to a Node.js OutgoingMessage (request) */
const assignOutgoingMessageHeaders = (outgoing, headers) => {
// Preassemble array headers, mostly only for Set-Cookie
// We're avoiding `getSetCookie` since support is unclear in Node 18
const collection = {};
for (const [key, value] of headers) {
if (Array.isArray(collection[key])) {
collection[key].push(value);
}
else if (collection[key] != null) {
collection[key] = [collection[key], value];
}
else {
collection[key] = value;
}
}
// We don't use `setHeaders` due to a Bun bug (Fix: https://github.com/oven-sh/bun/pull/27050)
for (const key in collection) {
outgoing.setHeader(key, collection[key]);
}
};
async function respond(nodeResponse, webResponse, options) {
if (nodeResponse.writableEnded || nodeResponse.destroyed) {
return;
}
nodeResponse.statusMessage = webResponse.statusText;
nodeResponse.statusCode = webResponse.status;
assignOutgoingMessageHeaders(nodeResponse, webResponse.headers);
if (webResponse.body && !options?.signal?.aborted) {
const body = node_stream_1.Readable.fromWeb(webResponse.body);
await (0, promises_1.pipeline)(body, nodeResponse, { signal: options?.signal });
}
else {
nodeResponse.end();
}
}
//# sourceMappingURL=http.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/vendor/http.ts"],"names":[],"mappings":"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"}

15
node_modules/expo-server/build/cjs/vendor/netlify.d.ts generated vendored Normal file
View File

@@ -0,0 +1,15 @@
export { ExpoError } from './abstract';
declare const scopeSymbol: unique symbol;
interface NetlifyContext {
deploy?: {
context?: string | null;
};
site?: {
url?: string | null;
};
waitUntil?: (promise: Promise<unknown>) => void;
[scopeSymbol]?: unknown;
}
export declare function createRequestHandler(params: {
build: string;
}): (req: Request, ctx?: NetlifyContext) => Promise<Response>;

46
node_modules/expo-server/build/cjs/vendor/netlify.js generated vendored Normal file
View File

@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
const abstract_1 = require("./abstract");
const runtime_1 = require("../runtime");
const node_1 = require("./environment/node");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const scopeSymbol = Symbol.for('expoServerScope');
/** @see https://docs.netlify.com/build/functions/api/#netlify-specific-context-object */
function getContext() {
const fromGlobal = globalThis;
if (!fromGlobal.Netlify) {
throw new Error('"globalThis.Netlify" is missing but expected.\n' +
'- Are you using Netlify Server Functions 1.0 instead of 2.0?\n' +
'- Make sure your Netlify function has a default export instead of exporting "handler".');
}
return fromGlobal.Netlify?.context ?? {};
}
// Netlify already has an async-scoped context in NetlifyContext, so we can attach
// our scope context to this object
const STORE = {
getStore: () => getContext()[scopeSymbol],
run(scope, runner, ...args) {
getContext()[scopeSymbol] = scope;
return runner(...args);
},
};
function createRequestHandler(params) {
const makeRequestAPISetup = (request, context) => ({
origin: (context ?? getContext()).site?.url || request.headers.get('Origin') || null,
environment: (context ?? getContext()).deploy?.context || null,
waitUntil: (context ?? getContext()).waitUntil,
});
const run = (0, runtime_1.createRequestScope)(STORE, makeRequestAPISetup);
const onRequest = (0, abstract_1.createRequestHandler)((0, node_1.createNodeEnv)(params));
return async (req, ctx) => {
if ('multiValueHeaders' in req) {
throw new Error('Unexpected Request object. API was called by Netlify Server Functions 1.0\n' +
'- Make sure your Netlify function has a default export instead of exporting "handler".');
}
return await run(onRequest, req, ctx);
};
}
//# sourceMappingURL=netlify.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"netlify.js","sourceRoot":"","sources":["../../../src/vendor/netlify.ts"],"names":[],"mappings":";;;AAyCA,oDAiBC;AA1DD,yCAAuE;AACvE,wCAAgD;AAChD,6CAAmD;AAGnD,uCAAuC;AAA9B,qGAAA,SAAS,OAAA;AAElB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AASlD,yFAAyF;AACzF,SAAS,UAAU;IACjB,MAAM,UAAU,GAEZ,UAAU,CAAC;IACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,iDAAiD;YAC/C,gEAAgE;YAChE,wFAAwF,CAC3F,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,kFAAkF;AAClF,mCAAmC;AACnC,MAAM,KAAK,GAAoB;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC;IACzC,GAAG,CAAC,KAAU,EAAE,MAA+B,EAAE,GAAG,IAAW;QAC7D,UAAU,EAAE,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAClC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF,SAAgB,oBAAoB,CAAC,MAAyB;IAC5D,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,OAAwB,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,EAAE,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI;QACpF,WAAW,EAAE,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI;QAC9D,SAAS,EAAE,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;KAC/C,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,IAAA,4BAAkB,EAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAA,+BAAiB,EAAC,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO,KAAK,EAAE,GAAY,EAAE,GAAoB,EAAE,EAAE;QAClD,IAAI,mBAAmB,IAAI,GAAG,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,6EAA6E;gBAC3E,wFAAwF,CAC3F,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC"}

13
node_modules/expo-server/build/cjs/vendor/vercel.d.ts generated vendored Normal file
View File

@@ -0,0 +1,13 @@
import * as http from 'http';
export { ExpoError } from './abstract';
export type RequestHandler = (req: http.IncomingMessage, res: http.ServerResponse) => Promise<void>;
/**
* Returns a request handler for Vercel's Node.js runtime that serves the
* response using Remix.
*/
export declare function createRequestHandler(params: {
build: string;
}): RequestHandler;
export declare function convertHeaders(requestHeaders: http.IncomingMessage['headers']): Headers;
export declare function convertRequest(req: http.IncomingMessage, res: http.ServerResponse): Request;
export declare function respond(res: http.ServerResponse, expoRes: Response): Promise<void>;

109
node_modules/expo-server/build/cjs/vendor/vercel.js generated vendored Normal file
View File

@@ -0,0 +1,109 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
exports.convertHeaders = convertHeaders;
exports.convertRequest = convertRequest;
exports.respond = respond;
const node_stream_1 = require("node:stream");
const promises_1 = require("node:stream/promises");
const abstract_1 = require("./abstract");
const runtime_1 = require("../runtime");
const node_1 = require("./environment/node");
const createReadableStreamFromReadable_1 = require("../utils/createReadableStreamFromReadable");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const scopeSymbol = Symbol.for('expoServerScope');
const SYMBOL_FOR_REQ_CONTEXT = Symbol.for('@vercel/request-context');
/** @see https://github.com/vercel/vercel/blob/b189b39/packages/functions/src/get-context.ts */
function getContext() {
const fromSymbol = globalThis;
return fromSymbol[SYMBOL_FOR_REQ_CONTEXT]?.get?.() ?? {};
}
// Vercel already has an async-scoped context in VercelContext, so we can attach
// our scope context to this object
const STORE = {
getStore: () => getContext()[scopeSymbol],
run(scope, runner, ...args) {
getContext()[scopeSymbol] = scope;
return runner(...args);
},
};
/**
* Returns a request handler for Vercel's Node.js runtime that serves the
* response using Remix.
*/
function createRequestHandler(params) {
const makeRequestAPISetup = (request) => {
const host = request.headers.get('host');
const proto = request.headers.get('x-forwarded-proto') || 'https';
return {
origin: host ? `${proto}://${host}` : null,
// See: https://github.com/vercel/vercel/blob/b189b39/packages/functions/src/get-env.ts#L25C3-L25C13
environment: process.env.VERCEL_ENV ?? process.env.NODE_ENV,
waitUntil: getContext().waitUntil,
};
};
const run = (0, runtime_1.createRequestScope)(STORE, makeRequestAPISetup);
const onRequest = (0, abstract_1.createRequestHandler)((0, node_1.createNodeEnv)(params));
return async (req, res) => {
return respond(res, await run(onRequest, convertRequest(req, res)));
};
}
function convertHeaders(requestHeaders) {
const headers = new Headers();
for (const [key, values] of Object.entries(requestHeaders)) {
if (values) {
if (Array.isArray(values)) {
for (const value of values) {
headers.append(key, value);
}
}
else {
headers.set(key, values);
}
}
}
return headers;
}
function convertRawHeaders(requestHeaders) {
const headers = new Headers();
for (let index = 0; index < requestHeaders.length; index += 2) {
headers.append(requestHeaders[index], requestHeaders[index + 1]);
}
return headers;
}
function convertRequest(req, res) {
const host = req.headers['x-forwarded-host'] || req.headers['host'];
// doesn't seem to be available on their req object!
const protocol = req.headers['x-forwarded-proto'] || 'https';
const url = new URL(`${protocol}://${host}${req.url}`);
// Abort action/loaders once we can no longer write a response
const controller = new AbortController();
res.on('close', () => controller.abort());
const init = {
method: req.method,
headers: convertRawHeaders(req.rawHeaders),
// Cast until reason/throwIfAborted added
// https://github.com/mysticatea/abort-controller/issues/36
signal: controller.signal,
};
if (req.method !== 'GET' && req.method !== 'HEAD') {
// NOTE(@krystofwoldrich) Readable.toWeb breaks the stream in Vercel Functions, unknown why.
// No error is thrown, but reading the stream like `await req.json()` never resolves.
init.body = (0, createReadableStreamFromReadable_1.createReadableStreamFromReadable)(req);
init.duplex = 'half';
}
return new Request(url.href, init);
}
async function respond(res, expoRes) {
res.statusMessage = expoRes.statusText;
res.writeHead(expoRes.status, expoRes.statusText, [...expoRes.headers.entries()].flat());
if (expoRes.body) {
await (0, promises_1.pipeline)(node_stream_1.Readable.fromWeb(expoRes.body), res);
}
else {
res.end();
}
}
//# sourceMappingURL=vercel.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../src/vendor/vercel.ts"],"names":[],"mappings":"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"}

14
node_modules/expo-server/build/cjs/vendor/workerd.d.ts generated vendored Normal file
View File

@@ -0,0 +1,14 @@
import { type RequestHandlerParams } from './abstract';
import { ExecutionContext } from './environment/workerd';
export { ExpoError } from './abstract';
export interface RequestHandler<Env = unknown> {
(req: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
preload(): Promise<void>;
}
/**
* Returns a request handler for Workerd deployments.
*/
export declare function createRequestHandler<Env = unknown>(params: {
build: string;
environment?: string | null;
}, setup?: RequestHandlerParams): RequestHandler<Env>;

24
node_modules/expo-server/build/cjs/vendor/workerd.js generated vendored Normal file
View File

@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpoError = void 0;
exports.createRequestHandler = createRequestHandler;
const node_async_hooks_1 = require("node:async_hooks");
const abstract_1 = require("./abstract");
const workerd_1 = require("./environment/workerd");
var abstract_2 = require("./abstract");
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
const STORE = new node_async_hooks_1.AsyncLocalStorage();
/**
* Returns a request handler for Workerd deployments.
*/
function createRequestHandler(params, setup) {
const run = (0, workerd_1.createWorkerdRequestScope)(STORE, params);
const common = (0, workerd_1.createWorkerdEnv)(params);
const onRequest = (0, abstract_1.createRequestHandler)({ ...common, ...setup });
function handler(request, env, ctx) {
return run(onRequest, request, env, ctx);
}
handler.preload = common.preload;
return handler;
}
//# sourceMappingURL=workerd.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"workerd.js","sourceRoot":"","sources":["../../../src/vendor/workerd.ts"],"names":[],"mappings":";;;AAqBA,oDAcC;AAnCD,uDAAqD;AAErD,yCAAkG;AAClG,mDAI+B;AAE/B,uCAAuC;AAA9B,qGAAA,SAAS,OAAA;AAOlB,MAAM,KAAK,GAAG,IAAI,oCAAiB,EAAE,CAAC;AAEtC;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAAsD,EACtD,KAA4B;IAE5B,MAAM,GAAG,GAAG,IAAA,mCAAyB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAA,+BAAiB,EAAC,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAE7D,SAAS,OAAO,CAAC,OAAgB,EAAE,GAAQ,EAAE,GAAqB;QAChE,OAAO,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC"}