Fix some issues + last stand

Signed-off-by: Josef Fröhle <github@josef-froehle.de>
This commit is contained in:
2020-06-25 14:57:42 +02:00
parent 4a2526d691
commit 63024ffe8f
22 changed files with 1977 additions and 590 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

+21 -7
View File
@@ -1,4 +1,6 @@
var DEBUG_APP = false;
$('#dataform').on('submit', function (e) {
e.preventDefault();
@@ -6,7 +8,9 @@ $('#dataform').on('submit', function (e) {
if (inputContent.length > 0) {
var warData = JSON.parse( inputContent );
initApp(warData, 'withSave', warData);
if (initApp(warData, 'withSave', warData) != false){
$('#data').val('');
}
}
});
@@ -18,27 +22,37 @@ $('#fileUpload').on('change', function () {
});
function initApp (data, callback, callbackData) {
if( !data.results ||
if( data.results && data.results.length == 3 ){
var reWriteMapData = JSON.parse(JSON.stringify(data));
reWriteMapData.results[1].ident = reWriteMapData.results[1].ident.replace(/group_\d+_/g, "");
reWriteMapData.results[2].ident = reWriteMapData.results[2].ident.replace(/group_\d+_/g, "");
reWriteMapData.results.shift();
callbackData = data = JSON.parse(JSON.stringify(reWriteMapData)) ;
delete reWriteMapData;
if (DEBUG_APP) console.log(data);
}
if( !data.results || data.results.length !=2 ||
!data.results[0] ||
!data.results[0].ident == "body" ||
data.results[0].ident != "body" ||
!data.results[1] ||
!data.results[1].ident == "clanWarGetInfo" ||
data.results[1].ident != "clanWarGetInfo" ||
!data.results[1].result ||
!data.results[1].result.response ) {
alert("Please recreate the JSON, switch to the main screen, and switch back to GuildWars. Then copy the JSON!");
return false;
}
console.log(data)
if (DEBUG_APP) console.log(data)
var mapData = data.results[1].result.response;
console.log('data', JSON.parse( JSON.stringify(data)) );
if (DEBUG_APP) console.log('data', JSON.parse( JSON.stringify(data)) );
enhanceMap(mapData.enemySlots);
enhanceMap(mapData.ourSlots);
app.map = mapData;
app.map.warDate = data.date;
console.log('app.map', JSON.parse( JSON.stringify(mapData)) );
if (DEBUG_APP) console.log('app.map', JSON.parse( JSON.stringify(mapData)) );
Vue.nextTick(function () {
// Determine which player team has more power: titans or heroes
+11 -7
View File
@@ -12,18 +12,22 @@ var toe = new Vue({
matches: []
},
methods: {
getEnemyTeam: function (team) {
var titans = '';
for (titan in team) titans += titan;
findInTeam: function (team, seachTeam) {
return seachTeam.every(function (v) {
return team.includes(v)
})
},
getEnemyTeam: function (team) {
var titans = [];
for (titan in team) titans.push(titan);
return titans;
},
getSelectedTitans: function () {
var titans = '';
var titans = [];
var selectedTeam = this.sortedSelectedTitans;
for (titan in selectedTeam) titans += selectedTeam[titan];
for (titan in selectedTeam) titans.push(selectedTeam[titan])
return titans;
},
@@ -40,7 +44,7 @@ var toe = new Vue({
humanDate: function (timestamp) {
return new Date(timestamp * 1000).toLocaleString(undefined, { year: 'numeric', month: 'long', day: 'numeric' });
},
humanPlayer: function(id) {
humanPlayer: function (id) {
var player;
if (id == 7737454) player = 'Zero';
+11 -1
View File
@@ -1,10 +1,20 @@
# Meta tags settings
name: '' # Used for Facebook meta og:site_name
meta_title: '' # Global fallback meta title
meta_description: '' # Global fallback meta description
meta_image: '' # Global fallback for meta image
# Used for templating.
# Allows unminified scripts for dev environment in _includes/partials/scripts.html
is_production: false
# Root folder is always "/" regardless of production build settings.
baseurl: ""
baseurl: "/"
url: "http://localhost:3000"
hostname: "localhost"
permalink: /:title/
markdown: kramdown
include:
- _example
+3 -2
View File
@@ -5,8 +5,9 @@ meta_description: '' # Global fallback meta description
meta_image: '' # Global fallback for meta image
# Build settings
baseurl: "hero-wars-planner" # The subfolder where the site will live, no trailing slash. Ex: "investors/reports/2019"
url: "https://zerospree.github.io" # The base url, no trailing slash. Ex: "https://www.example.com"
baseurl: "/" # The subfolder where the site will live, no trailing slash. Ex: "investors/reports/2019"
url: "https://hw.deineagentur.biz" # The base url, no trailing slash. Ex: "https://www.example.com"
hostname: "localhost"
is_production: true # Leave unchanged. Used for production build.
+1 -1
View File
@@ -70,7 +70,7 @@
||
selectedTitans.length && getSelectedTitans() == getEnemyTeam(match.defBattle.attackers) &&
selectedTitans.length && findInTeam(getEnemyTeam(match.defBattle.attackers), getSelectedTitans()) &&
(
(filters == 'any' && match.enemypower < 1000000) ||
((filters == 'only_lords') && (match.enemypower > 1000000)) ||
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+109
View File
@@ -0,0 +1,109 @@
var DEBUG_APP = false;
$('#dataform').on('submit', function (e) {
e.preventDefault();
var inputContent = $.trim( $('#data').val() );
if (inputContent.length > 0) {
var warData = JSON.parse( inputContent );
if (initApp(warData, 'withSave', warData) != false){
$('#data').val('');
}
}
});
$('#fileUpload').on('change', function () {
var fileUploader = document.getElementById("fileUpload");
if ( fileUploader.files.length > 0 ) {
getFileContents( fileUploader.files[0] );
}
});
function initApp (data, callback, callbackData) {
if( data.results && data.results.length == 3 ){
var reWriteMapData = JSON.parse(JSON.stringify(data));
reWriteMapData.results[1].ident = reWriteMapData.results[1].ident.replace(/group_\d+_/g, "");
reWriteMapData.results[2].ident = reWriteMapData.results[2].ident.replace(/group_\d+_/g, "");
reWriteMapData.results.shift();
callbackData = data = JSON.parse(JSON.stringify(reWriteMapData)) ;
delete reWriteMapData;
if (DEBUG_APP) console.log(data);
}
if( !data.results || data.results.length !=2 ||
!data.results[0] ||
data.results[0].ident != "body" ||
!data.results[1] ||
data.results[1].ident != "clanWarGetInfo" ||
!data.results[1].result ||
!data.results[1].result.response ) {
alert("Please recreate the JSON, switch to the main screen, and switch back to GuildWars. Then copy the JSON!");
return false;
}
if (DEBUG_APP) console.log(data)
var mapData = data.results[1].result.response;
if (DEBUG_APP) console.log('data', JSON.parse( JSON.stringify(data)) );
enhanceMap(mapData.enemySlots);
enhanceMap(mapData.ourSlots);
app.map = mapData;
app.map.warDate = data.date;
if (DEBUG_APP) console.log('app.map', JSON.parse( JSON.stringify(mapData)) );
Vue.nextTick(function () {
// Determine which player team has more power: titans or heroes
determineBestTeam('ally');
determineBestTeam('enemy');
// Syncs checkboxes between hero/titan teams
syncCheckboxes();
// Highlights the other player team when the other one is hovered
highlightHovered();
if(callback == 'withSave') {
saveToStorage(callbackData);
}
});
}
var app = new Vue({
el : '#app',
data : {
map: {}, //mapData, the data obtained from the game
mapSlots: mapSlots, // maps building names and types of data obtained from the game
storage: JSON.parse( localStorage.getItem('HeroWarsHistory') ) || []
},
computed: {
// Helps render enemy teams in order by power level
orderedEnemies: function () {
return orderByPower(this.map.enemySlots);
},
// Helps render allied teams in order by power level
orderedAllies: function () {
return orderByPower(this.map.ourSlots);
},
// Renders total team powers: hero, titan, total
getAllyPower: function () {
return getTotalPower(this.map.ourSlots);
},
// Renders total enemy team powers: hero, titan, total
getEnemyPower: function () {
return getTotalPower(this.map.enemySlots);
}
},
filters: {
formatNumber: function (value) {
return value.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
},
unixToLocale: function (value) {
return new Date(value * 1000).toDateString();
}
}
});
+19
View File
@@ -0,0 +1,19 @@
var calculator = new Vue({
el : '#calculator',
data : {
//guilds: new Array(10)
guilds: [
'',
'G1',
'G2',
'G3',
'G4',
'G5',
'G6',
'G7',
'G8',
'G9',
'G10',
]
}
});
+17
View File
@@ -0,0 +1,17 @@
function getFileContents(file) {
var file = document.getElementById("fileUpload").files[0];
var fileContents = false;
if (file) {
var reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = function (evt) {
var warData = JSON.parse(evt.target.result);
initApp(warData, 'withSave', warData);
}
reader.onerror = function (evt) {
console.error('error reading the file.')
}
}
}
+7
View File
@@ -0,0 +1,7 @@
function toggleHamburger () {
$('.hamburger').toggleClass('is-active');
}
$('.hamburger-button').on('click', function () {
toggleHamburger();
});
File diff suppressed because one or more lines are too long
+6
View File
File diff suppressed because one or more lines are too long
+45
View File
@@ -0,0 +1,45 @@
/*
* Compares dates (used to order localstorage items)
*/
function compareDates(a, b) {
var genreA = a.date;
var genreB = b.date;
var comparison = 0;
if (genreA > genreB) {
comparison = -1;
} else if (genreA < genreB) {
comparison = 1;
}
return comparison;
}
function saveToStorage(warData) {
var storageData = JSON.parse( localStorage.getItem('HeroWarsHistory') ) || [];
storageData.push(warData);
storageData.sort(compareDates);
localStorage.setItem('HeroWarsHistory', JSON.stringify(storageData) );
app.storage = storageData;
};
$('body').on('click', '.js--load-war', function(){
var $t = $(this),
index = $t.attr('data-item'),
localData = JSON.parse( localStorage.getItem('HeroWarsHistory') ),
localWar = localData[index];
initApp(localWar);
toggleHamburger();
});
$('body').on('click', '.js--remove-storage', function (){
var storageData = JSON.parse( localStorage.getItem('HeroWarsHistory') ) || [];
var index = $(this).attr('data-item');
storageData.splice(index, 1);
localStorage.setItem('HeroWarsHistory', JSON.stringify(storageData) );
app.storage = storageData;
});
-1
View File
File diff suppressed because one or more lines are too long
+121
View File
@@ -0,0 +1,121 @@
var mapSlots = [{
"name" : 'Mage Academy',
"type" : 'Hero'
},{
"name" : 'Mage Academy',
"type" : 'Hero'
},{
"name" : 'Lighthouse',
"type" : 'Hero'
},{
"name" : 'Lighthouse',
"type" : 'Hero'
},{
"name" : 'Barracks',
"type" : 'Hero'
},{
"name" : 'Barracks',
"type" : 'Hero'
},{
"name" : 'Bridge',
"type" : 'Titan'
},{
"name" : 'Bridge',
"type" : 'Titan'
},{
"name" : 'Bridge',
"type" : 'Titan'
},{
"name" : 'Spring of Elements',
"type" : 'Titan'
},{
"name" : 'Spring of Elements',
"type" : 'Titan'
},{
"name" : 'Spring of Elements',
"type" : 'Titan'
},{
"name" : 'Foundry',
"type" : 'Hero'
},{
"name" : 'Foundry',
"type" : 'Hero'
},{
"name" : 'Foundry',
"type" : 'Hero'
},{
"name" : 'Gates of Nature',
"type" : 'Titan'
},{
"name" : 'Gates of Nature',
"type" : 'Titan'
},{
"name" : 'Gates of Nature',
"type" : 'Titan'
},{
"name" : 'Bastion of Fire',
"type" : 'Titan'
},{
"name" : 'Bastion of Fire',
"type" : 'Titan'
},{
"name" : 'Bastion of Fire',
"type" : 'Titan'
},{
"name" : 'Bastion of Ice',
"type" : 'Titan'
},{
"name" : 'Bastion of Ice',
"type" : 'Titan'
},{
"name" : 'Bastion of Ice',
"type" : 'Titan'
},{
"name" : 'Citadel',
"type" : 'Hero'
},{
"name" : 'Citadel',
"type" : 'Hero'
},{
"name" : 'Citadel',
"type" : 'Hero'
},{
"name" : 'Citadel',
"type" : 'Hero'
},{
"name" : 'Citadel',
"type" : 'Hero'
},{
"name" : 'Citadel',
"type" : 'Hero'
},{
"name" : 'Mage Academy',
"type" : 'Hero'
},{
"name" : 'Lighthouse',
"type" : 'Hero'
},{
"name" : 'Barracks',
"type" : 'Hero'
},{
"name" : 'Bridge',
"type" : 'Titan'
},{
"name" : 'Spring of Elements',
"type" : 'Titan'
},{
"name" : 'Foundry',
"type" : 'Hero'
},{
"name" : 'Gates of Nature',
"type" : 'Titan'
},{
"name" : 'Bastion of Fire',
"type" : 'Titan'
},{
"name" : 'Bastion of Ice',
"type" : 'Titan'
},{
"name" : 'Citadel',
"type" : 'Hero'
}];
+78
View File
@@ -0,0 +1,78 @@
var toe = new Vue({
el: '#toe',
data: {
filters: 'any',
titans: [
'4000', '4001', '4002', '4003',
'4010', '4011', '4012', '4013',
'4020', '4021', '4022', '4023'
],
selectedTitans: [],
matches: []
},
methods: {
findInTeam: function (team, seachTeam) {
return seachTeam.every(function (v) {
return team.includes(v)
})
},
getEnemyTeam: function (team) {
var titans = [];
for (titan in team) titans.push(titan);
return titans;
},
getSelectedTitans: function () {
var titans = [];
var selectedTeam = this.sortedSelectedTitans;
for (titan in selectedTeam) titans.push(selectedTeam[titan])
return titans;
},
setTitans: function (team) {
this.selectedTitans = team;
}
},
computed: {
sortedSelectedTitans: function () {
return this.selectedTitans.sort();
}
},
filters: {
humanDate: function (timestamp) {
return new Date(timestamp * 1000).toLocaleString(undefined, { year: 'numeric', month: 'long', day: 'numeric' });
},
humanPlayer: function (id) {
var player;
if (id == 7737454) player = 'Zero';
else if (id == 3244200) player = 'OPM';
else if (id == 3075580) player = 'Other OPM';
else player = 'Who knows';
return player;
}
}
});
$(function () {
if ($('#toe').length) {
$.get('../assets/json/toedata.combined.min.json', function (data) {
var matches = data.results[0].result.response.results;
var matchesArray = [];
for (match in matches) {
matchesArray.push(matches[match]);
}
var orderedMatches = matchesArray.sort(function (a, b) {
return b.enemypower - a.enemypower;
});
toe.matches = orderedMatches;
console.log(toe.matches);
});
}
});
+150
View File
@@ -0,0 +1,150 @@
/*
* Adds more data to the mapData object
* so it's easier to print out information
* such as buildings/location and total power
*/
function enhanceMap( slots ) {
for (var index in slots) {
//console.log(slots[index])
var teamSlot = slots[index];
if(teamSlot.status == 'empty' || teamSlot.user == null) {
teamSlot['user'] = {
"name" : 'Empty'
}
}
// Add the name and type of building for this team
var mapSlot = mapSlots[index - 1];
teamSlot['location'] = {
"name" : mapSlot.name,
"type" : mapSlot.type
}
// Add the total amount of team power
var power = 0;
for (var teamMember in teamSlot.team[0]) {
power += teamSlot.team[0][teamMember].power;
}
teamSlot['power'] = power;
}
}
/*
* Compares team power (used to order teams by power)
*/
function compare(a, b) {
var genreA = a.power;
var genreB = b.power;
var comparison = 0;
if (genreA > genreB) {
comparison = -1;
} else if (genreA < genreB) {
comparison = 1;
}
return comparison;
}
/*
* Order teams by power level
*/
function orderByPower(teamSlots) {
var teamArray = [];
for(var key in teamSlots) {
teamArray.push(teamSlots[key])
}
return teamArray.sort(compare);
}
/*
* Determines which player team has more power: titan or hero.
* Adds a CSS class to each of the better .ally-hero teams
*/
function determineBestTeam(guild) {
$.each($('body').find('.js-'+ guild +'-hero'), function () {
var $t = $(this);
var id = $t.attr('data-id');
var heroPower = parseInt( $t.attr('data-power') );
var $titanTeam = $('.js-'+ guild +'-titan[data-id="'+ id +'"]');
var titanPower = parseInt( $titanTeam.attr('data-power') );
var className = 'best-team';
if (heroPower > titanPower) {
$t.addClass(className);
$titanTeam.removeClass(className);
} else {
$titanTeam.addClass(className);
$t.removeClass(className);
}
});
}
/*
* Sync checkboxes between hero/titan teams of the same player
*/
function syncCheckboxes() {
$('input[type="checkbox"]').on('change', function() {
var $t = $(this),
checkName = $t.attr('name'),
playerID = $t.parent().attr('data-id');
$('[data-id="'+ playerID +'"]')
.find('input[name="'+ checkName +'"]')
.prop('checked', $t.is(':checked'));
});
}
/*
* Visual aid to help find the corresponding hero/titan team
* when the other one is hovered
*/
function highlightHovered() {
$('.team').on({
'mouseenter': function () {
var $t = $(this),
id = $t.attr('data-id');
$('.team[data-id="'+ id +'"]').addClass('is--hover');
},
'mouseleave': function () {
var $t = $(this),
id = $t.attr('data-id');
$('.team[data-id="'+ id +'"]').removeClass('is--hover');
}
})
}
function getTotalPower(guild) {
var heroPower = 0;
var titanPower = 0;
var totalPower = 0;
var data = guild; //this.map.ourSlots;
for (var i in data) {
var member = data[i];
if( member.location.type == "Hero" ) {
heroPower += member.power;
} else {
titanPower += member.power;
}
totalPower += member.power;
}
return {
"heroPower" : heroPower,
"titanPower" : titanPower,
"totalPower": totalPower
};
}
File diff suppressed because one or more lines are too long
+1264 -1
View File
File diff suppressed because one or more lines are too long
+106 -568
View File
@@ -473,6 +473,16 @@
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true
},
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"dev": true,
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"bl": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
@@ -1573,6 +1583,15 @@
"through2-filter": "^2.0.0",
"vali-date": "^1.0.0",
"vinyl": "^1.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true,
"optional": true
}
}
}
}
@@ -2279,6 +2298,15 @@
"through2-filter": "^2.0.0",
"vali-date": "^1.0.0",
"vinyl": "^1.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true,
"optional": true
}
}
}
}
@@ -2895,6 +2923,13 @@
"integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
"dev": true
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true,
"optional": true
},
"filename-regex": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
@@ -3125,6 +3160,14 @@
"graceful-fs": "^4.1.2",
"jsonfile": "^3.0.0",
"universalify": "^0.1.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"fs.realpath": {
@@ -3134,551 +3177,14 @@
"dev": true
},
"fsevents": {
"version": "1.2.9",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
"integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
"optional": true,
"requires": {
"nan": "^2.12.1",
"node-pre-gyp": "^0.12.0"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"chownr": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"debug": {
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ms": "^2.1.1"
}
},
"deep-extend": {
"version": "0.6.0",
"bundled": true,
"dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
"version": "7.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"has-unicode": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.24",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimatch": "^3.0.4"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.2.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"needle": {
"version": "2.3.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"debug": "^4.1.0",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
"version": "0.12.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
"needle": "^2.2.1",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
}
},
"nopt": {
"version": "4.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.4.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"rimraf": {
"version": "2.6.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
"dev": true,
"optional": true
},
"semver": {
"version": "5.7.0",
"bundled": true,
"dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.4",
"minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"optional": true
}
"bindings": "^1.5.0",
"nan": "^2.12.1"
}
},
"function-bind": {
@@ -3965,13 +3471,20 @@
"graceful-fs": "~1.2.0",
"inherits": "1",
"minimatch": "~0.2.11"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"graceful-fs": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
"integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
"dev": true
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"inherits": {
"version": "1.0.2",
@@ -4042,12 +3555,6 @@
}
}
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"graceful-readlink": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
@@ -4808,6 +4315,13 @@
"vinyl": "^1.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true,
"optional": true
},
"vinyl": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
@@ -5698,6 +5212,15 @@
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true,
"optional": true
}
}
},
"kind-of": {
@@ -5765,6 +5288,14 @@
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
"strip-bom": "^2.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"localtunnel": {
@@ -6245,9 +5776,9 @@
}
},
"nan": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
"integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
"dev": true,
"optional": true
},
@@ -6270,12 +5801,6 @@
"to-regex": "^3.0.1"
}
},
"natives": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
"integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==",
"dev": true
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@@ -6798,6 +6323,14 @@
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"pend": {
@@ -7096,6 +6629,14 @@
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
"readable-stream": "^2.0.2"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
}
},
"rechoir": {
@@ -8821,13 +8362,10 @@
"dev": true
},
"graceful-fs": {
"version": "3.0.12",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
"integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
"dev": true,
"requires": {
"natives": "^1.1.3"
}
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"isarray": {
"version": "0.0.1",
+5 -1
View File
@@ -10,7 +10,11 @@
"build": "gulp build",
"clean": "gulp clean",
"bundler": "gulp bundler",
"start": "gulp"
"start": "gulp",
"preinstall": "npx npm-force-resolutions"
},
"resolutions": {
"graceful-fs": "4.2.3"
},
"dependencies": {},
"devDependencies": {