@expo/cli
Version:
118 lines (117 loc) • 4.69 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
LoadingEndpoint: ()=>LoadingEndpoint,
InterstitialPageMiddleware: ()=>InterstitialPageMiddleware
});
function _config() {
const data = require("@expo/config");
_config = function() {
return data;
};
return data;
}
function _updates() {
const data = require("@expo/config-plugins/build/utils/Updates");
_updates = function() {
return data;
};
return data;
}
function _promises() {
const data = require("fs/promises");
_promises = function() {
return data;
};
return data;
}
function _path() {
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
_path = function() {
return data;
};
return data;
}
function _resolveFrom() {
const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
_resolveFrom = function() {
return data;
};
return data;
}
const _expoMiddleware = require("./ExpoMiddleware");
const _resolvePlatform = require("./resolvePlatform");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const debug = require("debug")("expo:start:server:middleware:interstitialPage");
const LoadingEndpoint = "/_expo/loading";
class InterstitialPageMiddleware extends _expoMiddleware.ExpoMiddleware {
constructor(projectRoot, options = {
scheme: null
}){
super(projectRoot, [
LoadingEndpoint
]);
this.options = options;
}
/** Get the template HTML page and inject values. */ async _getPageAsync({ appName , projectVersion }) {
var // Production: This will resolve when installed in the project.
ref;
const templatePath = (ref = _resolveFrom().default.silent(this.projectRoot, "expo/static/loading-page/index.html")) != null ? ref : // Development: This will resolve when testing locally.
_path().default.resolve(__dirname, "../../../../../static/loading-page/index.html");
let content = (await (0, _promises().readFile)(templatePath)).toString("utf-8");
content = content.replace(/{{\s*AppName\s*}}/, appName);
content = content.replace(/{{\s*Path\s*}}/, this.projectRoot);
var _scheme;
content = content.replace(/{{\s*Scheme\s*}}/, (_scheme = this.options.scheme) != null ? _scheme : "Unknown");
content = content.replace(/{{\s*ProjectVersionType\s*}}/, `${projectVersion.type === "sdk" ? "SDK" : "Runtime"} version`);
var _version;
content = content.replace(/{{\s*ProjectVersion\s*}}/, (_version = projectVersion.version) != null ? _version : "Undetected");
return content;
}
/** Get settings for the page from the project config. */ async _getProjectOptionsAsync(platform) {
(0, _resolvePlatform.assertRuntimePlatform)(platform);
const { exp } = (0, _config().getConfig)(this.projectRoot);
const { appName } = (0, _config().getNameFromConfig)(exp);
const runtimeVersion = await (0, _updates().getRuntimeVersionNullableAsync)(this.projectRoot, exp, platform);
var _sdkVersion;
const sdkVersion = (_sdkVersion = exp.sdkVersion) != null ? _sdkVersion : null;
return {
appName: appName != null ? appName : "App",
projectVersion: sdkVersion && !runtimeVersion ? {
type: "sdk",
version: sdkVersion
} : {
type: "runtime",
version: runtimeVersion
}
};
}
async handleRequestAsync(req, res) {
res = (0, _expoMiddleware.disableResponseCache)(res);
res.setHeader("Content-Type", "text/html");
var ref;
const platform = (ref = (0, _resolvePlatform.parsePlatformHeader)(req)) != null ? ref : (0, _resolvePlatform.resolvePlatformFromUserAgentHeader)(req);
(0, _resolvePlatform.assertMissingRuntimePlatform)(platform);
(0, _resolvePlatform.assertRuntimePlatform)(platform);
const { appName , projectVersion } = await this._getProjectOptionsAsync(platform);
debug(`Create loading page. (platform: ${platform}, appName: ${appName}, projectVersion: ${projectVersion.version}, type: ${projectVersion.type})`);
const content = await this._getPageAsync({
appName,
projectVersion
});
res.end(content);
}
}
//# sourceMappingURL=InterstitialPageMiddleware.js.map
;