GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

151 lines
5.7 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.emulatorSession = exports.trackEmulator = exports.track = exports.usageEnabled = exports.EMULATOR_GA4_MEASUREMENT_ID = void 0;
const node_fetch_1 = require("node-fetch");
const ua = require("universal-analytics");
const uuid_1 = require("uuid");
const auth_1 = require("./auth");
const configstore_1 = require("./configstore");
const logger_1 = require("./logger");
const pkg = require("../package.json");
exports.EMULATOR_GA4_MEASUREMENT_ID = process.env.FIREBASE_EMULATOR_GA4_MEASUREMENT_ID || "G-KYP2JMPFC0";
function usageEnabled() {
return !!configstore_1.configstore.get("usage");
}
exports.usageEnabled = usageEnabled;
const FIREBASE_ANALYTICS_UA = process.env.FIREBASE_ANALYTICS_UA || "UA-29174744-3";
let anonId = configstore_1.configstore.get("analytics-uuid");
if (!anonId) {
anonId = (0, uuid_1.v4)();
configstore_1.configstore.set("analytics-uuid", anonId);
}
const visitor = ua(FIREBASE_ANALYTICS_UA, anonId, {
strictCidFormat: false,
https: true,
});
visitor.set("cd1", process.platform);
visitor.set("cd2", process.version);
visitor.set("cd3", process.env.FIREPIT_VERSION || "none");
function track(action, label, duration = 0) {
return new Promise((resolve) => {
if (configstore_1.configstore.get("tokens") && usageEnabled()) {
visitor.event("Firebase CLI " + pkg.version, action, label, duration).send(() => {
resolve();
});
}
else {
resolve();
}
});
}
exports.track = track;
const EMULATOR_GA4_API_SECRET = process.env.FIREBASE_EMULATOR_GA4_API_SECRET || "2V_zBYc4TdeoppzDaIu0zw";
const EMULATOR_GA4_USER_PROPS = {
node_platform: {
value: process.platform,
},
node_version: {
value: process.version,
},
cli_version: {
value: pkg.version,
},
firepit_version: {
value: process.env.FIREPIT_VERSION || "none",
},
};
async function trackEmulator(eventName, params) {
const session = emulatorSession();
if (!session) {
return;
}
const oldTotalEngagementSeconds = session.totalEngagementSeconds;
session.totalEngagementSeconds = process.uptime();
session.commandName = (params === null || params === void 0 ? void 0 : params.command_name) || session.commandName;
const search = `?api_secret=${EMULATOR_GA4_API_SECRET}&measurement_id=${session.measurementId}`;
const validate = session.validateOnly ? "debug/" : "";
const url = `https://www.google-analytics.com/${validate}mp/collect${search}`;
const body = {
timestamp_micros: `${Date.now()}000`,
client_id: session.clientId,
user_properties: Object.assign(Object.assign({}, EMULATOR_GA4_USER_PROPS), { java_major_version: session.javaMajorVersion
? { value: session.javaMajorVersion }
: undefined }),
validationBehavior: session.validateOnly ? "ENFORCE_RECOMMENDATIONS" : undefined,
events: [
{
name: eventName,
params: Object.assign({ session_id: session.sessionId, engagement_time_msec: (session.totalEngagementSeconds - oldTotalEngagementSeconds)
.toFixed(3)
.replace(".", "")
.replace(/^0+/, ""), debug_mode: session.debugMode ? true : undefined, command_name: session.commandName }, params),
},
],
};
if (session.validateOnly) {
logger_1.logger.info(`Sending Analytics for event ${eventName}`, params, body);
}
try {
const response = await (0, node_fetch_1.default)(url, {
method: "POST",
headers: {
"content-type": "application/json;charset=UTF-8",
},
body: JSON.stringify(body),
});
if (session.validateOnly) {
if (!response.ok) {
logger_1.logger.warn(`Analytics validation HTTP error: ${response.status}`);
}
const respBody = await response.text();
logger_1.logger.info(`Analytics validation result: ${respBody}`);
}
}
catch (e) {
if (session.validateOnly) {
throw e;
}
return;
}
}
exports.trackEmulator = trackEmulator;
function emulatorSession() {
const validateOnly = !!process.env.FIREBASE_CLI_MP_VALIDATE;
if (!usageEnabled()) {
if (validateOnly) {
logger_1.logger.warn("Google Analytics is DISABLED. To enable, (re)login and opt in to collection.");
}
return;
}
if (!currentEmulatorSession) {
let clientId = configstore_1.configstore.get("emulator-analytics-clientId");
if (!clientId) {
clientId = (0, uuid_1.v4)();
configstore_1.configstore.set("emulator-analytics-clientId", clientId);
}
currentEmulatorSession = {
measurementId: exports.EMULATOR_GA4_MEASUREMENT_ID,
clientId,
sessionId: (Math.random() * Number.MAX_SAFE_INTEGER).toFixed(0),
totalEngagementSeconds: 0,
debugMode: isDebugMode(),
validateOnly,
};
}
return currentEmulatorSession;
}
exports.emulatorSession = emulatorSession;
let currentEmulatorSession = undefined;
function isDebugMode() {
const account = (0, auth_1.getGlobalDefaultAccount)();
if (account === null || account === void 0 ? void 0 : account.user.email.endsWith("@google.com")) {
try {
require("../tsconfig.json");
logger_1.logger.info(`Using Google Analytics in DEBUG mode. Emulators (+ UI) events will be shown in GA Debug View only.`);
return true;
}
catch (_a) {
}
}
return false;
}