1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-17 06:52:27 +01:00

eslint problems autofixes

This commit is contained in:
Sylvain 2018-11-21 10:59:07 +01:00
parent d250dfa1d3
commit 8cd533b5a6
32 changed files with 1213 additions and 830 deletions

1
.gitignore vendored
View File

@ -48,3 +48,4 @@
# Ignore node.js dev dependencies
/node_modules
npm-debug.log

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
10.13.0

View File

@ -71,7 +71,7 @@ class AuthenticationController {
/**
* Changes the admin's view to the members list page
*/
$scope.cancel = function() { $state.go('app.admin.members') }
$scope.cancel = function () { $state.go('app.admin.members') }
/**
* Open a modal allowing to specify the data mapping for the given field
@ -141,7 +141,7 @@ class AuthenticationController {
}
] })
.result['finally'](null).then(function (transfo_rules) { mapping.transformation = transfo_rules })
}
}
}
}
@ -200,7 +200,7 @@ Application.Controllers.controller('AuthentificationController', ['$scope', '$st
}
}
},
function() {
function () {
// the admin has confirmed, delete
AuthProvider.delete(
{ id: provider.id },
@ -286,7 +286,7 @@ Application.Controllers.controller('NewAuthenticationController', ['$scope', '$s
}
},
function () { // unsecured http confirmed
AuthProvider.save({auth_provider: $scope.provider}, function (provider) {
AuthProvider.save({ auth_provider: $scope.provider }, function (provider) {
growl.success(_t('unsecured_oauth2_provider_successfully_added'))
return $state.go('app.admin.members')
})
@ -332,7 +332,7 @@ Application.Controllers.controller('EditAuthenticationController', ['$scope', '$
growl.success(_t('provider_successfully_updated'))
$state.go('app.admin.members')
},
function() { growl.error(_t('an_error_occurred_unable_to_update_the_provider')) }
function () { growl.error(_t('an_error_occurred_unable_to_update_the_provider')) }
)
}

View File

@ -73,7 +73,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
* Open a confirmation modal to cancel the booking of a user for the currently selected event.
* @param slot {Object} reservation slot of a user, inherited from $resource
*/
$scope.cancelBooking = function(slot) {
$scope.cancelBooking = function (slot) {
// open a confirmation dialog
dialogs.confirm(
{
@ -88,7 +88,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
}
}
},
function() {
function () {
// the admin has confirmed, cancel the subscription
Slot.cancel(
{ id: slot.slot_id },
@ -152,7 +152,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
// notify the admin
return growl.success(_t('admin_calendar.the_machine_was_successfully_removed_from_the_slot'))
}
, function(data, status) { // failed
, function (data, status) { // failed
growl.error(_t('admin_calendar.deletion_failed'))
}
)
@ -164,7 +164,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
* Callback to alert the admin that the export request was acknowledged and is
* processing right now.
*/
$scope.alertExport = function(type) {
$scope.alertExport = function (type) {
Export.status({ category: 'availabilities', type }).then(function (res) {
if (!res.data.exists) {
return growl.success(_t('admin_calendar.export_is_running_you_ll_be_notified_when_its_ready'))
@ -201,7 +201,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
}
}
},
function() {
function () {
// the admin has confirmed, lock/unlock the slot
Availability.lock(
{ id: $scope.availability.id },
@ -226,7 +226,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
/**
* Confirm and destroy the slot in $scope.availability
*/
$scope.removeSlot = function() {
$scope.removeSlot = function () {
// open a confirmation dialog
dialogs.confirm(
{
@ -239,7 +239,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
}
}
},
function() {
function () {
// the admin has confirmed, delete the slot
Availability.delete(
{ id: $scope.availability.id },
@ -271,7 +271,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
// Triggered when the admin drag on the agenda to create a new reservable slot.
// @see http://fullcalendar.io/docs/selection/select_callback/
//
//
var calendarSelectCb = function (start, end, jsEvent, view) {
start = moment.tz(start.toISOString(), Fablab.timezone)
end = moment.tz(end.toISOString(), Fablab.timezone)
@ -310,7 +310,7 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
true
)
},
function() { uiCalendarConfig.calendars.calendar.fullCalendar('unselect') }
function () { uiCalendarConfig.calendars.calendar.fullCalendar('unselect') }
)
}
}
@ -377,7 +377,7 @@ Application.Controllers.controller('CreateEventModalController', ['$scope', '$ui
$scope.end = end
// machines list
$scope.machines = machinesPromise.filter(function(m) { return !m.disabled })
$scope.machines = machinesPromise.filter(function (m) { return !m.disabled })
// trainings list
$scope.trainings = trainingsPromise.filter(function (t) { return !t.disabled })

View File

@ -58,8 +58,8 @@ class EventsController {
$scope.submited = function (content) {
if ((content.id == null)) {
$scope.alerts = []
angular.forEach(content, function(v, k) {
angular.forEach(v, function(err) { $scope.alerts.push({ msg: k + ': ' + err, type: 'danger' }) })
angular.forEach(content, function (v, k) {
angular.forEach(v, function (err) { $scope.alerts.push({ msg: k + ': ' + err, type: 'danger' }) })
})
} else {
$state.go('app.public.events_list')
@ -69,7 +69,7 @@ class EventsController {
/**
* Changes the user's view to the events list page
*/
$scope.cancel = function() { $state.go('app.public.events_list') }
$scope.cancel = function () { $state.go('app.public.events_list') }
/**
* For use with 'ng-class', returns the CSS class name for the uploads previews.
@ -87,7 +87,7 @@ class EventsController {
/**
* This will create a single new empty entry into the event's attachements list.
*/
$scope.addFile = function() { $scope.event.event_files_attributes.push({}) }
$scope.addFile = function () { $scope.event.event_files_attributes.push({}) }
/**
* This will remove the given file from the event's attachements list. If the file was previously uploaded
@ -134,7 +134,7 @@ class EventsController {
/**
* Initialize a new price item in the additional prices list
*/
$scope.addPrice = function() {
$scope.addPrice = function () {
$scope.event.prices.push({
category: null,
amount: null
@ -217,7 +217,7 @@ Application.Controllers.controller('AdminEventsController', ['$scope', '$state',
if (id != null) {
return getModel(model)[0].update({ id }, data)
} else {
return getModel(model)[0].save(data, function(resp) { getModel(model)[1][getModel(model)[1].length - 1].id = resp.id })
return getModel(model)[0].save(data, function (resp) { getModel(model)[1][getModel(model)[1].length - 1].id = resp.id })
}
}
@ -246,8 +246,8 @@ Application.Controllers.controller('AdminEventsController', ['$scope', '$state',
}
}
, function () { // delete confirmed
getModel(model)[0].delete(getModel(model)[1][index], null, function() { getModel(model)[1].splice(index, 1) }
, function() { growl.error(_t('unable_to_delete_an_error_occured')) })
getModel(model)[0].delete(getModel(model)[1][index], null, function () { getModel(model)[1].splice(index, 1) }
, function () { growl.error(_t('unable_to_delete_an_error_occured')) })
})
}
@ -281,23 +281,23 @@ Application.Controllers.controller('AdminEventsController', ['$scope', '$state',
* Open a modal dialog allowing the definition of a new price category.
* Save it once filled and handle the result.
*/
$scope.newPriceCategory = function() {
$scope.newPriceCategory = function () {
$uibModal.open({
templateUrl: '<%= asset_path "admin/events/price_form.html" %>',
size: 'md',
resolve: {
category () { return {} }
},
controller: 'PriceCategoryController' }).result['finally'](null).then(function(p_cat) {
// save the price category to the API
PriceCategory.save(p_cat, function (cat) {
$scope.priceCategories.push(cat)
return growl.success(_t('price_category_successfully_created'))
}
, function (err) {
growl.error(_t('unable_to_add_the_price_category_check_name_already_used'))
return console.error(err)
})
controller: 'PriceCategoryController' }).result['finally'](null).then(function (p_cat) {
// save the price category to the API
PriceCategory.save(p_cat, function (cat) {
$scope.priceCategories.push(cat)
return growl.success(_t('price_category_successfully_created'))
}
, function (err) {
growl.error(_t('unable_to_add_the_price_category_check_name_already_used'))
return console.error(err)
})
})
}
/**
@ -316,16 +316,16 @@ Application.Controllers.controller('AdminEventsController', ['$scope', '$state',
resolve: {
category () { return $scope.priceCategories[index] }
},
controller: 'PriceCategoryController' }).result['finally'](null).then(function(p_cat) {
// update the price category to the API
PriceCategory.update({id}, {price_category: p_cat}, function (cat) {
$scope.priceCategories[index] = cat
return growl.success(_t('price_category_successfully_updated'))
}
, function (err) {
growl.error(_t('unable_to_update_the_price_category'))
return console.error(err)
})
controller: 'PriceCategoryController' }).result['finally'](null).then(function (p_cat) {
// update the price category to the API
PriceCategory.update({ id }, { price_category: p_cat }, function (cat) {
$scope.priceCategories[index] = cat
return growl.success(_t('price_category_successfully_updated'))
}
, function (err) {
growl.error(_t('unable_to_update_the_price_category'))
return console.error(err)
})
})
}
}
@ -352,14 +352,14 @@ Application.Controllers.controller('AdminEventsController', ['$scope', '$state',
}
}
},
function() { // delete confirmed
function () { // delete confirmed
PriceCategory.remove(
{id},
{ id },
function () { // successfully deleted
growl.success(_t('price_category_successfully_deleted'))
$scope.priceCategories.splice(index, 1)
},
function() { growl.error(_t('price_category_deletion_failed')) }
function () { growl.error(_t('price_category_deletion_failed')) }
)
}
)
@ -383,7 +383,7 @@ Application.Controllers.controller('AdminEventsController', ['$scope', '$state',
/**
* Kind of constructor: these actions will be realized first when the controller is loaded
*/
const initialize = function() { paginationCheck(eventsPromise, $scope.events) }
const initialize = function () { paginationCheck(eventsPromise, $scope.events) }
/**
* Check if all events are already displayed OR if the button 'load more events'

View File

@ -185,8 +185,8 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
},
controller ($scope, $uibModalInstance, model) {
$scope.model = model
$scope.ok = function() { $uibModalInstance.close($scope.model) }
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.ok = function () { $uibModalInstance.close($scope.model) }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
})
@ -222,8 +222,8 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
$scope.codeModel = model
$scope.isSelected = active
$scope.ok = function() { $uibModalInstance.close({ model: $scope.codeModel, active: $scope.isSelected }) }
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.ok = function () { $uibModalInstance.close({ model: $scope.codeModel, active: $scope.isSelected }) }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
})
@ -269,8 +269,8 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
},
controller ($scope, $uibModalInstance, model) {
$scope.model = model
$scope.ok = function() { $uibModalInstance.close($scope.model) }
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.ok = function () { $uibModalInstance.close($scope.model) }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
})
@ -465,7 +465,7 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
* to $scope.invoices
* @param concat {boolean} if true, the result will be append to $scope.invoices instead of being affected
*/
var invoiceSearch = function(concat) {
var invoiceSearch = function (concat) {
Invoice.list({
query: {
number: $scope.searchInvoice.reference,
@ -561,8 +561,8 @@ Application.Controllers.controller('AvoirModalController', ['$scope', '$uibModal
} else {
return Invoice.save(
{ avoir: $scope.avoir },
function(avoir) { // success
$uibModalInstance.close({avoir, invoice: $scope.invoice})
function (avoir) { // success
$uibModalInstance.close({ avoir, invoice: $scope.invoice })
},
function (err) { // failed
growl.error(_t('unable_to_create_the_refund'))

View File

@ -38,7 +38,7 @@
class MembersController {
constructor ($scope, $state, Group, Training) {
// Retrieve the profiles groups (eg. students ...)
Group.query(function(groups) { $scope.groups = groups.filter(function(g) { return (g.slug !== 'admins') && !g.disabled }) })
Group.query(function (groups) { $scope.groups = groups.filter(function (g) { return (g.slug !== 'admins') && !g.disabled }) })
// Retrieve the list of available trainings
Training.query().$promise.then(function (data) {
@ -106,7 +106,7 @@ class MembersController {
/**
* Changes the admin's view to the members list page
*/
$scope.cancel = function() { $state.go('app.admin.members') }
$scope.cancel = function () { $state.go('app.admin.members') }
/**
* For use with 'ng-class', returns the CSS class name for the uploads previews.
@ -259,7 +259,7 @@ Application.Controllers.controller('AdminMembersController', ['$scope', '$sce',
* @returns {Number} index of the requested admin, in the provided array
*/
var findAdminIdxById = function (admins, id) {
return (admins.map(function(admin) { return admin.id })).indexOf(id)
return (admins.map(function (admin) { return admin.id })).indexOf(id)
}
/**
@ -331,7 +331,7 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
} else {
Plan.query({ group_id: $scope.user.group_id }, function (plans) {
$scope.plans = plans
return Array.from($scope.plans).map( function(plan) {
return Array.from($scope.plans).map(function (plan) {
return (plan.nameToDisplay = $filter('humanReadablePlanName')(plan))
})
})
@ -399,7 +399,7 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
}]
})
// once the form was validated successfully ...
return modalInstance.result.then(function(subscription) { $scope.subscription.expired_at = subscription.expired_at })
return modalInstance.result.then(function (subscription) { $scope.subscription.expired_at = subscription.expired_at })
}
/**
@ -427,7 +427,7 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
* will be included.
* @returns {String}
*/
$scope.humanReadablePlanName = function(plan, groups, short) { return `${$filter('humanReadablePlanName')(plan, groups, short)}` }
$scope.humanReadablePlanName = function (plan, groups, short) { return `${$filter('humanReadablePlanName')(plan, groups, short)}` }
/**
* Modal dialog validation callback
@ -441,18 +441,18 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
}
, function (error) {
growl.error(_t('a_problem_occurred_while_taking_the_subscription'))
console.error(error);
console.error(error)
})
}
/**
* Modal dialog cancellation callback
*/
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}]
})
// once the form was validated succesfully ...
return modalInstance.result.then(function(subscription) { $scope.subscription = subscription })
return modalInstance.result.then(function (subscription) { $scope.subscription = subscription })
}
$scope.createWalletCreditModal = function (user, wallet) {
@ -490,7 +490,7 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
/**
* Modal dialog validation callback
*/
$scope.ok = function() {
$scope.ok = function () {
Wallet.credit(
{ id: wallet.id },
{
@ -503,8 +503,8 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
growl.success(_t('wallet_credit_successfully'))
return $uibModalInstance.close(_wallet)
},
function(error) {
growl.error(_t('a_problem_occurred_for_wallet_credit'));
function (error) {
growl.error(_t('a_problem_occurred_for_wallet_credit'))
console.error(error)
}
)
@ -513,7 +513,7 @@ Application.Controllers.controller('EditMemberController', ['$scope', '$state',
/**
* Modal dialog cancellation callback
*/
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
] })
// once the form was validated succesfully ...
@ -625,17 +625,17 @@ Application.Controllers.controller('NewAdminController', ['$state', '$scope', 'A
* Shows the birth day datepicker
* @param $event {Object} jQuery event object
*/
$scope.openDatePicker = function($event) { $scope.datePicker.opened = true }
$scope.openDatePicker = function ($event) { $scope.datePicker.opened = true }
/**
* Send the new admin, currently stored in $scope.admin, to the server for database saving
*/
$scope.saveAdmin = function() {
$scope.saveAdmin = function () {
Admin.save(
{},
{ admin: $scope.admin },
function () {
growl.success(_t('administrator_successfully_created_he_will_receive_his_connection_directives_by_email', {GENDER: getGender($scope.admin)}, 'messageformat'))
growl.success(_t('administrator_successfully_created_he_will_receive_his_connection_directives_by_email', { GENDER: getGender($scope.admin) }, 'messageformat'))
return $state.go('app.admin.members')
}
, function (error) {

View File

@ -24,7 +24,7 @@ Application.Controllers.controller('OpenAPIClientsController', ['$scope', 'clien
// Change the order criterion to the one provided
// @param orderBy {string} ordering criterion
//
//
$scope.setOrder = function (orderBy) {
if ($scope.order === orderBy) {
return $scope.order = `-${orderBy}`

View File

@ -26,7 +26,7 @@ class PlanController {
CSRF.setMetaTags()
// groups list
$scope.groups = groups.filter(function(g) { return (g.slug !== 'admins') && !g.disabled })
$scope.groups = groups.filter(function (g) { return (g.slug !== 'admins') && !g.disabled })
// users with role 'partner', notifiables for a partner plan
$scope.partners = partners.users
@ -64,7 +64,6 @@ class PlanController {
*/
Application.Controllers.controller('NewPlanController', ['$scope', '$uibModal', 'groups', 'prices', 'partners', 'CSRF', '$state', 'growl', '_t',
function ($scope, $uibModal, groups, prices, partners, CSRF, $state, growl, _t) {
/* PUBLIC SCOPE */
// current form is used to create a new plan
@ -99,7 +98,7 @@ Application.Controllers.controller('NewPlanController', ['$scope', '$uibModal',
* Checks if the partner contact is a valid data. Used in the form validation process
* @returns {boolean}
*/
$scope.partnerIsValid = function() { return ($scope.plan.type === 'Plan') || ($scope.plan.partnerId || ($scope.plan.partnerContact && $scope.plan.partnerContact.email)) }
$scope.partnerIsValid = function () { return ($scope.plan.type === 'Plan') || ($scope.plan.partnerId || ($scope.plan.partnerContact && $scope.plan.partnerContact.email)) }
/**
* Open a modal dialog allowing the admin to create a new partner user
@ -112,7 +111,7 @@ Application.Controllers.controller('NewPlanController', ['$scope', '$uibModal',
controller: ['$scope', '$uibModalInstance', 'User', function ($scope, $uibModalInstance, User) {
$scope.partner = {}
$scope.ok = function() {
$scope.ok = function () {
User.save(
{},
{ user: $scope.partner },
@ -123,11 +122,11 @@ Application.Controllers.controller('NewPlanController', ['$scope', '$uibModal',
},
function (error) {
growl.error(_t('new_plan.unable_to_save_this_user_check_that_there_isnt_an_already_a_user_with_the_same_name'))
console.error(error);
console.error(error)
}
)
}
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}]
})
// once the form was validated successfully ...
@ -214,8 +213,9 @@ Application.Controllers.controller('EditPlanController', ['$scope', 'groups', 'p
}
}
return result
})()})
}
})()
})
}
)
// if no plan were selected, unset every prices
@ -280,7 +280,6 @@ Application.Controllers.controller('EditPlanController', ['$scope', 'groups', 'p
}
}
// Using the PlansController
return new PlanController($scope, groups, prices, partners, CSRF)
}

View File

@ -33,7 +33,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
// List of groups (eg. normal, student ...)
$scope.groups = groups.filter(function (g) { return g.slug !== 'admins' })
$scope.enabledGroups = groups.filter(function(g) { return (g.slug !== 'admins') && !g.disabled })
$scope.enabledGroups = groups.filter(function (g) { return (g.slug !== 'admins') && !g.disabled })
// Associate free machine hours with subscriptions
$scope.machineCredits = machineCreditsPromise
@ -154,8 +154,8 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
{ id: planId },
{ training_credit_nb: newdata.training_credits }
, angular.noop() // do nothing in case of success
, function(error) {
growl.error(_t('pricing.an_error_occurred_while_saving_the_number_of_credits'));
, function (error) {
growl.error(_t('pricing.an_error_occurred_while_saving_the_number_of_credits'))
console.error(error)
}
)
@ -175,7 +175,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
return $scope.trainingCreditsGroups[planId].splice($scope.trainingCreditsGroups[planId].indexOf(tc.id), 1)
}
, function (error) {
growl.error(_t('pricing.an_error_occurred_while_deleting_credit_with_the_TRAINING', { TRAINING: tc.creditable.name }));
growl.error(_t('pricing.an_error_occurred_while_deleting_credit_with_the_TRAINING', { TRAINING: tc.creditable.name }))
console.error(error)
})
} else {
@ -214,7 +214,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
* Cancel the current training credit modification
* @param rowform {Object} see http://vitalets.github.io/angular-xeditable/
*/
$scope.cancelTrainingCredit = function(rowform) { rowform.$cancel() }
$scope.cancelTrainingCredit = function (rowform) { rowform.$cancel() }
/**
* Create a new empty entry in the $scope.machineCredits array
@ -289,7 +289,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
}
if (id != null) {
return Credit.update({ id }, { credit: data }, function() { growl.success(_t('pricing.changes_have_been_successfully_saved')) })
return Credit.update({ id }, { credit: data }, function () { growl.success(_t('pricing.changes_have_been_successfully_saved')) })
} else {
data.creditable_type = 'Machine'
return Credit.save(
@ -299,9 +299,9 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
return growl.success(_t('pricing.credit_was_successfully_saved'))
}
, function (err) {
$scope.machineCredits.pop();
growl.error(_t('pricing.error_creating_credit'));
console.error(err);
$scope.machineCredits.pop()
growl.error(_t('pricing.error_creating_credit'))
console.error(err)
})
}
}
@ -359,7 +359,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
}
if (id != null) {
return Credit.update({ id }, { credit: data }, function() { growl.success(_t('pricing.changes_have_been_successfully_saved')) })
return Credit.update({ id }, { credit: data }, function () { growl.success(_t('pricing.changes_have_been_successfully_saved')) })
} else {
data.creditable_type = 'Space'
return Credit.save(
@ -488,7 +488,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
* will be included.
* @returns {String}
*/
$scope.humanReadablePlanName = function(plan, groups, short) { return `${$filter('humanReadablePlanName')(plan, groups, short)}` }
$scope.humanReadablePlanName = function (plan, groups, short) { return `${$filter('humanReadablePlanName')(plan, groups, short)}` }
/**
* Delete a coupon from the server's database and, in case of success, from the list in memory
@ -510,7 +510,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
}
}
}
, function() {
, function () {
// the admin has confirmed, delete the coupon
Coupon.delete({ id }, function (res) {
growl.success(_t('coupon_was_successfully_deleted'))
@ -533,7 +533,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
* Open a modal allowing to select an user and send him the details of the provided coupon
* @param coupon {Object} The coupon to send
*/
$scope.sendCouponToUser = function(coupon) {
$scope.sendCouponToUser = function (coupon) {
$uibModal.open({
templateUrl: '<%= asset_path "admin/pricing/sendCoupon.html" %>',
resolve: {
@ -549,18 +549,18 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
$scope.coupon = coupon
// Callback to validate sending of the coupon
$scope.ok = function() {
$scope.ok = function () {
Coupon.send({ coupon_code: coupon.code, user_id: $scope.ctrl.member.id }, function (res) {
growl.success(_t('pricing.coupon_successfully_sent_to_USER', { USER: $scope.ctrl.member.name }))
return $uibModalInstance.close({ user_id: $scope.ctrl.member.id })
}
, function(err) {
, function (err) {
growl.error(_t('pricing.an_error_occurred_unable_to_send_the_coupon'))
console.error(err)
})
}
// Callback to close the modal and cancel the sending process
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}]
})
}
@ -574,7 +574,7 @@ Application.Controllers.controller('EditPricingController', ['$scope', '$state',
$scope.trainingCreditsGroups = groupCreditsByPlan($scope.trainingCredits)
// adds empty array for plan which hasn't any credits yet
return (function() {
return (function () {
const result = []
for (let plan of Array.from($scope.plans)) {
if ($scope.trainingCreditsGroups[plan.id] == null) {

View File

@ -556,7 +556,6 @@ Application.Controllers.controller('StatisticsController', ['$scope', '$state',
* properties and on index-specific properties (additional_fields)
*/
var buildCustomFiltersList = function () {
$scope.filters = [
{ key: 'date', label: _t('date'), values: ['input_date'] },
{ key: 'userId', label: _t('user_id'), values: ['input_number'] },
@ -720,6 +719,6 @@ Application.Controllers.controller('ExportStatisticsController', [ '$scope', '$u
/**
* Callback to cancel the export and close the modal
*/
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
])

View File

@ -40,7 +40,7 @@ class TrainingsController {
$scope.submited = function (content) {
if ((content.id == null)) {
$scope.alerts = []
return angular.forEach(content, function(v, k) {
return angular.forEach(content, function (v, k) {
angular.forEach(v, function (err) {
$scope.alerts.push({
msg: k + ': ' + err,
@ -56,12 +56,12 @@ class TrainingsController {
/**
* Changes the current user's view, redirecting him to the machines list
*/
$scope.cancel = function() { $state.go('app.admin.trainings') }
$scope.cancel = function () { $state.go('app.admin.trainings') }
/**
* Force the 'public_page' attribute to false when the current training is disabled
*/
$scope.onDisableToggled = function() { $scope.training.public_page = !$scope.training.disabled }
$scope.onDisableToggled = function () { $scope.training.public_page = !$scope.training.disabled }
/**
* For use with 'ng-class', returns the CSS class name for the uploads previews.
@ -219,7 +219,7 @@ Application.Controllers.controller('TrainingsAdminController', ['$scope', '$stat
* @param training {Object} Training object, inherited from $resource
* @param availability {Object} time slot when the training occurs
*/
$scope.showReservations = function(training, availability) {
$scope.showReservations = function (training, availability) {
$uibModal.open({
templateUrl: '<%= asset_path "admin/trainings/validTrainingModal.html" %>',
controller: ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {
@ -251,7 +251,7 @@ Application.Controllers.controller('TrainingsAdminController', ['$scope', '$stat
}
}
, function () { // success
angular.forEach($scope.usersToValid, function(u) { u.is_valid = true })
angular.forEach($scope.usersToValid, function (u) { u.is_valid = true })
$scope.usersToValid = []
return $uibModalInstance.close(training)
})
@ -260,10 +260,10 @@ Application.Controllers.controller('TrainingsAdminController', ['$scope', '$stat
/**
* Cancel the modifications and close the modal window
*/
return $scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
return $scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
] })
}
}
/**
* Delete the provided training and, in case of success, remove it from the trainings list afterwards
@ -282,13 +282,13 @@ Application.Controllers.controller('TrainingsAdminController', ['$scope', '$stat
}
}
},
function() { // deletion confirmed
function () { // deletion confirmed
training.$delete(function () {
$scope.trainings.splice(index, 1);
$scope.trainings.splice(index, 1)
growl.info(_t('training_successfully_deleted'))
},
function (error) {
growl.warning(_t('unable_to_delete_the_training_because_some_users_alredy_booked_it'));
growl.warning(_t('unable_to_delete_the_training_because_some_users_alredy_booked_it'))
console.error(error)
})
}

View File

@ -14,49 +14,49 @@ Application.Controllers.controller('HomeController', ['$scope', '$stateParams',
function ($scope, $stateParams, Twitter, lastMembersPromise, lastProjectsPromise, upcomingEventsPromise, homeBlogpostPromise, twitterNamePromise) {
/* PUBLIC SCOPE */
// The last registered members who confirmed their addresses
$scope.lastMembers = lastMembersPromise
// The last registered members who confirmed their addresses
$scope.lastMembers = lastMembersPromise
// The last tweets from the Fablab official twitter account
$scope.lastTweets = []
// The last tweets from the Fablab official twitter account
$scope.lastTweets = []
// The last projects published/documented on the plateform
$scope.lastProjects = lastProjectsPromise
// The last projects published/documented on the plateform
$scope.lastProjects = lastProjectsPromise
// The closest upcoming events
$scope.upcomingEvents = upcomingEventsPromise
// The closest upcoming events
$scope.upcomingEvents = upcomingEventsPromise
// The admin blogpost
$scope.homeBlogpost = homeBlogpostPromise.setting.value
// The admin blogpost
$scope.homeBlogpost = homeBlogpostPromise.setting.value
// Twitter username
$scope.twitterName = twitterNamePromise.setting.value
// Twitter username
$scope.twitterName = twitterNamePromise.setting.value
/**
/**
* Test if the provided event run on a single day or not
* @param event {Object} single event from the $scope.upcomingEvents array
* @returns {boolean} false if the event runs on more that 1 day
*/
$scope.isOneDayEvent = event => moment(event.start_date).isSame(event.end_date, 'day')
$scope.isOneDayEvent = event => moment(event.start_date).isSame(event.end_date, 'day')
/* PRIVATE SCOPE */
/* PRIVATE SCOPE */
/**
/**
* Kind of constructor: these actions will be realized first when the controller is loaded
*/
const initialize = function () {
const initialize = function () {
// we retrieve tweets from here instead of ui-router's promise because, if adblock stop the API request,
// this prevent the whole home page to be blocked
$scope.lastTweets = Twitter.query({ limit: 1 })
$scope.lastTweets = Twitter.query({ limit: 1 })
// if we recieve a token to reset the password as GET parameter, trigger the
// changePassword modal from the parent controller
if ($stateParams.reset_password_token) {
return $scope.$parent.editPassword($stateParams.reset_password_token)
// if we recieve a token to reset the password as GET parameter, trigger the
// changePassword modal from the parent controller
if ($stateParams.reset_password_token) {
return $scope.$parent.editPassword($stateParams.reset_password_token)
}
}
}
// !!! MUST BE CALLED AT THE END of the controller
return initialize()
}
// !!! MUST BE CALLED AT THE END of the controller
return initialize()
}
])

View File

@ -76,7 +76,7 @@ class MachinesController {
/**
* This will create a single new empty entry into the machine attachements list.
*/
$scope.addFile = function () { $scope.machine.machine_files_attributes.push({}) }
$scope.addFile = function () { $scope.machine.machine_files_attributes.push({}) }
/**
* This will remove the given file from the machine attachements list. If the file was previously uploaded
@ -124,14 +124,14 @@ const _reserveMachine = function (machine, e) {
templateUrl: '<%= asset_path "machines/training_reservation_modal.html" %>',
controller: ['$scope', '$uibModalInstance', '$state', function ($scope, $uibModalInstance, $state) {
$scope.machine = machine
return $scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
return $scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
] })
// ... but does not have booked the training, tell him to register for a training session first
// unless all associated trainings are disabled
} else {
// if all trainings are disabled, just redirect the user to the reservation calendar
if (machine.trainings.map(function (t) { return t.disabled }).reduce(function (acc, val) { return acc && val; }, true)) {
if (machine.trainings.map(function (t) { return t.disabled }).reduce(function (acc, val) { return acc && val }, true)) {
return _this.$state.go('app.logged.machines_reserve', { id: machine.slug })
// otherwise open the information modal
} else {
@ -182,35 +182,35 @@ const _reserveMachine = function (machine, e) {
*/
Application.Controllers.controller('MachinesController', ['$scope', '$state', '_t', 'Machine', '$uibModal', 'machinesPromise',
function ($scope, $state, _t, Machine, $uibModal, machinesPromise) {
// Retrieve the list of machines
$scope.machines = machinesPromise
// Retrieve the list of machines
$scope.machines = machinesPromise
/**
/**
* Redirect the user to the machine details page
*/
$scope.showMachine = function (machine) { $state.go('app.public.machines_show', { id: machine.slug }) }
$scope.showMachine = function (machine) { $state.go('app.public.machines_show', { id: machine.slug }) }
/**
/**
* Callback to book a reservation for the current machine
*/
$scope.reserveMachine = _reserveMachine.bind({
$scope,
$state,
_t,
$uibModal,
Machine
})
$scope.reserveMachine = _reserveMachine.bind({
$scope,
$state,
_t,
$uibModal,
Machine
})
// Default: we show only enabled machines
$scope.machineFiltering = 'enabled'
// Default: we show only enabled machines
$scope.machineFiltering = 'enabled'
// Available options for filtering machines by status
return $scope.filterDisabled = [
'enabled',
'disabled',
'all'
]
}
// Available options for filtering machines by status
return $scope.filterDisabled = [
'enabled',
'disabled',
'all'
]
}
])
/**
@ -241,30 +241,30 @@ Application.Controllers.controller('EditMachineController', ['$scope', '$state',
function ($scope, $state, $stateParams, machinePromise, CSRF) {
/* PUBLIC SCOPE */
// API URL where the form will be posted
$scope.actionUrl = `/api/machines/${$stateParams.id}`
// API URL where the form will be posted
$scope.actionUrl = `/api/machines/${$stateParams.id}`
// Form action on the above URL
$scope.method = 'put'
// Form action on the above URL
$scope.method = 'put'
// Retrieve the details for the machine id in the URL, if an error occurs redirect the user to the machines list
$scope.machine = machinePromise
// Retrieve the details for the machine id in the URL, if an error occurs redirect the user to the machines list
$scope.machine = machinePromise
/* PRIVATE SCOPE */
/* PRIVATE SCOPE */
/**
/**
* Kind of constructor: these actions will be realized first when the controller is loaded
*/
const initialize = function () {
CSRF.setMetaTags()
const initialize = function () {
CSRF.setMetaTags()
// Using the MachinesController
return new MachinesController($scope, $state)
// Using the MachinesController
return new MachinesController($scope, $state)
}
// !!! MUST BE CALLED AT THE END of the controller
return initialize()
}
// !!! MUST BE CALLED AT THE END of the controller
return initialize()
}
])
/**
@ -293,13 +293,13 @@ Application.Controllers.controller('ShowMachineController', ['$scope', '$state',
}
}
}
, function () { // deletion confirmed
, function () { // deletion confirmed
// delete the machine then redirect to the machines listing
machine.$delete(
function () { $state.go('app.public.machines_list') },
function (error) { growl.warning(_t('the_machine_cant_be_deleted_because_it_is_already_reserved_by_some_users')); console.error(error); }
function (error) { growl.warning(_t('the_machine_cant_be_deleted_because_it_is_already_reserved_by_some_users')); console.error(error) }
)
});
})
}
}
@ -428,7 +428,7 @@ Application.Controllers.controller('ReserveMachineController', ['$scope', '$stat
/**
* Callback when a slot was successfully cancelled. Reset the slot style as 'ready to book'
*/
$scope.slotCancelled = function () { $scope.markSlotAsRemoved($scope.selectedEvent) }
$scope.slotCancelled = function () { $scope.markSlotAsRemoved($scope.selectedEvent) }
/**
* Change the last selected slot's appearence to looks like 'currently looking for a new destination to exchange'
@ -496,7 +496,7 @@ Application.Controllers.controller('ReserveMachineController', ['$scope', '$stat
$scope.updateMember = function () {
$scope.plansAreShown = false
$scope.selectedPlan = null
Member.get({ id: $scope.ctrl.member.id }, function (member) { $scope.ctrl.member = member; })
Member.get({ id: $scope.ctrl.member.id }, function (member) { $scope.ctrl.member = member })
}
/**
@ -513,7 +513,7 @@ Application.Controllers.controller('ReserveMachineController', ['$scope', '$stat
/**
* Switch the user's view from the reservation agenda to the plan subscription
*/
$scope.showPlans = function () { $scope.plansAreShown = true }
$scope.showPlans = function () { $scope.plansAreShown = true }
/**
* Add the provided plan to the current shopping cart
@ -629,7 +629,7 @@ Application.Controllers.controller('ReserveMachineController', ['$scope', '$stat
/**
* Update the calendar's display to render the new attributes of the events
*/
var updateCalendar = function () { uiCalendarConfig.calendars.calendar.fullCalendar('rerenderEvents') }
var updateCalendar = function () { uiCalendarConfig.calendars.calendar.fullCalendar('rerenderEvents') }
/**
* Asynchronously fetch the events from the API and refresh the calendar's view with these new events

View File

@ -17,7 +17,7 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
/* PUBLIC SCOPE */
// list of groups
$scope.groups = groupsPromise.filter(function (g) { return (g.slug !== 'admins') & !g.disabled; } )
$scope.groups = groupsPromise.filter(function (g) { return (g.slug !== 'admins') & !g.disabled })
// default : do not show the group changing form
// group ID of the current/selected user
@ -123,24 +123,24 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
*/
$scope.selectGroup = function () {
Member.update({ id: $scope.ctrl.member.id }, { user: { group_id: $scope.group.id } }, function (user) {
$scope.ctrl.member = user
$scope.group.change = false
if ($scope.currentUser.role !== 'admin') {
$rootScope.currentUser = user
Auth._currentUser.group_id = user.group_id
growl.success(_t('your_group_was_successfully_changed'))
} else {
growl.success(_t('the_user_s_group_was_successfully_changed'))
}
$scope.ctrl.member = user
$scope.group.change = false
if ($scope.currentUser.role !== 'admin') {
$rootScope.currentUser = user
Auth._currentUser.group_id = user.group_id
growl.success(_t('your_group_was_successfully_changed'))
} else {
growl.success(_t('the_user_s_group_was_successfully_changed'))
}
, function (err) {
if ($scope.currentUser.role !== 'admin') {
growl.error(_t('an_error_prevented_your_group_from_being_changed'))
} else {
growl.error(_t('an_error_prevented_to_change_the_user_s_group'))
}
console.error(err)
})
}
, function (err) {
if ($scope.currentUser.role !== 'admin') {
growl.error(_t('an_error_prevented_your_group_from_being_changed'))
} else {
growl.error(_t('an_error_prevented_to_change_the_user_s_group'))
}
console.error(err)
})
}
/**
@ -160,7 +160,7 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
* @return {boolean}
*/
$scope.isInFuture = function (dateTime) {
return (moment().diff(moment(dateTime)) < 0);
return (moment().diff(moment(dateTime)) < 0)
}
/**
@ -182,7 +182,7 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
}
}
$scope.$on('devise:new-session', function (event, user) { $scope.ctrl.member = user; });
$scope.$on('devise:new-session', function (event, user) { $scope.ctrl.member = user })
// watch when a coupon is applied to re-compute the total price
return $scope.$watch('coupon.applied', function (newValue, oldValue) {
@ -246,7 +246,7 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
$scope.numberFilter = $filter('number')
// retrieve the CGV
CustomAsset.get({ name: 'cgv-file' }, function (cgv) { $scope.cgv = cgv.custom_asset; });
CustomAsset.get({ name: 'cgv-file' }, function (cgv) { $scope.cgv = cgv.custom_asset })
/**
* Callback for click on the 'proceed' button.
@ -259,21 +259,21 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
} else {
$scope.attempting = true
Subscription.save({
coupon_code: ((coupon ? coupon.code : undefined)),
subscription: {
plan_id: selectedPlan.id,
user_id: member.id,
card_token: response.id
}
}
, function (data) { // success
$uibModalInstance.close(data)
}
, function (data, status) { // failed
$scope.alerts = []
$scope.alerts.push({ msg: _t('an_error_occured_during_the_payment_process_please_try_again_later'), type: 'danger' })
$scope.attempting = false
coupon_code: ((coupon ? coupon.code : undefined)),
subscription: {
plan_id: selectedPlan.id,
user_id: member.id,
card_token: response.id
}
}
, function (data) { // success
$uibModalInstance.close(data)
}
, function (data, status) { // failed
$scope.alerts = []
$scope.alerts.push({ msg: _t('an_error_occured_during_the_payment_process_please_try_again_later'), type: 'danger' })
$scope.attempting = false
}
)
}
}
@ -342,20 +342,20 @@ Application.Controllers.controller('PlansIndexController', ['$scope', '$rootScop
$scope.ok = function () {
$scope.attempting = true
Subscription.save({
coupon_code: ((coupon ? coupon.code : undefined)),
subscription: {
plan_id: selectedPlan.id,
user_id: member.id
}
coupon_code: ((coupon ? coupon.code : undefined)),
subscription: {
plan_id: selectedPlan.id,
user_id: member.id
}
, function (data) { // success
$uibModalInstance.close(data)
}
, function (data, status) { // failed
}
, function (data) { // success
$uibModalInstance.close(data)
}
, function (data, status) { // failed
$scope.alerts = []
$scope.alerts.push({ msg: _t('an_error_occured_during_the_payment_process_please_try_again_later'), type: 'danger' })
$scope.attempting = false
}
$scope.alerts.push({ msg: _t('an_error_occured_during_the_payment_process_please_try_again_later'), type: 'danger' })
$scope.attempting = false
}
)
}

View File

@ -114,19 +114,19 @@ Application.Controllers.controller('CompleteProfileController', ['$scope', '$roo
*/
$scope.registerAuthToken = function () {
Member.merge({ id: $rootScope.currentUser.id }, { user: { auth_token: $scope.user.auth_token } }, function (user) {
$scope.user = user
Auth._currentUser = user
$rootScope.currentUser = user
$state.go('app.public.home')
$scope.user = user
Auth._currentUser = user
$rootScope.currentUser = user
$state.go('app.public.home')
}
, function (err) {
if (err.data.error) {
growl.error(err.data.error)
} else {
growl.error(_t('an_unexpected_error_occurred_check_your_authentication_code'))
console.error(err)
}
, function (err) {
if (err.data.error) {
growl.error(err.data.error)
} else {
growl.error(_t('an_unexpected_error_occurred_check_your_authentication_code'))
console.error(err)
}
})
})
}
/**
@ -209,7 +209,7 @@ Application.Controllers.controller('CompleteProfileController', ['$scope', '$roo
$scope.user.profile.birthday = moment($scope.user.profile.birthday).toDate()
// bind fields protection with sso fields
angular.forEach(activeProviderPromise.mapping, function (map) { $scope.preventField[map] = true; })
angular.forEach(activeProviderPromise.mapping, function (map) { $scope.preventField[map] = true })
}
// !!! MUST BE CALLED AT THE END of the controller

View File

@ -129,7 +129,7 @@ class ProjectsController {
/**
* This will create a single new empty entry into the project's CAO attachements list.
*/
$scope.addFile = function() { $scope.project.project_caos_attributes.push({}) }
$scope.addFile = function () { $scope.project.project_caos_attributes.push({}) }
/**
* This will remove the given file from the project's CAO attachements list. If the file was previously uploaded
@ -162,38 +162,38 @@ class ProjectsController {
*/
$scope.deleteStep = function (step) {
dialogs.confirm({
resolve: {
object() {
return {
title: _t('confirmation_required'),
msg: _t('do_you_really_want_to_delete_this_step')
}
resolve: {
object () {
return {
title: _t('confirmation_required'),
msg: _t('do_you_really_want_to_delete_this_step')
}
}
}
, function () { // deletion confirmed
const index = $scope.project.project_steps_attributes.indexOf(step)
if (step.id != null) {
step._destroy = true
} else {
$scope.project.project_steps_attributes.splice(index, 1)
}
}
, function () { // deletion confirmed
const index = $scope.project.project_steps_attributes.indexOf(step)
if (step.id != null) {
step._destroy = true
} else {
$scope.project.project_steps_attributes.splice(index, 1)
}
// update the new total number of steps
$scope.totalSteps -= 1
// reindex the remaining steps
return (function () {
const result = []
for (let s of Array.from($scope.project.project_steps_attributes)) {
if (s.step_nb > step.step_nb) {
result.push(s.step_nb -= 1)
} else {
result.push(undefined)
}
// update the new total number of steps
$scope.totalSteps -= 1
// reindex the remaining steps
return (function () {
const result = []
for (let s of Array.from($scope.project.project_steps_attributes)) {
if (s.step_nb > step.step_nb) {
result.push(s.step_nb -= 1)
} else {
result.push(undefined)
}
return result
})()
})
}
return result
})()
})
}
/**
@ -293,7 +293,7 @@ Application.Controllers.controller('ProjectsController', ['$scope', '$state', 'P
$scope.searchOverWholeNetworkChanged = function () {
setTimeout(
function() { $scope.resetFiltersAndTriggerSearch() },
function () { $scope.resetFiltersAndTriggerSearch() },
150
)
}
@ -387,7 +387,7 @@ Application.Controllers.controller('ProjectsController', ['$scope', '$state', 'P
var updateUrlParam = function (name, value) {
$state.current.reloadOnSearch = false
$location.search(name, value)
return $timeout(function() { $state.current.reloadOnSearch = undefined})
return $timeout(function () { $state.current.reloadOnSearch = undefined })
}
var loadMoreCallback = function (projectsPromise) {
@ -522,8 +522,8 @@ Application.Controllers.controller('ShowProjectController', ['$scope', '$state',
}
}
, function () { // cancel confirmed
$scope.project.$delete(function() { $state.go('app.public.projects_list', {}, { reload: true }) })
})
$scope.project.$delete(function () { $state.go('app.public.projects_list', {}, { reload: true }) })
})
} else {
return console.error(_t('unauthorized_operation'))
}
@ -550,10 +550,10 @@ Application.Controllers.controller('ShowProjectController', ['$scope', '$state',
}
// callback for signaling cancellation
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
// callback for form validation
return $scope.ok = function() {
return $scope.ok = function () {
Abuse.save(
{},
{ abuse: $scope.signaler },

View File

@ -58,7 +58,7 @@ class SpacesController {
/**
* Changes the current user's view, redirecting him to the spaces list
*/
$scope.cancel = function() { $state.go('app.public.spaces_list') }
$scope.cancel = function () { $state.go('app.public.spaces_list') }
/**
* For use with 'ng-class', returns the CSS class name for the uploads previews.
@ -76,7 +76,7 @@ class SpacesController {
/**
* This will create a single new empty entry into the space attachments list.
*/
$scope.addFile = function() { $scope.space.space_files_attributes.push({}) }
$scope.addFile = function () { $scope.space.space_files_attributes.push({}) }
/**
* This will remove the given file from the space attachments list. If the file was previously uploaded
@ -148,70 +148,70 @@ Application.Controllers.controller('NewSpaceController', ['$scope', '$state', 'C
*/
Application.Controllers.controller('EditSpaceController', ['$scope', '$state', '$stateParams', 'spacePromise', 'CSRF',
function ($scope, $state, $stateParams, spacePromise, CSRF) {
CSRF.setMetaTags()
CSRF.setMetaTags()
// API URL where the form will be posted
$scope.actionUrl = `/api/spaces/${$stateParams.id}`
// API URL where the form will be posted
$scope.actionUrl = `/api/spaces/${$stateParams.id}`
// Form action on the above URL
$scope.method = 'put'
// Form action on the above URL
$scope.method = 'put'
// space to modify
$scope.space = spacePromise
// space to modify
$scope.space = spacePromise
// Using the SpacesController
return new SpacesController($scope, $state)
}])
// Using the SpacesController
return new SpacesController($scope, $state)
}])
Application.Controllers.controller('ShowSpaceController', ['$scope', '$state', 'spacePromise', '_t', 'dialogs', 'growl',
function ($scope, $state, spacePromise, _t, dialogs, growl) {
// Details of the space witch id/slug is provided in the URL
$scope.space = spacePromise
$scope.space = spacePromise
/**
/**
* Callback to book a reservation for the current space
* @param event {Object} see https://docs.angularjs.org/guide/expression#-event-
*/
$scope.reserveSpace = function (event) {
event.preventDefault()
return $state.go('app.logged.space_reserve', { id: $scope.space.slug })
}
$scope.reserveSpace = function (event) {
event.preventDefault()
return $state.go('app.logged.space_reserve', { id: $scope.space.slug })
}
/**
/**
* Callback to book a reservation for the current space
* @param event {Object} see https://docs.angularjs.org/guide/expression#-event-
*/
$scope.deleteSpace = function (event) {
event.preventDefault()
// check the permissions
if ($scope.currentUser.role !== 'admin') {
return console.error(_t('space_show.unauthorized_operation'))
} else {
return dialogs.confirm({
resolve: {
object () {
return {
title: _t('space_show.confirmation_required'),
msg: _t('space_show.do_you_really_want_to_delete_this_space')
$scope.deleteSpace = function (event) {
event.preventDefault()
// check the permissions
if ($scope.currentUser.role !== 'admin') {
return console.error(_t('space_show.unauthorized_operation'))
} else {
return dialogs.confirm({
resolve: {
object () {
return {
title: _t('space_show.confirmation_required'),
msg: _t('space_show.do_you_really_want_to_delete_this_space')
}
}
}
}
}
, function() { // deletion confirmed
, function () { // deletion confirmed
// delete the machine then redirect to the machines listing
$scope.space.$delete(
function () {
$state.go('app.public.spaces_list')
},
function (error) {
growl.warning(_t('space_show.the_space_cant_be_deleted_because_it_is_already_reserved_by_some_users'));
console.error(error)
}
)
})
$scope.space.$delete(
function () {
$state.go('app.public.spaces_list')
},
function (error) {
growl.warning(_t('space_show.the_space_cant_be_deleted_because_it_is_already_reserved_by_some_users'))
console.error(error)
}
)
})
}
}
}
}])
}])
/**
* Controller used in the spaces reservation agenda page.
@ -326,7 +326,7 @@ Application.Controllers.controller('ReserveSpaceController', ['$scope', '$stateP
/**
* Callback when a slot was successfully cancelled. Reset the slot style as 'ready to book'
*/
$scope.slotCancelled = function() { $scope.markSlotAsRemoved($scope.selectedEvent) }
$scope.slotCancelled = function () { $scope.markSlotAsRemoved($scope.selectedEvent) }
/**
* Change the last selected slot's appearence to looks like 'currently looking for a new destination to exchange'
@ -474,7 +474,7 @@ Application.Controllers.controller('ReserveSpaceController', ['$scope', '$stateP
/**
* To use as callback in Array.prototype.filter to get only enabled plans
*/
$scope.filterDisabledPlans = function (plan) { return !plan.disabled; }
$scope.filterDisabledPlans = function (plan) { return !plan.disabled }
/* PRIVATE SCOPE */
@ -534,7 +534,7 @@ Application.Controllers.controller('ReserveSpaceController', ['$scope', '$stateP
/**
* Update the calendar's display to render the new attributes of the events
*/
var updateCalendar = function() { uiCalendarConfig.calendars.calendar.fullCalendar('rerenderEvents') }
var updateCalendar = function () { uiCalendarConfig.calendars.calendar.fullCalendar('rerenderEvents') }
/**
* Asynchronously fetch the events from the API and refresh the calendar's view with these new events

View File

@ -20,18 +20,18 @@
Application.Controllers.controller('TrainingsController', ['$scope', '$state', 'trainingsPromise',
function ($scope, $state, trainingsPromise) {
// List of trainings
$scope.trainings = trainingsPromise
$scope.trainings = trainingsPromise
/**
/**
* Callback for the 'reserve' button
*/
$scope.reserveTraining = function (training, event) { $state.go('app.logged.trainings_reserve', { id: training.slug }) }
$scope.reserveTraining = function (training, event) { $state.go('app.logged.trainings_reserve', { id: training.slug }) }
/**
/**
* Callback for the 'show' button
*/
$scope.showTraining = function (training) { $state.go('app.public.training_show', { id: training.slug }) }
}])
$scope.showTraining = function (training) { $state.go('app.public.training_show', { id: training.slug }) }
}])
/**
* Public view of a specific training
@ -39,51 +39,51 @@ Application.Controllers.controller('TrainingsController', ['$scope', '$state', '
Application.Controllers.controller('ShowTrainingController', ['$scope', '$state', 'trainingPromise', 'growl', '_t', 'dialogs',
function ($scope, $state, trainingPromise, growl, _t, dialogs) {
// Current training
$scope.training = trainingPromise
$scope.training = trainingPromise
/**
/**
* Callback to delete the current training (admins only)
*/
$scope.delete = function (training) {
$scope.delete = function (training) {
// check the permissions
if ($scope.currentUser.role !== 'admin') {
console.error(_t('unauthorized_operation'))
} else {
dialogs.confirm(
{
resolve: {
object () {
return {
title: _t('confirmation_required'),
msg: _t('do_you_really_want_to_delete_this_training')
if ($scope.currentUser.role !== 'admin') {
console.error(_t('unauthorized_operation'))
} else {
dialogs.confirm(
{
resolve: {
object () {
return {
title: _t('confirmation_required'),
msg: _t('do_you_really_want_to_delete_this_training')
}
}
}
}
},
function() { // deletion confirmed
},
function () { // deletion confirmed
// delete the training then redirect to the trainings listing
training.$delete(
function() { $state.go('app.public.trainings_list') },
function (error) {
growl.warning(_t('the_training_cant_be_deleted_because_it_is_already_reserved_by_some_users'));
console.error(error);
}
)
}
)
training.$delete(
function () { $state.go('app.public.trainings_list') },
function (error) {
growl.warning(_t('the_training_cant_be_deleted_because_it_is_already_reserved_by_some_users'))
console.error(error)
}
)
}
)
}
}
}
/**
/**
* Callback for the 'reserve' button
*/
$scope.reserveTraining = function (training, event) { $state.go('app.logged.trainings_reserve', { id: training.id }) }
$scope.reserveTraining = function (training, event) { $state.go('app.logged.trainings_reserve', { id: training.id }) }
/**
/**
* Revert view to the full list of trainings ("<-" button)
*/
$scope.cancel = function (event) { $state.go('app.public.trainings_list') }
}])
$scope.cancel = function (event) { $state.go('app.public.trainings_list') }
}])
/**
* Controller used in the training reservation agenda page.

View File

@ -15,10 +15,10 @@ Application.Controllers.controller('WalletController', ['$scope', 'walletPromise
function ($scope, walletPromise, transactionsPromise) {
/* PUBLIC SCOPE */
// current user wallet
$scope.wallet = walletPromise
// current user wallet
$scope.wallet = walletPromise
// current wallet transactions
return $scope.transactions = transactionsPromise
}
// current wallet transactions
return $scope.transactions = transactionsPromise
}
])

View File

@ -1,37 +1,34 @@
'use strict';
'use strict'
Application.Directives.directive('bsJasnyFileinput', [function(){
Application.Directives.directive('bsJasnyFileinput', [function () {
return {
require : ['ngModel'],
link : function($scope, elm, attrs, requiredCtrls){
var ngModelCtrl = requiredCtrls[0];
var fileinput = elm.parents('[data-provides=fileinput]');
var filetypeRegex = attrs.bsJasnyFileinput;
fileinput.on('clear.bs.fileinput', function(e){
if(ngModelCtrl){
ngModelCtrl.$setViewValue(null);
ngModelCtrl.$setPristine();
$scope.$apply();
require: ['ngModel'],
link: function ($scope, elm, attrs, requiredCtrls) {
var ngModelCtrl = requiredCtrls[0]
var fileinput = elm.parents('[data-provides=fileinput]')
var filetypeRegex = attrs.bsJasnyFileinput
fileinput.on('clear.bs.fileinput', function (e) {
if (ngModelCtrl) {
ngModelCtrl.$setViewValue(null)
ngModelCtrl.$setPristine()
$scope.$apply()
}
});
fileinput.on('change.bs.fileinput', function(e, files){
if(ngModelCtrl){
if(files){
ngModelCtrl.$setViewValue(files.result);
})
fileinput.on('change.bs.fileinput', function (e, files) {
if (ngModelCtrl) {
if (files) {
ngModelCtrl.$setViewValue(files.result)
} else {
ngModelCtrl.$setPristine();
ngModelCtrl.$setPristine()
}
// TODO: ne marche pas pour filetype
if (filetypeRegex) {
if(files && typeof files.type !== "undefined" && files.type.match(new RegExp(filetypeRegex)))
ngModelCtrl.$setValidity('filetype', true);
else
ngModelCtrl.$setValidity('filetype', false);
if (files && typeof files.type !== 'undefined' && files.type.match(new RegExp(filetypeRegex))) { ngModelCtrl.$setValidity('filetype', true) } else { ngModelCtrl.$setValidity('filetype', false) }
};
}
$scope.$apply();
});
$scope.$apply()
})
}
}
}]);
}])

View File

@ -210,7 +210,7 @@ Application.Directives.directive('cart', [ '$rootScope', '$uibModal', 'dialogs',
* Check if the currently logged user has teh 'admin' role?
* @returns {boolean}
*/
$scope.isAdmin = function() { return $rootScope.currentUser && ($rootScope.currentUser.role === 'admin') }
$scope.isAdmin = function () { return $rootScope.currentUser && ($rootScope.currentUser.role === 'admin') }
/* PRIVATE SCOPE */
@ -319,7 +319,7 @@ Application.Directives.directive('cart', [ '$rootScope', '$uibModal', 'dialogs',
growl.success(_t('cart.reservation_was_cancelled_successfully'))
if (typeof $scope.onSlotCancelSuccess === 'function') { return $scope.onSlotCancelSuccess() }
}
, function() { // error while canceling
, function () { // error while canceling
growl.error(_t('cart.cancellation_failed'))
})
}
@ -512,7 +512,7 @@ Application.Directives.directive('cart', [ '$rootScope', '$uibModal', 'dialogs',
$scope.reservation.card_token = response.id
Reservation.save(
mkRequestParams($scope.reservation, coupon),
function(reservation) { $uibModalInstance.close(reservation) },
function (reservation) { $uibModalInstance.close(reservation) },
function (response) {
$scope.alerts = []
if (response.status === 500) {
@ -566,19 +566,19 @@ Application.Directives.directive('cart', [ '$rootScope', '$uibModal', 'dialogs',
controller: ['$scope', '$uibModalInstance', '$state', 'reservation', 'price', 'Auth', 'Reservation', 'wallet', 'helpers', '$filter', 'coupon',
function ($scope, $uibModalInstance, $state, reservation, price, Auth, Reservation, wallet, helpers, $filter, coupon) {
// user wallet amount
$scope.walletAmount = wallet.amount
$scope.walletAmount = wallet.amount
// Global price (total of all items)
$scope.price = price.price
// Global price (total of all items)
$scope.price = price.price
// Price to pay (wallet deducted)
$scope.amount = helpers.getAmountToPay(price.price, wallet.amount)
// Price to pay (wallet deducted)
$scope.amount = helpers.getAmountToPay(price.price, wallet.amount)
// Reservation
$scope.reservation = reservation
// Reservation
$scope.reservation = reservation
// Used in wallet info template to interpolate some translations
$scope.numberFilter = $filter('number')
// Used in wallet info template to interpolate some translations
$scope.numberFilter = $filter('number')
// Button label
if ($scope.amount > 0) {
@ -606,10 +606,10 @@ Application.Directives.directive('cart', [ '$rootScope', '$uibModal', 'dialogs',
return $scope.attempting = false
})
}
$scope.cancel = function() { $uibModalInstance.dismiss('cancel') }
$scope.cancel = function () { $uibModalInstance.dismiss('cancel') }
}
]
}).result['finally'](null).then(function(reservation) { afterPayment(reservation) })
}).result['finally'](null).then(function (reservation) { afterPayment(reservation) })
}
/**
* Actions to run after the payment was successfull

View File

@ -8,7 +8,7 @@
* DS102: Remove unnecessary code created because of implicit returns
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
Application.Directives.directive('fabUserAvatar', [ function() {
Application.Directives.directive('fabUserAvatar', [ function () {
return ({
restrict: 'E',
scope: {
@ -17,5 +17,4 @@ Application.Directives.directive('fabUserAvatar', [ function() {
},
templateUrl: '<%= asset_path "shared/_user_avatar.html" %>'
})
}])

View File

@ -45,5 +45,4 @@ Application.Directives.directive('selectMember', [ 'Diacritics', 'Member', funct
}
})
}])

View File

@ -9,7 +9,7 @@
* DS102: Remove unnecessary code created because of implicit returns
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
Application.Directives.directive('socialLink', [ function() {
Application.Directives.directive('socialLink', [ function () {
return ({
restrict: 'E',
scope: {
@ -33,5 +33,4 @@ Application.Directives.directive('socialLink', [ function() {
}
}
})
}])

View File

@ -1,24 +1,23 @@
'use strict';
'use strict'
// https://github.com/gtramontina/stripe-angular
Application.Directives.directive('stripeForm', ['$window',
function($window) {
var directive = { restrict: 'A' };
directive.link = function(scope, element, attributes) {
var form = angular.element(element);
form.bind('submit', function() {
var button = form.find('button');
button.prop('disabled', true);
$window.Stripe.createToken(form[0], function() {
var args = arguments;
scope.$apply(function() {
scope[attributes.stripeForm].apply(scope, args);
});
//button.prop('disabled', false);
});
});
};
return directive;
}]);
function ($window) {
var directive = { restrict: 'A' }
directive.link = function (scope, element, attributes) {
var form = angular.element(element)
form.bind('submit', function () {
var button = form.find('button')
button.prop('disabled', true)
$window.Stripe.createToken(form[0], function () {
var args = arguments
scope.$apply(function () {
scope[attributes.stripeForm].apply(scope, args)
})
// button.prop('disabled', false);
})
})
}
return directive
}])

View File

@ -517,7 +517,7 @@ angular.module('application.router', ['ui.router'])
if ($stateParams.id !== 'all') { return Training.get({ id: $stateParams.id }).$promise }
}],
settingsPromise: ['Setting', function (Setting) {
return Setting.query({
return Setting.query({
names: `['booking_window_start', \
'booking_window_end', \
'booking_move_enable', \

View File

@ -4,7 +4,7 @@
* Based on http://jsperf.com/diacritics/12
*/
Application.Services.service('Diacritics', [
"$resource", function($resource) {
'$resource', function ($resource) {
return {
/**
@ -13,109 +13,109 @@ Application.Services.service('Diacritics', [
* @param str {string} to ascii-fy
* @returns {string} without diacritics
*/
remove: function(str) {
remove: function (str) {
var defaultDiacriticsRemovalap = [
{'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
{'base':'AA','letters':'\uA732'},
{'base':'AE','letters':'\u00C6\u01FC\u01E2'},
{'base':'AO','letters':'\uA734'},
{'base':'AU','letters':'\uA736'},
{'base':'AV','letters':'\uA738\uA73A'},
{'base':'AY','letters':'\uA73C'},
{'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
{'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
{'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
{'base':'DZ','letters':'\u01F1\u01C4'},
{'base':'Dz','letters':'\u01F2\u01C5'},
{'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
{'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
{'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
{'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
{'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
{'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
{'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
{'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
{'base':'LJ','letters':'\u01C7'},
{'base':'Lj','letters':'\u01C8'},
{'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
{'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
{'base':'NJ','letters':'\u01CA'},
{'base':'Nj','letters':'\u01CB'},
{'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
{'base':'OI','letters':'\u01A2'},
{'base':'OO','letters':'\uA74E'},
{'base':'OU','letters':'\u0222'},
{'base':'OE','letters':'\u008C\u0152'},
{'base':'oe','letters':'\u009C\u0153'},
{'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
{'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
{'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
{'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
{'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
{'base':'TZ','letters':'\uA728'},
{'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
{'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
{'base':'VY','letters':'\uA760'},
{'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
{'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
{'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
{'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
{'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
{'base':'aa','letters':'\uA733'},
{'base':'ae','letters':'\u00E6\u01FD\u01E3'},
{'base':'ao','letters':'\uA735'},
{'base':'au','letters':'\uA737'},
{'base':'av','letters':'\uA739\uA73B'},
{'base':'ay','letters':'\uA73D'},
{'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
{'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
{'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
{'base':'dz','letters':'\u01F3\u01C6'},
{'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
{'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
{'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
{'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
{'base':'hv','letters':'\u0195'},
{'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
{'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
{'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
{'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
{'base':'lj','letters':'\u01C9'},
{'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
{'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
{'base':'nj','letters':'\u01CC'},
{'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
{'base':'oi','letters':'\u01A3'},
{'base':'ou','letters':'\u0223'},
{'base':'oo','letters':'\uA74F'},
{'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
{'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
{'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
{'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
{'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
{'base':'tz','letters':'\uA729'},
{'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
{'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
{'base':'vy','letters':'\uA761'},
{'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
{'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
{'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
{'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
];
{ 'base': 'A', 'letters': '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F' },
{ 'base': 'AA', 'letters': '\uA732' },
{ 'base': 'AE', 'letters': '\u00C6\u01FC\u01E2' },
{ 'base': 'AO', 'letters': '\uA734' },
{ 'base': 'AU', 'letters': '\uA736' },
{ 'base': 'AV', 'letters': '\uA738\uA73A' },
{ 'base': 'AY', 'letters': '\uA73C' },
{ 'base': 'B', 'letters': '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181' },
{ 'base': 'C', 'letters': '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E' },
{ 'base': 'D', 'letters': '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779' },
{ 'base': 'DZ', 'letters': '\u01F1\u01C4' },
{ 'base': 'Dz', 'letters': '\u01F2\u01C5' },
{ 'base': 'E', 'letters': '\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E' },
{ 'base': 'F', 'letters': '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B' },
{ 'base': 'G', 'letters': '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E' },
{ 'base': 'H', 'letters': '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D' },
{ 'base': 'I', 'letters': '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197' },
{ 'base': 'J', 'letters': '\u004A\u24BF\uFF2A\u0134\u0248' },
{ 'base': 'K', 'letters': '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2' },
{ 'base': 'L', 'letters': '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780' },
{ 'base': 'LJ', 'letters': '\u01C7' },
{ 'base': 'Lj', 'letters': '\u01C8' },
{ 'base': 'M', 'letters': '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C' },
{ 'base': 'N', 'letters': '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4' },
{ 'base': 'NJ', 'letters': '\u01CA' },
{ 'base': 'Nj', 'letters': '\u01CB' },
{ 'base': 'O', 'letters': '\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C' },
{ 'base': 'OI', 'letters': '\u01A2' },
{ 'base': 'OO', 'letters': '\uA74E' },
{ 'base': 'OU', 'letters': '\u0222' },
{ 'base': 'OE', 'letters': '\u008C\u0152' },
{ 'base': 'oe', 'letters': '\u009C\u0153' },
{ 'base': 'P', 'letters': '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754' },
{ 'base': 'Q', 'letters': '\u0051\u24C6\uFF31\uA756\uA758\u024A' },
{ 'base': 'R', 'letters': '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782' },
{ 'base': 'S', 'letters': '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784' },
{ 'base': 'T', 'letters': '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786' },
{ 'base': 'TZ', 'letters': '\uA728' },
{ 'base': 'U', 'letters': '\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244' },
{ 'base': 'V', 'letters': '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245' },
{ 'base': 'VY', 'letters': '\uA760' },
{ 'base': 'W', 'letters': '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72' },
{ 'base': 'X', 'letters': '\u0058\u24CD\uFF38\u1E8A\u1E8C' },
{ 'base': 'Y', 'letters': '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE' },
{ 'base': 'Z', 'letters': '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762' },
{ 'base': 'a', 'letters': '\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250' },
{ 'base': 'aa', 'letters': '\uA733' },
{ 'base': 'ae', 'letters': '\u00E6\u01FD\u01E3' },
{ 'base': 'ao', 'letters': '\uA735' },
{ 'base': 'au', 'letters': '\uA737' },
{ 'base': 'av', 'letters': '\uA739\uA73B' },
{ 'base': 'ay', 'letters': '\uA73D' },
{ 'base': 'b', 'letters': '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253' },
{ 'base': 'c', 'letters': '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184' },
{ 'base': 'd', 'letters': '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A' },
{ 'base': 'dz', 'letters': '\u01F3\u01C6' },
{ 'base': 'e', 'letters': '\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD' },
{ 'base': 'f', 'letters': '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C' },
{ 'base': 'g', 'letters': '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F' },
{ 'base': 'h', 'letters': '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265' },
{ 'base': 'hv', 'letters': '\u0195' },
{ 'base': 'i', 'letters': '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131' },
{ 'base': 'j', 'letters': '\u006A\u24D9\uFF4A\u0135\u01F0\u0249' },
{ 'base': 'k', 'letters': '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3' },
{ 'base': 'l', 'letters': '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747' },
{ 'base': 'lj', 'letters': '\u01C9' },
{ 'base': 'm', 'letters': '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F' },
{ 'base': 'n', 'letters': '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5' },
{ 'base': 'nj', 'letters': '\u01CC' },
{ 'base': 'o', 'letters': '\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275' },
{ 'base': 'oi', 'letters': '\u01A3' },
{ 'base': 'ou', 'letters': '\u0223' },
{ 'base': 'oo', 'letters': '\uA74F' },
{ 'base': 'p', 'letters': '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755' },
{ 'base': 'q', 'letters': '\u0071\u24E0\uFF51\u024B\uA757\uA759' },
{ 'base': 'r', 'letters': '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783' },
{ 'base': 's', 'letters': '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B' },
{ 'base': 't', 'letters': '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787' },
{ 'base': 'tz', 'letters': '\uA729' },
{ 'base': 'u', 'letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289' },
{ 'base': 'v', 'letters': '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C' },
{ 'base': 'vy', 'letters': '\uA761' },
{ 'base': 'w', 'letters': '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73' },
{ 'base': 'x', 'letters': '\u0078\u24E7\uFF58\u1E8B\u1E8D' },
{ 'base': 'y', 'letters': '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF' },
{ 'base': 'z', 'letters': '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763' }
]
var diacriticsMap = {};
for (var i=0; i < defaultDiacriticsRemovalap.length; i++){
var letters = defaultDiacriticsRemovalap[i].letters.split("");
for (var j=0; j < letters.length ; j++){
diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
var diacriticsMap = {}
for (var i = 0; i < defaultDiacriticsRemovalap.length; i++) {
var letters = defaultDiacriticsRemovalap[i].letters.split('')
for (var j = 0; j < letters.length; j++) {
diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base
}
}
return str.replace(/[^\u0000-\u007E]/g, function(a){
return diacriticsMap[a] || a;
});
return str.replace(/[^\u0000-\u007E]/g, function (a) {
return diacriticsMap[a] || a
})
}
}
}
]);
])

View File

@ -45,5 +45,4 @@ Application.Services.factory('dialogs', ['$uibModal', function ($uibModal) {
})
}
})
}])

View File

@ -1,3 +1,3 @@
Application.Services.service('es', function (esFactory) {
return esFactory({ host: window.location.origin });
});
return esFactory({ host: window.location.origin })
})

964
package-lock.json generated
View File

@ -1,91 +1,83 @@
{
"name": "fab-manager",
"requires": true,
"version": "2.7.0-dev",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"dev": true,
"requires": {
"@babel/highlight": "7.0.0"
"@babel/highlight": "^7.0.0"
}
},
"@babel/highlight": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"dev": true,
"requires": {
"chalk": "2.4.1",
"esutils": "2.0.2",
"js-tokens": "4.0.0"
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
"acorn": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz",
"integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg=="
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz",
"integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==",
"dev": true
},
"acorn-jsx": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.0.tgz",
"integrity": "sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg=="
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
"integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
"dev": true
},
"ajv": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
"integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
"version": "6.5.5",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
"integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
"dev": true,
"requires": {
"fast-deep-equal": "2.0.1",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.4.1",
"uri-js": "4.2.2"
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-escapes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
"integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw=="
"resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
"integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
"dev": true
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "1.9.3"
"color-convert": "^1.9.0"
}
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "1.0.3"
"sprintf-js": "~1.0.2"
}
},
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"requires": {
"array-uniq": "1.0.3"
}
},
"array-uniq": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
},
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@ -96,60 +88,73 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "1.0.0",
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
},
"caller-path": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
"integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
"dev": true,
"requires": {
"callsites": "0.2.0"
"callsites": "^0.2.0"
}
},
"callsites": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo="
"resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
"dev": true
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.5.0"
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"chardet": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
"circular-json": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
"dev": true
},
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"dev": true,
"requires": {
"restore-cursor": "2.0.0"
"restore-cursor": "^2.0.0"
}
},
"cli-width": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
"dev": true
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
@ -157,174 +162,288 @@
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"contains-path": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
"integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo="
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
"nice-try": "1.0.5",
"path-key": "2.0.1",
"semver": "5.6.0",
"shebang-command": "1.2.0",
"which": "1.3.1"
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"debug": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
"integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.1.1"
"ms": "2.0.0"
}
},
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
},
"del": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
"integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
"requires": {
"globby": "5.0.0",
"is-path-cwd": "1.0.0",
"is-path-in-cwd": "1.0.1",
"object-assign": "4.1.1",
"pify": "2.3.0",
"pinkie-promise": "2.0.1",
"rimraf": "2.6.2"
}
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"version": "1.5.0",
"resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
"integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"requires": {
"esutils": "2.0.2"
"esutils": "^2.0.2",
"isarray": "^1.0.0"
}
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"eslint": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-5.7.0.tgz",
"integrity": "sha512-zYCeFQahsxffGl87U2aJ7DPyH8CbWgxBC213Y8+TCanhUTf2gEvfq3EKpHmEcozTLyPmGe9LZdMAwC/CpJBM5A==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-5.9.0.tgz",
"integrity": "sha512-g4KWpPdqN0nth+goDNICNXGfJF7nNnepthp46CAlJoJtC5K/cLu3NgCM3AHu1CkJ5Hzt9V0Y0PBAO6Ay/gGb+w==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0",
"ajv": "6.5.4",
"chalk": "2.4.1",
"cross-spawn": "6.0.5",
"debug": "4.1.0",
"doctrine": "2.1.0",
"eslint-scope": "4.0.0",
"eslint-utils": "1.3.1",
"eslint-visitor-keys": "1.0.0",
"espree": "4.1.0",
"esquery": "1.0.1",
"esutils": "2.0.2",
"file-entry-cache": "2.0.0",
"functional-red-black-tree": "1.0.1",
"glob": "7.1.3",
"globals": "11.8.0",
"ignore": "4.0.6",
"imurmurhash": "0.1.4",
"inquirer": "6.2.0",
"is-resolvable": "1.1.0",
"js-yaml": "3.12.0",
"json-stable-stringify-without-jsonify": "1.0.1",
"levn": "0.3.0",
"lodash": "4.17.11",
"minimatch": "3.0.4",
"mkdirp": "0.5.1",
"natural-compare": "1.4.0",
"optionator": "0.8.2",
"path-is-inside": "1.0.2",
"pluralize": "7.0.0",
"progress": "2.0.1",
"regexpp": "2.0.1",
"require-uncached": "1.0.3",
"semver": "5.6.0",
"strip-ansi": "4.0.0",
"strip-json-comments": "2.0.1",
"table": "5.1.0",
"text-table": "0.2.0"
"@babel/code-frame": "^7.0.0",
"ajv": "^6.5.3",
"chalk": "^2.1.0",
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
"doctrine": "^2.1.0",
"eslint-scope": "^4.0.0",
"eslint-utils": "^1.3.1",
"eslint-visitor-keys": "^1.0.0",
"espree": "^4.0.0",
"esquery": "^1.0.1",
"esutils": "^2.0.2",
"file-entry-cache": "^2.0.0",
"functional-red-black-tree": "^1.0.1",
"glob": "^7.1.2",
"globals": "^11.7.0",
"ignore": "^4.0.6",
"imurmurhash": "^0.1.4",
"inquirer": "^6.1.0",
"is-resolvable": "^1.1.0",
"js-yaml": "^3.12.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
"lodash": "^4.17.5",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
"optionator": "^0.8.2",
"path-is-inside": "^1.0.2",
"pluralize": "^7.0.0",
"progress": "^2.0.0",
"regexpp": "^2.0.1",
"require-uncached": "^1.0.3",
"semver": "^5.5.1",
"strip-ansi": "^4.0.0",
"strip-json-comments": "^2.0.1",
"table": "^5.0.2",
"text-table": "^0.2.0"
},
"dependencies": {
"debug": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
"integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"requires": {
"esutils": "^2.0.2"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
}
}
},
"eslint-config-standard": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
"integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ=="
"integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
"dev": true
},
"eslint-import-resolver-node": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
"integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
"requires": {
"debug": "^2.6.9",
"resolve": "^1.5.0"
}
},
"eslint-module-utils": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
"integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
"requires": {
"debug": "^2.6.8",
"pkg-dir": "^1.0.0"
}
},
"eslint-plugin-es": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz",
"integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==",
"dev": true,
"requires": {
"eslint-utils": "^1.3.0",
"regexpp": "^2.0.1"
}
},
"eslint-plugin-import": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
"integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
"requires": {
"contains-path": "^0.1.0",
"debug": "^2.6.8",
"doctrine": "1.5.0",
"eslint-import-resolver-node": "^0.3.1",
"eslint-module-utils": "^2.2.0",
"has": "^1.0.1",
"lodash": "^4.17.4",
"minimatch": "^3.0.3",
"read-pkg-up": "^2.0.0",
"resolve": "^1.6.0"
}
},
"eslint-plugin-node": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-8.0.0.tgz",
"integrity": "sha512-Y+ln8iQ52scz9+rSPnSWRaAxeWaoJZ4wIveDR0vLHkuSZGe44Vk1J4HX7WvEP5Cm+iXPE8ixo7OM7gAO3/OKpQ==",
"dev": true,
"requires": {
"eslint-plugin-es": "^1.3.1",
"eslint-utils": "^1.3.1",
"ignore": "^5.0.2",
"minimatch": "^3.0.4",
"resolve": "^1.8.1",
"semver": "^5.5.0"
},
"dependencies": {
"ignore": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.4.tgz",
"integrity": "sha512-WLsTMEhsQuXpCiG173+f3aymI43SXa+fB1rSfbzyP4GkPP+ZFVuO0/3sFUGNBtifisPeDcl/uD/Y2NxZ7xFq4g==",
"dev": true
}
}
},
"eslint-plugin-promise": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
"integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
"dev": true
},
"eslint-plugin-standard": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz",
"integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA=="
"integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==",
"dev": true
},
"eslint-scope": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
"integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
"dev": true,
"requires": {
"esrecurse": "4.2.1",
"estraverse": "4.2.0"
"esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
}
},
"eslint-utils": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
"integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q=="
"integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
"dev": true
},
"eslint-visitor-keys": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ=="
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
"dev": true
},
"espree": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
"integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==",
"dev": true,
"requires": {
"acorn": "6.0.2",
"acorn-jsx": "5.0.0",
"eslint-visitor-keys": "1.0.0"
"acorn": "^6.0.2",
"acorn-jsx": "^5.0.0",
"eslint-visitor-keys": "^1.0.0"
}
},
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
},
"esquery": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
"integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
"dev": true,
"requires": {
"estraverse": "4.2.0"
"estraverse": "^4.0.0"
}
},
"esrecurse": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
"dev": true,
"requires": {
"estraverse": "4.2.0"
"estraverse": "^4.1.0"
}
},
"estraverse": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
"dev": true
},
"esutils": {
"version": "2.0.2",
@ -335,230 +454,295 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
"integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
"dev": true,
"requires": {
"chardet": "0.7.0",
"iconv-lite": "0.4.24",
"tmp": "0.0.33"
"chardet": "^0.7.0",
"iconv-lite": "^0.4.24",
"tmp": "^0.0.33"
}
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
"dev": true
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
"dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
"dev": true,
"requires": {
"escape-string-regexp": "1.0.5"
"escape-string-regexp": "^1.0.5"
}
},
"file-entry-cache": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
"integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
"dev": true,
"requires": {
"flat-cache": "1.3.0",
"object-assign": "4.1.1"
"flat-cache": "^1.2.1",
"object-assign": "^4.0.1"
}
},
"find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"flat-cache": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
"integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
"integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
"dev": true,
"requires": {
"circular-json": "0.3.3",
"del": "2.2.2",
"graceful-fs": "4.1.11",
"write": "0.2.1"
"circular-json": "^0.3.1",
"graceful-fs": "^4.1.2",
"rimraf": "~2.6.2",
"write": "^0.2.1"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
"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"
}
},
"globals": {
"version": "11.8.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz",
"integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA=="
},
"globby": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
"integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
"requires": {
"array-union": "1.0.2",
"arrify": "1.0.1",
"glob": "7.1.3",
"object-assign": "4.1.1",
"pify": "2.3.0",
"pinkie-promise": "2.0.1"
}
"version": "11.9.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
"integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==",
"dev": true
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"function-bind": "^1.1.1"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"hosted-git-info": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"requires": {
"safer-buffer": "2.1.2"
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"inquirer": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz",
"integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
"dev": true,
"requires": {
"ansi-escapes": "3.1.0",
"chalk": "2.4.1",
"cli-cursor": "2.1.0",
"cli-width": "2.2.0",
"external-editor": "3.0.3",
"figures": "2.0.0",
"lodash": "4.17.11",
"ansi-escapes": "^3.0.0",
"chalk": "^2.0.0",
"cli-cursor": "^2.1.0",
"cli-width": "^2.0.0",
"external-editor": "^3.0.0",
"figures": "^2.0.0",
"lodash": "^4.17.10",
"mute-stream": "0.0.7",
"run-async": "2.3.0",
"rxjs": "6.3.3",
"string-width": "2.1.1",
"strip-ansi": "4.0.0",
"through": "2.3.8"
"run-async": "^2.2.0",
"rxjs": "^6.1.0",
"string-width": "^2.1.0",
"strip-ansi": "^4.0.0",
"through": "^2.3.6"
}
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
"is-builtin-module": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"requires": {
"builtin-modules": "^1.0.0"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
},
"is-path-cwd": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
"integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
},
"is-path-in-cwd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
"integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
"requires": {
"is-path-inside": "1.0.1"
}
},
"is-path-inside": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"requires": {
"path-is-inside": "1.0.2"
}
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
"dev": true
},
"is-resolvable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
"integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
"integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
"dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
"js-yaml": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"dev": true,
"requires": {
"argparse": "1.0.10",
"esprima": "4.0.1"
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
"prelude-ls": "1.1.2",
"type-check": "0.3.2"
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
}
},
"load-json-file": {
"version": "2.0.0",
"resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
"pify": "^2.0.0",
"strip-bom": "^3.0.0"
}
},
"locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"requires": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
},
"dependencies": {
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
}
}
},
"lodash": {
@ -569,102 +753,177 @@
"mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "1.1.11"
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mute-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
"dev": true
},
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"requires": {
"hosted-git-info": "^2.1.4",
"is-builtin-module": "^1.0.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1.0.2"
"wrappy": "1"
}
},
"onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"dev": true,
"requires": {
"mimic-fn": "1.2.0"
"mimic-fn": "^1.0.0"
}
},
"optionator": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
"dev": true,
"requires": {
"deep-is": "0.1.3",
"fast-levenshtein": "2.0.6",
"levn": "0.3.0",
"prelude-ls": "1.1.2",
"type-check": "0.3.2",
"wordwrap": "1.0.0"
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.4",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"wordwrap": "~1.0.0"
}
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
"resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"requires": {
"p-try": "^1.0.0"
}
},
"p-locate": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"requires": {
"p-limit": "^1.1.0"
}
},
"p-try": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
},
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"requires": {
"error-ex": "^1.2.0"
}
},
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"requires": {
"pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
"resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-is-inside": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
"dev": true
},
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
"path-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
"requires": {
"pify": "^2.0.0"
}
},
"pify": {
"version": "2.3.0",
@ -681,85 +940,142 @@
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"requires": {
"pinkie": "2.0.4"
"pinkie": "^2.0.0"
}
},
"pkg-dir": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
"integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
"requires": {
"find-up": "^1.0.0"
}
},
"pluralize": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
"integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow=="
"integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
"dev": true
},
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
"progress": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
"integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg=="
"integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
"dev": true
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"read-pkg": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"requires": {
"load-json-file": "^2.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^2.0.0"
}
},
"read-pkg-up": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
"requires": {
"find-up": "^2.0.0",
"read-pkg": "^2.0.0"
},
"dependencies": {
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"requires": {
"locate-path": "^2.0.0"
}
}
}
},
"regexpp": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw=="
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
"dev": true
},
"require-uncached": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
"resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
"integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
"dev": true,
"requires": {
"caller-path": "0.1.0",
"resolve-from": "1.0.1"
"caller-path": "^0.1.0",
"resolve-from": "^1.0.0"
}
},
"resolve": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"requires": {
"path-parse": "^1.0.5"
}
},
"resolve-from": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
"integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY="
"integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
"dev": true
},
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"dev": true,
"requires": {
"onetime": "2.0.1",
"signal-exit": "3.0.2"
"onetime": "^2.0.0",
"signal-exit": "^3.0.2"
}
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "7.1.3"
"glob": "^7.0.5"
}
},
"run-async": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
"dev": true,
"requires": {
"is-promise": "2.1.0"
"is-promise": "^2.1.0"
}
},
"rxjs": {
"version": "6.3.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
"integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
"dev": true,
"requires": {
"tslib": "1.9.3"
"tslib": "^1.9.0"
}
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"semver": {
"version": "5.6.0",
@ -770,137 +1086,199 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
"shebang-regex": "1.0.0"
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"slice-ansi": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
"integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0"
"is-fullwidth-code-point": "^2.0.0"
}
},
"spdx-correct": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
"integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
"integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
},
"spdx-expression-parse": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
"integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg=="
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
"ansi-regex": "^3.0.0"
}
},
"strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
},
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "3.0.0"
"has-flag": "^3.0.0"
}
},
"table": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz",
"integrity": "sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg==",
"dev": true,
"requires": {
"ajv": "6.5.4",
"lodash": "4.17.11",
"ajv": "^6.5.3",
"lodash": "^4.17.10",
"slice-ansi": "1.0.0",
"string-width": "2.1.1"
"string-width": "^2.1.1"
}
},
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
"through": {
"version": "2.3.8",
"resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
"os-tmpdir": "1.0.2"
"os-tmpdir": "~1.0.2"
}
},
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true
},
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
"prelude-ls": "1.1.2"
"prelude-ls": "~1.1.2"
}
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
"punycode": "2.1.1"
"punycode": "^2.1.0"
}
},
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
"isexe": "2.0.0"
"isexe": "^2.0.0"
}
},
"wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"write": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
"integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
"dev": true,
"requires": {
"mkdirp": "0.5.1"
"mkdirp": "^0.5.1"
}
}
}

View File

@ -2,15 +2,28 @@
"name": "fab-manager",
"version": "2.7.0-dev",
"description": "FabManager is the FabLab management solution. It is web-based, open-source and totally free.",
"keywords": ["fablab", "reservations", "booking", "payment", "project", "documentation"],
"keywords": [
"fablab",
"reservations",
"booking",
"payment",
"project",
"documentation"
],
"homepage": "http://www.fab-manager.com/",
"repository": "https://github.com/LaCasemate/fab-manager.git",
"bugs": {
"url": "https://github.com/LaCasemate/fab-manager/issues",
"url": "https://github.com/LaCasemate/fab-manager/issues"
},
"license": "AGPL-3.0-only",
"devDependencies": {
"eslint": "^5.7.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0"
},
"dependencies": {
"eslint-plugin-import": "^2.14.0"
}
}