UNPKG

nativescript

Version:

Command-line interface for building NativeScript projects

78 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsTracker = void 0; const path = require("path"); const _ = require("lodash"); const yok_1 = require("../common/yok"); class OptionsTracker { constructor($analyticsService) { this.$analyticsService = $analyticsService; } async trackOptions(options) { const trackObject = this.getTrackObject(options); await this.$analyticsService.trackEventActionInGoogleAnalytics({ action: "Options" /* TrackActionNames.Options */, additionalData: JSON.stringify(trackObject), }); } getTrackObject(options) { const optionsArgvCopy = _.cloneDeep(options.argv); return this.sanitizeTrackObject(optionsArgvCopy, options); } sanitizeTrackObject(data, options) { const shorthands = options ? options.shorthands : []; const optionsDefinitions = options ? options.options : {}; _.forEach(data, (value, key) => { if (this.shouldSkipProperty(key, value, shorthands, optionsDefinitions)) { delete data[key]; } else { if (options && optionsDefinitions[key] && optionsDefinitions[key].hasSensitiveValue !== false) { value = OptionsTracker.PRIVATE_REPLACE_VALUE; } else if (key.toLowerCase().indexOf(OptionsTracker.PASSWORD_DETECTION_STRING) >= 0) { value = OptionsTracker.PRIVATE_REPLACE_VALUE; } else if (_.isString(value) && value !== path.basename(value)) { value = OptionsTracker.PATH_REPLACE_VALUE; } else if (_.isObject(value) && !_.isArray(value)) { value = this.sanitizeTrackObject(value); } data[key] = value; } }); return data; } shouldSkipProperty(key, value, shorthands = [], options = {}) { if (shorthands.indexOf(key) >= 0) { return true; } if (key.indexOf("-") >= 0) { return true; } if (key === "_") { return true; } const optionDef = options[key]; if (optionDef && optionDef.type === "boolean" /* OptionType.Boolean */) { if ((optionDef.default !== true && value === false) || (optionDef.default === true && value === true)) { return true; } } if (_.isUndefined(value)) { return true; } } } exports.OptionsTracker = OptionsTracker; OptionsTracker.PASSWORD_DETECTION_STRING = "password"; OptionsTracker.PRIVATE_REPLACE_VALUE = "private"; OptionsTracker.PATH_REPLACE_VALUE = "_localpath"; OptionsTracker.SIZE_EXEEDED_REPLACE_VALUE = "sizeExceeded"; yok_1.injector.register("optionsTracker", OptionsTracker); //# sourceMappingURL=options-track-helper.js.map