@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
JavaScript
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;
;