create-expo-module
Version:
The script to create the Expo module
145 lines • 5.6 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTelemetryClient = getTelemetryClient;
exports.logEventAsync = logEventAsync;
exports.eventCreateExpoModule = eventCreateExpoModule;
const json_file_1 = __importDefault(require("@expo/json-file"));
const rudder_sdk_node_1 = __importDefault(require("@expo/rudder-sdk-node"));
const crypto_1 = __importDefault(require("crypto"));
const getenv_1 = require("getenv");
const os_1 = __importStar(require("os"));
const path = __importStar(require("path"));
const packageJson = require('../package.json');
/** If telemetry is disabled by the user */
const EXPO_NO_TELEMETRY = (0, getenv_1.boolish)('EXPO_NO_TELEMETRY', false);
/** If the tool is running in a sanboxed environment, either staging or local envs */
const EXPO_SANDBOX = (0, getenv_1.boolish)('EXPO_STAGING', false) || (0, getenv_1.boolish)('EXPO_LOCAL', false);
/** The telemetry client instance to use */
let client = null;
/** The anonymous identity ID */
let telemetryId = null;
function getTelemetryClient() {
if (!client) {
client = new rudder_sdk_node_1.default(EXPO_SANDBOX ? '24TKICqYKilXM480mA7ktgVDdea' : '24TKR7CQAaGgIrLTgu3Fp4OdOkI', // expo unified,
'https://cdp.expo.dev/v1/batch', {
flushInterval: 300,
});
// Empty the telemetry queue on exit
process.on('SIGINT', () => client?.flush?.());
process.on('SIGTERM', () => client?.flush?.());
}
return client;
}
// The ~/.expo directory is used to store authentication sessions,
// which are shared between EAS CLI and Expo CLI.
function getExpoHomeDirectory() {
const home = (0, os_1.homedir)();
if (process.env.__UNSAFE_EXPO_HOME_DIRECTORY) {
return process.env.__UNSAFE_EXPO_HOME_DIRECTORY;
}
else if ((0, getenv_1.boolish)('EXPO_STAGING', false)) {
return path.join(home, '.expo-staging');
}
else if ((0, getenv_1.boolish)('EXPO_LOCAL', false)) {
return path.join(home, '.expo-local');
}
return path.join(home, '.expo');
}
function getUserStatePath() {
return path.join(getExpoHomeDirectory(), 'state.json');
}
/** Get the randomly generated anonymous ID from the persistent storage, see @expo/cli */
async function getTelemetryIdAsync() {
const settings = new json_file_1.default(getUserStatePath(), {
ensureDir: true,
jsonParseErrorDefault: {},
cantReadFileDefault: {},
});
let id = await settings.getAsync('uuid', null);
if (!id) {
id = crypto_1.default.randomUUID();
await settings.setAsync('uuid', id);
}
return id;
}
function getTelemetryContext() {
const PLATFORM_NAMES = {
darwin: 'Mac',
win32: 'Windows',
linux: 'Linux',
};
return {
os: { name: PLATFORM_NAMES[os_1.default.platform()] ?? os_1.default.platform(), version: os_1.default.release() },
app: { name: 'create-expo-module', version: packageJson.version ?? undefined },
};
}
async function logEventAsync(event) {
if (EXPO_NO_TELEMETRY) {
return;
}
if (!telemetryId) {
telemetryId = await getTelemetryIdAsync();
getTelemetryClient().identify({ anonymousId: telemetryId });
}
const commonProperties = {
source: 'create-expo-module',
source_version: packageJson.version ?? undefined,
};
getTelemetryClient().track({
...event,
properties: { ...event.properties, ...commonProperties },
anonymousId: telemetryId,
context: getTelemetryContext(),
});
}
function eventCreateExpoModule(packageManager, options) {
return {
event: 'create expo module', // DO NOT EDIT, unless knowing what you are doing
properties: {
nodeVersion: process.version,
packageManager,
withTemplate: !!options.source,
withReadme: options.withReadme,
withChangelog: options.withChangelog,
withExample: options.example,
local: !!options.local,
},
};
}
//# sourceMappingURL=telemetry.js.map
;