UNPKG

@codeque/eslint-plugin

Version:

Create custom ESLint rules based on code samples. Utilizing CodeQue - structural code search engine.

95 lines (94 loc) 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTelemetryInstance = exports.telemetryDisabled = void 0; const node_machine_id_1 = require("node-machine-id"); const fs_1 = __importDefault(require("fs")); const crypto_1 = require("crypto"); const applicationinsights_1 = require("applicationinsights"); //@ts-ignore const is_ci_1 = __importDefault(require("is-ci")); const disabledTelemetryInstance = { reportConfig: () => undefined, reportInstall: () => undefined, }; function hash(guid) { return (0, crypto_1.createHash)('sha256').update(guid).digest('hex'); } const getProjectId = () => { const path = process.cwd() + '/package.json'; try { const packageJSON = fs_1.default.readFileSync(path).toString(); const parsedPackageJSON = JSON.parse(packageJSON); return hash(parsedPackageJSON.name); } catch (e) { return null; } }; exports.telemetryDisabled = process.env.CQ_ESLINT_TELEMETRY_DISABLE === 'true' || process.env.NODE_ENV === 'test'; const createTelemetryInstance = () => { if (exports.telemetryDisabled) { return disabledTelemetryInstance; } (0, applicationinsights_1.setup)('InstrumentationKey=8f838c47-7173-4f6c-851a-b012d45d9ad8;IngestionEndpoint=https://eastus-8.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/') .setAutoDependencyCorrelation(false) .setAutoCollectRequests(false) .setAutoCollectPerformance(false, false) .setAutoCollectExceptions(false) .setAutoCollectDependencies(false) .setAutoCollectConsole(false, false) .setUseDiskRetryCaching(false) .setAutoCollectPreAggregatedMetrics(false) .setSendLiveMetrics(false) .setAutoCollectHeartbeat(false) .setAutoCollectIncomingRequestAzureFunctions(false) .setInternalLogging(false, false) .enableWebInstrumentation(false); const telemetryClient = applicationinsights_1.defaultClient; const machineId = (0, node_machine_id_1.machineIdSync)(); const projectId = getProjectId(); const arch = process.arch; const platform = process.platform; const nodeVersion = process.version; const commonProps = { machineId, projectId, arch, platform, nodeVersion, isCI: is_ci_1.default, }; return { reportConfig: (params) => { try { telemetryClient.trackEvent({ name: 'eslint:config', properties: Object.assign(Object.assign({}, commonProps), params), }); telemetryClient.flush(); (0, applicationinsights_1.dispose)(); } catch (e) { console.error('Failed to report telemetry for config'); } }, reportInstall: () => { try { telemetryClient.trackEvent({ name: 'eslint:install', properties: commonProps, }); telemetryClient.flush(); (0, applicationinsights_1.dispose)(); } catch (e) { console.error('Failed to report telemetry for install'); } }, }; }; exports.createTelemetryInstance = createTelemetryInstance;