/
githubmirror
/
brackets
Обзор
Документация
Войти
/
githubmirror
/
brackets
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/extensions/default/JavaScriptRefactoring/main.js
171 строка
8 KB
Sorab Bisht
Adding Analytics logging for JSRefactor, Live Preview, Quick Edit and more features (#14253)
07 май 2018, 11:37
07 май 2018, 11:37
e0b6620
Код
Авторство
О чём код?
/* * Copyright (c) 2013 - present Adobe Systems Incorporated. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * */ define(function (require, exports, module) { "use strict"; var AppInit = brackets.getModule("utils/AppInit"), PreferencesManager = brackets.getModule("preferences/PreferencesManager"), Strings = brackets.getModule("strings"), RenameIdentifier = require("RenameIdentifier"), ExtractToVariable = require("ExtractToVariable"), ExtractToFunction = require("ExtractToFunction"), WrapSelection = require("WrapSelection"), CommandManager = brackets.getModule("command/CommandManager"), Menus = brackets.getModule("command/Menus"), HealthLogger = brackets.getModule("utils/HealthLogger"), _ = brackets.getModule("thirdparty/lodash"), EditorManager = brackets.getModule("editor/EditorManager"); var jsRefactoringEnabled = true; var KeyboardPrefs = JSON.parse(require("text!keyboard.json")); // Command ids var EXTRACTTO_VARIABLE = "refactoring.extractToVariable", EXTRACTTO_FUNCTION = "refactoring.extractToFunction", REFACTOR_RENAME = "refactoring.renamereference", REFACTORWRAPINTRYCATCH = "refactoring.wrapintrycatch", REFACTORWRAPINCONDITION = "refactoring.wrapincondition", REFACTORCONVERTTOARROWFN = "refactoring.converttoarrowfunction", REFACTORCREATEGETSET = "refactoring.creategettersandsetters"; // This preference controls whether to create a session and process all JS files or not. PreferencesManager.definePreference("refactoring.JSRefactoring", "boolean", true, { description: Strings.DESCRIPTION_CODE_REFACTORING }); /** * Check whether any of refactoring hints preferences for JS Refactoring is disabled * @return {boolean} enabled/disabled */ function _isRefactoringEnabled() { return (PreferencesManager.get("refactoring.JSRefactoring") !== false); } PreferencesManager.on("change", "refactoring.JSRefactoring", function () { jsRefactoringEnabled = _isRefactoringEnabled(); }); function _handleRefactor(functionName) { var eventName, eventType = ""; switch (functionName) { case REFACTOR_RENAME: eventName = REFACTOR_RENAME; eventType = "rename"; RenameIdentifier.handleRename(); break; case EXTRACTTO_VARIABLE: eventName = EXTRACTTO_VARIABLE; eventType = "extractToVariable"; ExtractToVariable.handleExtractToVariable(); break; case EXTRACTTO_FUNCTION: eventName = EXTRACTTO_FUNCTION; eventType = "extractToFunction"; ExtractToFunction.handleExtractToFunction(); break; case REFACTORWRAPINTRYCATCH: eventName = REFACTORWRAPINTRYCATCH; eventType = "tryCatch"; WrapSelection.wrapInTryCatch(); break; case REFACTORWRAPINCONDITION: eventName = REFACTORWRAPINCONDITION; eventType = "wrapInCondition"; WrapSelection.wrapInCondition(); break; case REFACTORCONVERTTOARROWFN: eventName = REFACTORCONVERTTOARROWFN; eventType = "convertToFunction"; WrapSelection.convertToArrowFunction(); break; case REFACTORCREATEGETSET: eventName = REFACTORCREATEGETSET; eventType = "createGetterSetter"; WrapSelection.createGettersAndSetters(); break; } if (eventName) { var editor = EditorManager.getActiveEditor(); // Logging should be done only when the context is javascript if (!editor || editor.getModeForSelection() !== "javascript") { return; } // Send analytics data for js refactoring HealthLogger.sendAnalyticsData( eventName, "usage", "jsRefactor", eventType ); } } AppInit.appReady(function () { if (jsRefactoringEnabled) { var subMenu = Menus.getContextMenu(Menus.ContextMenuIds.EDITOR_MENU).addSubMenu(Strings.CMD_REFACTOR, "refactor-submenu"); var menuLocation = Menus.AppMenuBar.EDIT_MENU; Menus.getMenu(menuLocation).addMenuDivider(); // Rename Identifier CommandManager.register(Strings.CMD_REFACTORING_RENAME, REFACTOR_RENAME, _.partial(_handleRefactor, REFACTOR_RENAME)); subMenu.addMenuItem(REFACTOR_RENAME); Menus.getMenu(menuLocation).addMenuItem(REFACTOR_RENAME, KeyboardPrefs.renameIdentifier); // Extract to Variable CommandManager.register(Strings.CMD_EXTRACTTO_VARIABLE, EXTRACTTO_VARIABLE, _.partial(_handleRefactor, EXTRACTTO_VARIABLE)); subMenu.addMenuItem(EXTRACTTO_VARIABLE); Menus.getMenu(menuLocation).addMenuItem(EXTRACTTO_VARIABLE, KeyboardPrefs.extractToVariable); // Extract to Function CommandManager.register(Strings.CMD_EXTRACTTO_FUNCTION, EXTRACTTO_FUNCTION, _.partial(_handleRefactor, EXTRACTTO_FUNCTION)); subMenu.addMenuItem(EXTRACTTO_FUNCTION); Menus.getMenu(menuLocation).addMenuItem(EXTRACTTO_FUNCTION, KeyboardPrefs.extractToFunction); // Wrap Selection CommandManager.register(Strings.CMD_REFACTORING_TRY_CATCH, REFACTORWRAPINTRYCATCH, _.partial(_handleRefactor, REFACTORWRAPINTRYCATCH)); subMenu.addMenuItem(REFACTORWRAPINTRYCATCH); Menus.getMenu(menuLocation).addMenuItem(REFACTORWRAPINTRYCATCH); CommandManager.register(Strings.CMD_REFACTORING_CONDITION, REFACTORWRAPINCONDITION, _.partial(_handleRefactor, REFACTORWRAPINCONDITION)); subMenu.addMenuItem(REFACTORWRAPINCONDITION); Menus.getMenu(menuLocation).addMenuItem(REFACTORWRAPINCONDITION); CommandManager.register(Strings.CMD_REFACTORING_ARROW_FUNCTION, REFACTORCONVERTTOARROWFN, _.partial(_handleRefactor, REFACTORCONVERTTOARROWFN)); subMenu.addMenuItem(REFACTORCONVERTTOARROWFN); Menus.getMenu(menuLocation).addMenuItem(REFACTORCONVERTTOARROWFN); CommandManager.register(Strings.CMD_REFACTORING_GETTERS_SETTERS, REFACTORCREATEGETSET, _.partial(_handleRefactor, REFACTORCREATEGETSET)); subMenu.addMenuItem(REFACTORCREATEGETSET); Menus.getMenu(menuLocation).addMenuItem(REFACTORCREATEGETSET); } }); });