UNPKG

expo-atlas

Version:

Inspect bundle contents, on module level, from Metro

47 lines 1.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAtlasMiddleware = void 0; var http_1 = require("@expo/server/build/vendor/http"); var connect_1 = __importDefault(require("connect")); var morgan_1 = __importDefault(require("morgan")); var path_1 = __importDefault(require("path")); var serve_static_1 = __importDefault(require("serve-static")); var env_1 = require("./env"); var WEBUI_ROOT = path_1.default.resolve(__dirname, '../../../webui'); var CLIENT_BUILD_DIR = path_1.default.join(WEBUI_ROOT, 'dist/client'); var SERVER_BUILD_DIR = path_1.default.join(WEBUI_ROOT, 'dist/server'); /** * Initialize Expo Atlas to gather statistics from Metro during development. * This function creates a connect middleware to serve the webui and the Atlas API. * It's designed to use any `AtlasSource` implementation and passes it to the webui. * * @example ```js * import { createAtlasMiddleware, MetroGraphSource } from 'expo-atlas/middleware'; * * const source = new MetroGraphSource(); * const middleware = createAtlasMiddleware(source); * * source.onSerializeGraph(...); * app.use('/_expo/atlas', middleware); * ``` */ function createAtlasMiddleware(source) { global.EXPO_ATLAS_SOURCE = source; var middleware = (0, connect_1.default)(); if (env_1.env.EXPO_DEBUG) { middleware.use((0, morgan_1.default)('tiny')); } middleware.use((0, serve_static_1.default)(CLIENT_BUILD_DIR, { maxAge: '1h', extensions: ['html'], })); middleware.use((0, http_1.createRequestHandler)({ build: SERVER_BUILD_DIR, })); return middleware; } exports.createAtlasMiddleware = createAtlasMiddleware; //# sourceMappingURL=middleware.js.map