Comparing version 1.7.1 to 1.7.3
@@ -1,222 +0,1 @@ | ||
/* global $, axios, _ , FileLoader, WebLogger, Keyboard, TaskList, createSpan */ | ||
window.global = (function() { | ||
var watchTaskLogsScrollTop = true | ||
var theme | ||
var logger | ||
var taskList | ||
var openedTask | ||
var activeTab = 'Procfile' | ||
var previousEnvs = null | ||
function showTaskList() { | ||
document.body.classList[ | ||
document.body.classList.contains('task-list-showed') ? 'remove' : 'add' | ||
]('task-list-showed') | ||
} | ||
function runAllTasks(e) { | ||
_.forEach(taskList.getAllFromActiveTab(), function(t) { | ||
taskList.updateTask(t.name, t.isRun, t.isActive, true, false) | ||
axios.post('/run/' + t.name) | ||
}) | ||
} | ||
function stopAllTasks(e) { | ||
_.forEach(taskList.getAllFromActiveTab(true), function(t) { | ||
taskList.updateTask(t.name, t.isRun, t.isActive, false, true) | ||
axios.post('/stop/' + t.name) | ||
}) | ||
} | ||
function clearLogs(activeTask) { | ||
if (!activeTask) { | ||
activeTask = taskList.getActive() | ||
} | ||
axios.post('/clear-logs/' + activeTask.name) | ||
activeTask.logs = [] | ||
logger.clear() | ||
} | ||
function triggerScrollWatcher(e) { | ||
logger.scrollTo('bottom', true) | ||
watchTaskLogsScrollTop = !watchTaskLogsScrollTop | ||
$('.logs-button.autoscroll').toggleClass('active', watchTaskLogsScrollTop) | ||
} | ||
function handleClickTab(tab) { | ||
if (tab !== activeTab) { | ||
taskList.changeTab(tab) | ||
} | ||
} | ||
function enableEnvsForm() { | ||
$('.envs-log').addClass('active') | ||
previousEnvs = _.clone(taskList.getActive().envs) | ||
} | ||
function updateEnvs() { | ||
$('.envs-log').removeClass('active') | ||
var activeTask = taskList.getActive() | ||
_.each($('.envs-log > input'), function(el) { | ||
var input = $(el) | ||
previousEnvs[input.attr('key')] = input.val() | ||
}) | ||
activeTask.envs = _.clone(previousEnvs) | ||
clearLogs(activeTask) | ||
axios.post('/update-envs', { | ||
name: activeTask.name, | ||
envs: _.clone(previousEnvs), | ||
}) | ||
previousEnvs = null | ||
} | ||
function cancelEnvs() { | ||
$('.envs-log').removeClass('active') | ||
_.each($('.envs-log > input'), function(el) { | ||
var input = $(el) | ||
input.val(previousEnvs[input.attr('key')]) | ||
}) | ||
taskList.getActive().envs = _.clone(previousEnvs) | ||
previousEnvs = null | ||
} | ||
function openTask(name) { | ||
if (name !== openedTask) { | ||
var task = taskList.getTask(name) | ||
if (task.name) { | ||
taskList.setActive(task) | ||
openedTask = name | ||
// setActiveCommand(task) | ||
logger.clear(true) | ||
axios.get('/logs/' + task.name).then(function(response) { | ||
logger.updateDescription(task.task) | ||
logger.updateEnvs(task.envs) | ||
var logs = '' | ||
_.forEach(response.data, function(log, index) { | ||
logs += logger.createHTMLLog(log) | ||
}) | ||
setTimeout(function() { | ||
logger.push(logs, true) | ||
logger.scrollTo('bottom') | ||
}, 0) | ||
}) | ||
} | ||
} | ||
} | ||
function runTask(name) { | ||
window.event.stopPropagation() | ||
var task = taskList.getTask(name) | ||
if (!task.isStartRunning && !task.isRun) { | ||
taskList.setActive(task, true) | ||
axios.post('/run/' + task.name) | ||
} | ||
} | ||
function stopTask(name) { | ||
window.event.stopPropagation() | ||
var task = taskList.getTask(name) | ||
if (!task.isStartRunning && task.isRun) { | ||
// var taskButton = $('#' + task.name) | ||
taskList.updateTask(task.name, false, task.isActive, false, true) | ||
// taskButton.addClass('stopping') | ||
axios.post('/stop/' + task.name) | ||
} | ||
} | ||
function setTheme(newTheme) { | ||
if (newTheme !== theme) { | ||
localStorage.setItem('theme', newTheme) | ||
if (theme !== 'white') { | ||
FileLoader(theme + '-theme.css', true) | ||
} | ||
$('.menu-item.' + theme).removeClass('active') | ||
$('.menu-item.' + newTheme).addClass('active') | ||
if (newTheme !== 'white') { | ||
FileLoader(newTheme + '-theme.css') | ||
} | ||
theme = newTheme | ||
} | ||
} | ||
var keyboardEnabled = false | ||
var fullscreene = false | ||
function toggleKeyboard() { | ||
keyboardEnabled = !keyboardEnabled | ||
if (!keyboardEnabled && window.Keyboard) { | ||
Keyboard.setEnabled(false) | ||
window.Keyboard = null | ||
} | ||
document | ||
.querySelector('.menu-item.keyboard') | ||
.classList[keyboardEnabled ? 'add' : 'remove']('active') | ||
FileLoader('keyboard-shortcuts.css', !keyboardEnabled) | ||
FileLoader('keyboard.js', !keyboardEnabled) | ||
} | ||
function toggleResize() { | ||
fullscreene = !fullscreene | ||
document | ||
.querySelector('.menu-item.resize') | ||
.classList[fullscreene ? 'add' : 'remove']('active') | ||
FileLoader('fullscreene.css', !fullscreene) | ||
} | ||
$(document).ready(function() { | ||
setTheme(localStorage.getItem('theme') || 'white') | ||
logger = window.logger = new WebLogger(document.getElementById('task-logs')) | ||
axios.get('/info').then(function(response) { | ||
var appName = response.data.appName | ||
if (appName) { | ||
$('title').text(appName + ' | fb') | ||
var headerTitle = $('header > .title') | ||
headerTitle | ||
.text(appName) | ||
.on('mouseover', function() { | ||
axios.get('/project-version').then(function(response) { | ||
if (response.data) { | ||
headerTitle.html( | ||
appName + createSpan('project-version', response.data) | ||
) | ||
} | ||
}) | ||
}) | ||
.on('mouseleave', function() { | ||
headerTitle.text(appName) | ||
}) | ||
} // getProjectVersion | ||
taskList = window.taskList = new TaskList( | ||
document.getElementById('tasks'), | ||
response.data.commands | ||
) | ||
new WebSocket('ws://' + location.host).onmessage = function(message) { | ||
var data = JSON.parse(message.data) | ||
if (data.name) { | ||
var command = taskList.updateTask(data.name, data.isRun) | ||
if (data.log) { | ||
if (command.isActive) { | ||
logger.push(data.log) | ||
if (watchTaskLogsScrollTop) logger.scrollTo('bottom') | ||
} | ||
} | ||
} | ||
} | ||
}) | ||
}) | ||
return { | ||
showTaskList: showTaskList, | ||
runAllTasks: runAllTasks, | ||
stopAllTasks: stopAllTasks, | ||
triggerScrollWatcher: triggerScrollWatcher, | ||
handleClickTab: handleClickTab, | ||
enableEnvsForm: enableEnvsForm, | ||
updateEnvs: updateEnvs, | ||
cancelEnvs: cancelEnvs, | ||
clearLogs: clearLogs, | ||
setTheme: setTheme, | ||
openTask: openTask, | ||
runTask: runTask, | ||
stopTask: stopTask, | ||
toggleKeyboard: toggleKeyboard, | ||
toggleResize: toggleResize, | ||
} | ||
})() | ||
!function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t){window.global=function(){var e,t,n,o,a=!0,s="Procfile",i=null;function c(e){e||(e=n.getActive()),axios.post("/clear-logs/"+e.name),e.logs=[],t.clear()}function r(t){t!==e&&(localStorage.setItem("theme",t),"white"!==e&&FileLoader(e+"-theme.css",!0),$(".menu-item."+e).removeClass("active"),$(".menu-item."+t).addClass("active"),"white"!==t&&FileLoader(t+"-theme.css"),e=t)}var l=!1,u=!1;return $(document).ready(function(){r(localStorage.getItem("theme")||"white"),t=window.logger=new WebLogger(document.getElementById("task-logs")),axios.get("/info").then(function(e){var o=e.data.appName;if(o){$("title").text(o+" | fb");var s=$("header > .title");s.text(o).on("mouseover",function(){axios.get("/project-version").then(function(e){e.data&&s.html(o+createSpan("project-version",e.data))})}).on("mouseleave",function(){s.text(o)})}n=window.taskList=new TaskList(document.getElementById("tasks"),e.data.commands),new WebSocket("ws://"+location.host).onmessage=function(e){var o=JSON.parse(e.data);if(o.name){var s=n.updateTask(o.name,o.isRun);o.log&&s.isActive&&(t.push(o.log),a&&t.scrollTo("bottom"))}}})}),{showTaskList:function(){document.body.classList[document.body.classList.contains("task-list-showed")?"remove":"add"]("task-list-showed")},runAllTasks:function(e){_.forEach(n.getAllFromActiveTab(),function(e){n.updateTask(e.name,e.isRun,e.isActive,!0,!1),axios.post("/run/"+e.name)})},stopAllTasks:function(e){_.forEach(n.getAllFromActiveTab(!0),function(e){n.updateTask(e.name,e.isRun,e.isActive,!1,!0),axios.post("/stop/"+e.name)})},triggerScrollWatcher:function(e){t.scrollTo("bottom",!0),a=!a,$(".logs-button.autoscroll").toggleClass("active",a)},handleClickTab:function(e){e!==s&&n.changeTab(e)},enableEnvsForm:function(){$(".envs-log").addClass("active"),i=_.clone(n.getActive().envs)},updateEnvs:function(){$(".envs-log").removeClass("active");var e=n.getActive();_.each($(".envs-log > input"),function(e){var t=$(e);i[t.attr("key")]=t.val()}),e.envs=_.clone(i),c(e),axios.post("/update-envs",{name:e.name,envs:_.clone(i)}),i=null},cancelEnvs:function(){$(".envs-log").removeClass("active"),_.each($(".envs-log > input"),function(e){var t=$(e);t.val(i[t.attr("key")])}),n.getActive().envs=_.clone(i),i=null},clearLogs:c,setTheme:r,openTask:function(e){if(e!==o){var a=n.getTask(e);a.name&&(n.setActive(a),o=e,t.clear(!0),axios.get("/logs/"+a.name).then(function(e){t.updateDescription(a.task),t.updateEnvs(a.envs);var n="";_.forEach(e.data,function(e,o){n+=t.createHTMLLog(e)}),setTimeout(function(){t.push(n,!0),t.scrollTo("bottom")},0)}))}},runTask:function(e){window.event.stopPropagation();var t=n.getTask(e);t.isStartRunning||t.isRun||(n.setActive(t,!0),axios.post("/run/"+t.name))},stopTask:function(e){window.event.stopPropagation();var t=n.getTask(e);!t.isStartRunning&&t.isRun&&(n.updateTask(t.name,!1,t.isActive,!1,!0),axios.post("/stop/"+t.name))},toggleKeyboard:function(){!(l=!l)&&window.Keyboard&&(Keyboard.setEnabled(!1),window.Keyboard=null),document.querySelector(".menu-item.keyboard").classList[l?"add":"remove"]("active"),FileLoader("keyboard-shortcuts.css",!l),FileLoader("keyboard.js",!l)},toggleResize:function(){u=!u,document.querySelector(".menu-item.resize").classList[u?"add":"remove"]("active"),FileLoader("fullscreene.css",!u)}}}()}]); |
@@ -1,92 +0,1 @@ | ||
/* global $, _ */ | ||
window.createButton = function(classes, icon, onClick, asJqElement, innerText) {// eslint-disable-line | ||
var button | ||
if (asJqElement) { | ||
button = $('<button></button>') | ||
button.addClass(classes) | ||
if (icon) { | ||
var iconEl = $('<i class="fas fa-' + icon + '"></i>') | ||
button.html(iconEl) | ||
} | ||
if (innerText) { | ||
button.append(window.createSpan('', innerText)) | ||
} | ||
if (onClick) { | ||
button.on('click', onClick) | ||
} | ||
} else { | ||
button = | ||
'<button ' + | ||
(onClick ? 'onclick="' + onClick + '"' : '') + | ||
' class="' + | ||
classes + | ||
'">' + | ||
(icon ? '<i class="fas fa-' + icon + '"></i>' : '') + | ||
(innerText || '') + | ||
'</button>' | ||
} | ||
return button | ||
} | ||
window.createSpan = function(classes, text) { | ||
return '<span class="' + (classes || '') + '">' + text + '</span>' | ||
} | ||
window.funcToStr = function(func) { // eslint-disable-line | ||
var args = _.slice(arguments, 1) | ||
return ( | ||
func.name + | ||
'(' + | ||
_(args) | ||
.map(function(arg) { | ||
switch (typeof arg) { | ||
case 'string': | ||
return "'" + arg + "'" | ||
default: | ||
return arg | ||
} | ||
}) | ||
.join(',') + | ||
')' | ||
) | ||
} | ||
window.createDiv = function(// eslint-disable-line | ||
classes, | ||
innerText, | ||
icon, | ||
id, | ||
onClick, | ||
asJqElement | ||
) { | ||
var element = | ||
'<div ' + | ||
(id ? "id='" + id + "'" : '') + | ||
(onClick && !asJqElement ? 'onclick="' + onClick + '"' : '') + | ||
' class="' + | ||
classes + | ||
'">' + | ||
(icon ? '<i class="fas fa-' + icon + '"></i>' : '') + | ||
(innerText || '') + | ||
'</div>' | ||
if (asJqElement) { | ||
element = $(element) | ||
if (onClick) { | ||
element.on('click', onClick) | ||
} | ||
} | ||
return element | ||
} | ||
window.createEnvsInput = function(key, value) {// eslint-disable-line | ||
return ( | ||
'<input class="env-value ansi-bright-blue-fg" onkeypress="this.style.width = ((this.value.length + 1) * 8) + \'px\';" key="' + | ||
key + | ||
'" value="' + | ||
value + | ||
'" style="width:' + | ||
((value.length + 1) * 5.1 + 4) + | ||
'px;"/>' | ||
) | ||
} | ||
!function(n){var t={};function e(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}e.m=n,e.c=t,e.d=function(n,t,r){e.o(n,t)||Object.defineProperty(n,t,{configurable:!1,enumerable:!0,get:r})},e.r=function(n){Object.defineProperty(n,"__esModule",{value:!0})},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="",e(e.s=4)}({4:function(n,t){window.createButton=function(n,t,e,r,i){var o;if(r){if((o=$("<button></button>")).addClass(n),t){var a=$('<i class="fas fa-'+t+'"></i>');o.html(a)}i&&o.append(window.createSpan("",i)),e&&o.on("click",e)}else o="<button "+(e?'onclick="'+e+'"':"")+' class="'+n+'">'+(t?'<i class="fas fa-'+t+'"></i>':"")+(i||"")+"</button>";return o},window.createSpan=function(n,t){return'<span class="'+(n||"")+'">'+t+"</span>"},window.funcToStr=function(n){var t=_.slice(arguments,1);return n.name+"("+_(t).map(function(n){switch(typeof n){case"string":return"'"+n+"'";default:return n}}).join(",")+")"},window.createDiv=function(n,t,e,r,i,o){var a="<div "+(r?"id='"+r+"'":"")+(i&&!o?'onclick="'+i+'"':"")+' class="'+n+'">'+(e?'<i class="fas fa-'+e+'"></i>':"")+(t||"")+"</div>";return o&&(a=$(a),i&&a.on("click",i)),a},window.createEnvsInput=function(n,t){return'<input class="env-value ansi-bright-blue-fg" onkeypress="this.style.width = ((this.value.length + 1) * 8) + \'px\';" key="'+n+'" value="'+t+'" style="width:'+(5.1*(t.length+1)+4)+'px;"/>'}}}); |
@@ -1,53 +0,1 @@ | ||
/* global jQuery */ | ||
window.FileLoader = (function($) {// eslint-disable-line | ||
function createLink(filename) { | ||
var link = document.createElement('link') | ||
link.type = 'text/css' | ||
link.rel = 'stylesheet' | ||
link.href = 'styles/' + filename | ||
return link | ||
} | ||
function createScript(filename) { | ||
var script = document.createElement('script') | ||
script.src = 'scripts/' + filename | ||
return script | ||
} | ||
function appendTo(element, appendElement) { | ||
setTimeout(function() { | ||
document.getElementsByTagName(element)[0].appendChild(appendElement) | ||
}, 0) | ||
} | ||
function removeFile(filename) { | ||
setTimeout(function() { | ||
var element = null | ||
if (filename.includes('.css')) { | ||
element = document.querySelector('link[href="styles/' + filename + '"]') | ||
} | ||
if (filename.includes('.js')) { | ||
element = document.querySelector( | ||
'script[src="scripts/' + filename + '"]' | ||
) | ||
} | ||
if (element) { | ||
element.parentElement.removeChild(element) | ||
} | ||
}, 0) | ||
} | ||
return function(filename, remove) { | ||
if (remove) { | ||
removeFile(filename) | ||
} else { | ||
if (filename.includes('.css')) { | ||
// $('[href="styles/'+filename+'"]') | ||
appendTo('head', createLink(filename)) | ||
} | ||
if (filename.includes('.js')) { | ||
appendTo('body', createScript(filename)) | ||
} | ||
} | ||
} | ||
})(jQuery) | ||
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var u=t[r]={i:r,l:!1,exports:{}};return e[r].call(u.exports,u,u.exports,n),u.l=!0,u.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}({3:function(e,t){window.FileLoader=function(e){function t(e,t){setTimeout(function(){document.getElementsByTagName(e)[0].appendChild(t)},0)}return function(e,n){n?function(e){setTimeout(function(){var t=null;e.includes(".css")&&(t=document.querySelector('link[href="styles/'+e+'"]')),e.includes(".js")&&(t=document.querySelector('script[src="scripts/'+e+'"]')),t&&t.parentElement.removeChild(t)},0)}(e):(e.includes(".css")&&t("head",function(e){var t=document.createElement("link");return t.type="text/css",t.rel="stylesheet",t.href="styles/"+e,t}(e)),e.includes(".js")&&t("body",function(e){var t=document.createElement("script");return t.src="scripts/"+e,t}(e)))}}(jQuery)}}); |
@@ -1,106 +0,1 @@ | ||
/* global $, taskList, _ */ | ||
window.Keyboard = (function() { //eslint-disable-line | ||
var global = window.global | ||
var isEnabled = false | ||
var taskCharCodes = [ | ||
81, | ||
87, | ||
69, | ||
82, | ||
84, | ||
89, | ||
85, | ||
73, | ||
79, | ||
80, | ||
219, | ||
221, | ||
65, | ||
83, | ||
68, | ||
70, | ||
71, | ||
72, | ||
74, | ||
75, | ||
76, | ||
186, | ||
222, | ||
90, | ||
88, | ||
67, | ||
86, | ||
66, | ||
78, | ||
77, | ||
188, | ||
190, | ||
191, | ||
] | ||
function onKeydown(event) { | ||
if (event.target.tagName !== 'INPUT') { | ||
if (event.shiftKey) { | ||
if (event.keyCode === 82) { | ||
event.preventDefault() | ||
event.stopPropagation() | ||
var task = taskList.getActive() | ||
if (!task.isStartRunning) { | ||
if (task.isRun) { | ||
global.stopTask(task.name) | ||
} else { | ||
global.runTask(task.name) | ||
} | ||
} | ||
event.keyCode = 0 | ||
event.ctrlKey = false | ||
event.cancelBubble = true | ||
return false | ||
} | ||
} else { | ||
if (event.keyCode === 9) { | ||
global.handleClickTab( | ||
taskList.getActiveTab() === 'npm' ? 'procfile' : 'npm' | ||
) | ||
} else { | ||
$('.task[char-code="' + event.keyCode + '"]').trigger('click') | ||
} | ||
} | ||
} | ||
event.keyCode = 0 | ||
event.ctrlKey = false | ||
event.cancelBubble = true | ||
event.preventDefault() | ||
event.stopPropagation() | ||
return false | ||
} | ||
function setEnabled(enabled) { | ||
isEnabled = enabled | ||
if (isEnabled) { | ||
window.addEventListener('keydown', onKeydown, false) | ||
} else { | ||
window.removeEventListener('keydown', onKeydown) | ||
} | ||
} | ||
function connect(element, indexKeycode) { | ||
element.setAttribute('char-code', taskCharCodes[indexKeycode]) | ||
} | ||
var currentTasks = document.querySelectorAll('.task') | ||
_.forEach(currentTasks, function(task, index) { | ||
connect(task, index) | ||
}) | ||
setEnabled(true) | ||
return { | ||
setEnabled: setEnabled, | ||
isEnabled: function() { | ||
return isEnabled | ||
}, | ||
connect: connect, | ||
} | ||
})() | ||
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}({2:function(e,t){window.Keyboard=function(){var e=window.global,t=!1,n=[81,87,69,82,84,89,85,73,79,80,219,221,65,83,68,70,71,72,74,75,76,186,222,90,88,67,86,66,78,77,188,190,191];function r(t){if("INPUT"!==t.target.tagName)if(t.shiftKey){if(82===t.keyCode){t.preventDefault(),t.stopPropagation();var n=taskList.getActive();return n.isStartRunning||(n.isRun?e.stopTask(n.name):e.runTask(n.name)),t.keyCode=0,t.ctrlKey=!1,t.cancelBubble=!0,!1}}else 9===t.keyCode?e.handleClickTab("npm"===taskList.getActiveTab()?"procfile":"npm"):$('.task[char-code="'+t.keyCode+'"]').trigger("click");return t.keyCode=0,t.ctrlKey=!1,t.cancelBubble=!0,t.preventDefault(),t.stopPropagation(),!1}function o(e){(t=e)?window.addEventListener("keydown",r,!1):window.removeEventListener("keydown",r)}function a(e,t){e.setAttribute("char-code",n[t])}var i=document.querySelectorAll(".task");return _.forEach(i,function(e,t){a(e,t)}),o(!0),{setEnabled:o,isEnabled:function(){return t},connect:a}}()}}); |
@@ -1,146 +0,1 @@ | ||
/* global $, _ , createButton, global, Keyboard, createSpan */ | ||
window.TaskList = (function() {// eslint-disable-line | ||
var element | ||
var taskList = { | ||
npm: [], | ||
procfile: [], | ||
} | ||
var activeTab | ||
var activeTask = { | ||
npm: null, | ||
procfile: null, | ||
} | ||
function updateTaskList() { | ||
taskList[activeTab].forEach(function(taskData, index) { | ||
var task = document.createElement('div') | ||
task.classList.add( | ||
'task', | ||
'task-num-' + (index + 1), | ||
taskData.isRun && 'running', | ||
taskData.isStartRunning && 'clicked' | ||
) | ||
task.setAttribute('id', taskData.name) | ||
task.setAttribute('onclick', "global.openTask('" + taskData.name + "')") | ||
if (window.Keyboard) { | ||
Keyboard.connect(task, index) | ||
} | ||
task.innerHTML = | ||
'<i class="fas fa-cog"></i>' + | ||
createSpan('task-name', taskData.name) + | ||
createButton( | ||
'run-task', | ||
'play', | ||
"global.runTask('" + taskData.name + "')" | ||
) + | ||
createButton( | ||
'stop-task', | ||
'stop', | ||
"global.stopTask('" + taskData.name + "')" | ||
) | ||
element.appendChild(task) | ||
}) | ||
setTimeout(function() { | ||
$('#' + activeTask[activeTab]).trigger('click') | ||
}, 0) | ||
} | ||
function changeTab(newTab) { | ||
document.getElementById(activeTab).classList.remove('active') | ||
activeTab = newTab | ||
document.getElementById(activeTab).classList.add('active') | ||
clear() | ||
updateTaskList() | ||
} | ||
function getTask(name) { | ||
return _.find(taskList[activeTab], function(c) { | ||
return c.name === name | ||
}) | ||
} | ||
function updateTask(name, isRun, isActive, isStartRunning, isStopping) { | ||
var task = getTask(name) | ||
var taskButton = document.getElementById(name) | ||
console.log(name, task) | ||
task.isRun = isRun | ||
task.isStartRunning = !!isStartRunning | ||
task.isStopping = !!isStopping | ||
if (isActive) { | ||
task.isActive = true | ||
var previousActiveTask = document.querySelector('.task.active') | ||
if (previousActiveTask) { | ||
var id = previousActiveTask.getAttribute('id') | ||
if (id !== name) { | ||
getTask(previousActiveTask.getAttribute('id')).isActive = false | ||
previousActiveTask.classList.remove('active') | ||
} | ||
} | ||
taskButton.classList.add('active') | ||
} | ||
taskButton.classList[isStopping ? 'add' : 'remove']('stopping') | ||
taskButton.classList[isRun ? 'add' : 'remove']('running') | ||
taskButton.classList[isStartRunning ? 'add' : 'remove']('clicked') | ||
return task | ||
} | ||
function clear() { | ||
while (element.lastChild) { | ||
element.removeChild(element.lastChild) | ||
} | ||
} | ||
function setActive(task, isStartRunning, isStopping) { | ||
activeTask[task.isNPM ? 'npm' : 'procfile'] = task.name | ||
updateTask( | ||
task.name, | ||
task.isRun, | ||
true, | ||
isStartRunning === undefined ? task.isStartRunning : isStartRunning, | ||
isStopping === undefined ? task.isStopping : isStopping | ||
) | ||
} | ||
function getActive() { | ||
return getTask(activeTask[activeTab]) | ||
} | ||
function getAllFromActiveTab(isRun) { | ||
return isRun | ||
? _.filter(taskList[activeTab], function(task) { | ||
return task.isRun | ||
}) | ||
: taskList[activeTab] | ||
} | ||
return function(el, tasks) { | ||
element = el | ||
taskList = _.reduce( | ||
tasks, | ||
function(newTaskList, task) { | ||
newTaskList[task.isNPM ? 'npm' : 'procfile'].push(task) | ||
return newTaskList | ||
}, | ||
{ | ||
npm: [], | ||
procfile: [], | ||
} | ||
) | ||
activeTask.npm = taskList.npm[0].name | ||
activeTask.procfile = taskList.procfile[0].name | ||
activeTab = taskList.procfile.length ? 'procfile' : 'npm' | ||
updateTaskList() | ||
return { | ||
updateTaskList: updateTaskList, | ||
clear: clear, | ||
changeTab: changeTab, | ||
getTask: getTask, | ||
updateTask: updateTask, | ||
setActive: setActive, | ||
getActive: getActive, | ||
getActiveTab: function() { | ||
return activeTab | ||
}, | ||
getAllFromActiveTab: getAllFromActiveTab, | ||
} | ||
} | ||
})() | ||
!function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([,function(t,e){window.TaskList=function(){var t,e,n={npm:[],procfile:[]},i={npm:null,procfile:null};function r(){n[e].forEach(function(e,n){var i=document.createElement("div");i.classList.add("task","task-num-"+(n+1),e.isRun&&"running",e.isStartRunning&&"clicked"),i.setAttribute("id",e.name),i.setAttribute("onclick","global.openTask('"+e.name+"')"),window.Keyboard&&Keyboard.connect(i,n),i.innerHTML='<i class="fas fa-cog"></i>'+createSpan("task-name",e.name)+createButton("run-task","play","global.runTask('"+e.name+"')")+createButton("stop-task","stop","global.stopTask('"+e.name+"')"),t.appendChild(i)}),setTimeout(function(){$("#"+i[e]).trigger("click")},0)}function a(t){document.getElementById(e).classList.remove("active"),e=t,document.getElementById(e).classList.add("active"),u(),r()}function c(t){return _.find(n[e],function(e){return e.name===t})}function o(t,e,n,i,r){var a=c(t),o=document.getElementById(t);if(a.isRun=e,a.isStartRunning=!!i,a.isStopping=!!r,n){a.isActive=!0;var u=document.querySelector(".task.active");if(u)u.getAttribute("id")!==t&&(c(u.getAttribute("id")).isActive=!1,u.classList.remove("active"));o.classList.add("active")}return o.classList[r?"add":"remove"]("stopping"),o.classList[e?"add":"remove"]("running"),o.classList[i?"add":"remove"]("clicked"),a}function u(){for(;t.lastChild;)t.removeChild(t.lastChild)}function s(t,e,n){i[t.isNPM?"npm":"procfile"]=t.name,o(t.name,t.isRun,!0,void 0===e?t.isStartRunning:e,void 0===n?t.isStopping:n)}function l(){return c(i[e])}function d(t){return t?_.filter(n[e],function(t){return t.isRun}):n[e]}return function(f,p){return t=f,n=_.reduce(p,function(t,e){return t[e.isNPM?"npm":"procfile"].push(e),t},{npm:[],procfile:[]}),i.npm=n.npm[0].name,i.procfile=n.procfile[0].name,e=n.procfile.length?"procfile":"npm",r(),{updateTaskList:r,clear:u,changeTab:a,getTask:c,updateTask:o,setActive:s,getActive:l,getActiveTab:function(){return e},getAllFromActiveTab:d}}}()}]); |
@@ -1,112 +0,1 @@ | ||
/* global jQuery, _ , createButton, AnsiUp, createSpan, createEnvsInput */ | ||
window.WebLogger = (function($) {// eslint-disable-line | ||
var element | ||
var containsEnvs = false | ||
var ansiUp | ||
function scrollTo(direction, animate) { | ||
if (direction === 'bottom') { | ||
if (animate) { | ||
$(element).animate( | ||
{ | ||
scrollTop: element.scrollHeight, | ||
}, | ||
'1500' | ||
) | ||
} else { | ||
element.scrollTop = element.scrollHeight | ||
} | ||
} | ||
if (direction === 'top') { | ||
$(element).animate({ scrollTop: 0 }, '500') | ||
} | ||
} | ||
function createHTMLLog(logData) { | ||
var log = ansiUp.ansi_to_html( | ||
logData.replace(/[\n\r]/g, '<br>').replace(/ /g, ' ') | ||
) | ||
if (log.includes('Warning:')) { | ||
return createSpan('ansi-yellow-fg', log) | ||
} | ||
if (log.includes('Exited Successfully')) { | ||
return createSpan('ended ok', log) + '<br><br>' | ||
} | ||
if (log.includes('Exited with exit code ')) { | ||
return createSpan('ended', log) + '<br><br>' | ||
} | ||
return log | ||
.replace(/(<span class="ansi-bright-black-fg">.<\/span>)/g, function( | ||
conc | ||
) { | ||
return createSpan('ansi-bright-black-fg mocha-test', '.') | ||
}) | ||
.replace(/(<span class="ansi-red-fg">!<\/span>)/g, function(conc) { | ||
return createSpan('ansi-red-fg mocha-test', '!') | ||
}) | ||
} | ||
function push(log, raw) { | ||
element.insertAdjacentHTML('beforeend', raw ? log : this.createHTMLLog(log)) | ||
} | ||
function clear(full) { | ||
while ( | ||
full | ||
? element.lastChild | ||
: element.children.length > (containsEnvs ? 2 : 1) | ||
) { | ||
element.removeChild(element.lastChild) | ||
} | ||
} | ||
function updateEnvs(envs) { | ||
containsEnvs = _.keys(envs).length | ||
if (containsEnvs) { | ||
var container = document.createElement('div') | ||
container.classList.add('envs-log') | ||
container.innerHTML = | ||
_.map(envs, function(value, key) { | ||
return ( | ||
createSpan('ansi-bright-magenta-fg', key) + | ||
'=' + | ||
createEnvsInput(key, value) | ||
) | ||
}).join(', ') + | ||
createButton('logs-button', 'edit', 'global.enableEnvsForm()') + | ||
createButton('logs-button cancel', 'times', 'global.cancelEnvs()') + | ||
createButton('logs-button apply', 'check', 'global.updateEnvs()') | ||
element.appendChild(container) | ||
} | ||
} | ||
function updateDescription(description) { | ||
var container = document.createElement('div') | ||
container.classList.add('task-data') | ||
var span = document.createElement('span') | ||
span.innerText = description | ||
container.appendChild(span) | ||
element.appendChild(container) | ||
} | ||
function onScroll() { | ||
if (this.scrollTop > 70) { | ||
this.classList.add('flying') | ||
} else { | ||
this.classList.remove('flying') | ||
} | ||
} | ||
return function WebLogger(el) { | ||
element = el | ||
element.addEventListener('scroll', onScroll) | ||
ansiUp = new AnsiUp() | ||
ansiUp.use_classes = true | ||
ansiUp.escape_for_html = false | ||
return { | ||
scrollTo: scrollTo, | ||
createHTMLLog: createHTMLLog, | ||
push: push, | ||
clear: clear, | ||
updateEnvs: updateEnvs, | ||
updateDescription: updateDescription, | ||
} | ||
} | ||
})(jQuery) | ||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=0)}([function(e,n){window.WebLogger=function(e){var n,t,r=!1;function a(t,r){"bottom"===t&&(r?e(n).animate({scrollTop:n.scrollHeight},"1500"):n.scrollTop=n.scrollHeight),"top"===t&&e(n).animate({scrollTop:0},"500")}function c(e){var n=t.ansi_to_html(e.replace(/[\n\r]/g,"<br>").replace(/ /g," "));return n.includes("Warning:")?createSpan("ansi-yellow-fg",n):n.includes("Exited Successfully")?createSpan("ended ok",n)+"<br><br>":n.includes("Exited with exit code ")?createSpan("ended",n)+"<br><br>":n.replace(/(<span class="ansi-bright-black-fg">.<\/span>)/g,function(e){return createSpan("ansi-bright-black-fg mocha-test",".")}).replace(/(<span class="ansi-red-fg">!<\/span>)/g,function(e){return createSpan("ansi-red-fg mocha-test","!")})}function o(e,t){n.insertAdjacentHTML("beforeend",t?e:this.createHTMLLog(e))}function s(e){for(;e?n.lastChild:n.children.length>(r?2:1);)n.removeChild(n.lastChild)}function l(e){if(r=_.keys(e).length){var t=document.createElement("div");t.classList.add("envs-log"),t.innerHTML=_.map(e,function(e,n){return createSpan("ansi-bright-magenta-fg",n)+"="+createEnvsInput(n,e)}).join(", ")+createButton("logs-button","edit","global.enableEnvsForm()")+createButton("logs-button cancel","times","global.cancelEnvs()")+createButton("logs-button apply","check","global.updateEnvs()"),n.appendChild(t)}}function i(e){var t=document.createElement("div");t.classList.add("task-data");var r=document.createElement("span");r.innerText=e,t.appendChild(r),n.appendChild(t)}function u(){this.scrollTop>70?this.classList.add("flying"):this.classList.remove("flying")}return function(e){return(n=e).addEventListener("scroll",u),(t=new AnsiUp).use_classes=!0,t.escape_for_html=!1,{scrollTo:a,createHTMLLog:c,push:o,clear:s,updateEnvs:l,updateDescription:i}}}(jQuery)}]); |
{ | ||
"name": "flamebird", | ||
"version": "1.7.1", | ||
"version": "1.7.3", | ||
"description": "wonderful task manager for Procfile-based or npm-based applications", | ||
"main": "flamebird.js", | ||
"scripts": { | ||
"webpack": "node_modules/.bin/webpack", | ||
"lint-js-fix": "yarn lint-js --fix", | ||
"lint-js": "eslint .", | ||
"postinstall": "yarn webpack --config webpack.config.js" | ||
"build-prod": "yarn webpack --config webpack.config.js", | ||
"prepublish": "yarn build-prod", | ||
"postpublish": "git checkout lib flamebird.js" | ||
}, | ||
@@ -50,4 +53,4 @@ "repository": { | ||
"prettier": "1.10.2", | ||
"webpack": "4.8.2", | ||
"webpack-cli": "2.1.3" | ||
"webpack": "^4.8.2", | ||
"webpack-cli": "^2.1.3" | ||
}, | ||
@@ -54,0 +57,0 @@ "directories": { |
@@ -20,6 +20,2 @@ const fs = require('fs') | ||
} | ||
console.log( | ||
_.merge({}, getEntries('./lib/app/'), getEntries('./lib/app/scripts/')) | ||
) | ||
module.exports = [ | ||
@@ -26,0 +22,0 @@ { |
Install scripts
Supply chain riskInstall scripts are run when the package is installed. The majority of malware in npm is hidden in install scripts.
Found 1 instance in 1 package
0
465205
8664