UNPKG

expo-eas-observe

Version:

Expo module that exposes various app metrics and sends them to EAS Observe

38 lines (37 loc) 1.59 kB
"use strict"; 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;