expo-eas-observe
Version:
Expo module that exposes various app metrics and sends them to EAS Observe
38 lines (37 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("expo/config-plugins");
const withAndroidAppMetrics = (config) => {
return (0, config_plugins_1.withMainApplication)(config, (config) => {
const mainApplication = config.modResults;
const importsMod = addImports(mainApplication.contents, ['expo.modules.appmetrics.appstartup.AppStartupManager'], false);
let contents = importsMod;
if (!mainApplication.contents.includes('AppStartupManager.markOnCreate()')) {
contents = appendMarkOnCreate(contents);
}
return {
...config,
modResults: {
...config.modResults,
contents,
},
};
});
};
// Copied from https://github.com/expo/expo/blob/main/packages/expo-web-browser/plugin/src/utils.ts
function addImports(source, imports, isJava) {
const lines = source.split('\n');
const lineIndexWithPackageDeclaration = lines.findIndex((line) => line.match(/^package .*;?$/));
for (const javaImport of imports) {
if (!source.includes(javaImport)) {
const importStatement = `import ${javaImport}${isJava ? ';' : ''}`;
lines.splice(lineIndexWithPackageDeclaration + 2, 0, importStatement);
}
}
return lines.join('\n');
}
function appendMarkOnCreate(source) {
// $1 includes indentation
return source.replace(/^(\s*)super\.onCreate\(\)$/m, '$1super.onCreate()\n$1AppStartupManager.markOnCreate()');
}
exports.default = withAndroidAppMetrics;