From 2a8fb745eaa8206c277e1216ce06d38cd2ca47b5 Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Mon, 2 Oct 2017 12:44:34 +0800 Subject: [PATCH 01/23] Move assessment and submission [ISDK-75] --- src/services/assessment.service.ts | 160 ++++++++++++++++++++++++++--- src/services/submission.service.ts | 3 +- 2 files changed, 149 insertions(+), 14 deletions(-) diff --git a/src/services/assessment.service.ts b/src/services/assessment.service.ts index a8f7900c..859e35dd 100755 --- a/src/services/assessment.service.ts +++ b/src/services/assessment.service.ts @@ -1,8 +1,9 @@ import { Injectable } from '@angular/core'; import { RequestService } from '../shared/request/request.service'; - +import { Http, Headers } from '@angular/http'; import * as _ from 'lodash'; - +// services +import { CacheService } from '../shared/cache/cache.service'; class Assessment { id: number; context_id: number; @@ -15,6 +16,15 @@ class Answer { choices?: Array; } +export class questionsResult { + required: Boolean; + answer: any; + reviewerAnswer: { + answer: any; + comment: any; + }; +} + export class ChoiceBase { id: number; value?: number; // or choice id, usually same as "id" above @@ -32,11 +42,12 @@ export class QuestionBase { assessment_id: number; name: string; type: string; - file_type?: string; - audience: Array; + description: string; + required: boolean; + audience: string | Array; + file_type?: string | any; choices?: ChoiceBase[]; answer?: any; - required?: boolean; order?: string | number; constructor(id, assessment_id, name, type) { @@ -55,8 +66,12 @@ export class Submission { @Injectable() export class AssessmentService { - constructor(private request: RequestService) {} - + constructor(private cacheService: CacheService, + private request: RequestService, + private http: Http) {} + private prefixUrl: any = this.request.getPrefixUrl(); + private appkey = this.request.getAppkey(); + private assessment_url = 'api/assessments.json'; /** * @description check feedback can show * @type {boolen} @@ -268,9 +283,10 @@ export class AssessmentService { */ public normaliseGroup(group) { // let result = group; - let thisQuestions = group.AssessmentGroupQuestion; - thisQuestions = thisQuestions.map(question => { - return this.normaliseQuestion(question); + let questions = group.AssessmentGroupQuestion; + let thisQuestions = []; + questions.forEach(question => { + thisQuestions.push(this.normaliseQuestion(question)); }); return { @@ -283,6 +299,27 @@ export class AssessmentService { } } + /** + * filter submission by: + * - "submitter" as audience + * - "submitter" as audience && status as "published" + * @name isAccessible + * @param {object} question Single normalised assessment + * object from this.normalise above + */ + public isAccessible(question, status) { + let result = true; + if (question.audience.indexOf('submitter') === -1) { + result = false; + } + + if (result && status === 'published') { + result = false; + } + + return result; + } + /* turn "AssessmentGroupQuestion" array format from: { @@ -326,18 +363,19 @@ export class AssessmentService { }); return { - id: question.id, + id: question.id, // unknown purpose (be careful with this id) assessment_id: question.assessment_question_id, - question_id: question.assessment_question_id, + question_id: question.assessment_question_id, // use this to indicate question group_id: question.assessment_group_id, name: thisQuestion.name, type: thisQuestion.question_type, audience: thisQuestion.audience, + description: thisQuestion.description, file_type: thisQuestion.file_type, required: thisQuestion.is_required, choices: choices, order: question.order, - answer: thisQuestion.answer + answer: thisQuestion.answer, }; } @@ -379,4 +417,100 @@ export class AssessmentService { weight: choice.weight }; } + + /** + * hardcode communication to different server + * @param {[type]} assessment_id [description] + */ + public getPostProgramAssessment(assessment_id) { + // let url = `${this.prefixUrl}api/assessments.json?assessment_id=${assessment_id}&structured=true`; + // let headers = new Headers(); + // headers.append('appkey', this.appkey); + // headers.append('apikey', this.cacheService.getLocalObject('apikey')); + // headers.append('timelineID', this.cacheService.getLocalObject('timelineID')); + return this.request.get(`api/assessments.json?assessment_id=${assessment_id}&structured=true`); + } + + // helpers + public getStatus(questionsResult, submissionResult): string { + let questionsStatus = []; + _.forEach(questionsResult, q => { + if (q.required && q.answer !== null) { + if ( + q.reviewerAnswer !== null && + submissionResult.status !== 'pending approval' && + (q.reviewerAnswer.answer || q.reviewerAnswer.comment) + ) { + questionsStatus.push('reviewed'); + } else { + questionsStatus.push('completed'); + } + } + + if (!q.required && q.answer !== null) { + if ( + q.reviewerAnswer !== null && + submissionResult.status !== 'pending approval' && + (q.reviewerAnswer.answer || q.reviewerAnswer.comment) + ) { + questionsStatus.push('reviewed'); + } else { + questionsStatus.push('completed'); + } + } + + if (q.answer === null) { + questionsStatus.push('incomplete'); + } + }); + + // get final status by checking all questions' statuses + let status = 'incomplete'; + if (_.every(questionsStatus, (v) => { + return (v === 'completed'); + })) { + status = 'completed'; + } + if (_.includes(questionsStatus, 'reviewed')) { + status = 'reviewed'; + } + + return status; + } + + public getSummaries(questionsResult: Array) { + let totalRequiredQuestions = 0; + let answeredQuestions = 0; + let reviewerFeedback = 0; + + _.forEach(questionsResult, (q) => { + // get total number of questions + if (q.required) { + totalRequiredQuestions += 1; + } + + // get total number of answered questions + if (q.required && q.answer && q.answer !== null) { + answeredQuestions += 1; + } + + // get total number of feedback + // If API response, the reviewer's answer and comment are empty, + // front-end don't consider it as a feedback + if ( + q.reviewerAnswer && + q.reviewerAnswer !== null && + !_.isEmpty(q.reviewerAnswer.answer) && + !_.isEmpty(q.reviewerAnswer.comment) + ) { + reviewerFeedback += 1; + } + }); + + return { + totalRequiredQuestions, + answeredQuestions, + reviewerFeedback + }; + } } diff --git a/src/services/submission.service.ts b/src/services/submission.service.ts index 9371f079..47574abb 100755 --- a/src/services/submission.service.ts +++ b/src/services/submission.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@angular/core'; import { RequestService } from '../shared/request/request.service'; +import { Observable } from 'rxjs/Observable'; import * as _ from 'lodash'; import * as moment from 'moment'; @@ -211,7 +212,7 @@ export class SubmissionService { * extract reference IDs and prepare Observables to retrieve submissions * @param {array} references References array responded with get_activities() api */ - public getSubmissionsByReferences(references) { + public getSubmissionsByReferences(references: Array<{context_id : Number}>): Array> { let tasks = []; // multiple API requests // get_submissions API to retrieve submitted answer From e4a11c033d220d8b2846e35dc800e211915f1b96 Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Mon, 2 Oct 2017 16:53:48 +0800 Subject: [PATCH 02/23] Fix render error problem [ISDK-75] --- .../assessments/group/assessments-group.html | 21 +- .../group/assessments-group.page.ts | 227 ++++++++---------- 2 files changed, 108 insertions(+), 140 deletions(-) diff --git a/src/pages/assessments/group/assessments-group.html b/src/pages/assessments/group/assessments-group.html index 43f8bcd9..dc0b3ad5 100644 --- a/src/pages/assessments/group/assessments-group.html +++ b/src/pages/assessments/group/assessments-group.html @@ -16,12 +16,13 @@ - +
{{assessmentGroup.name}}
-

+
@@ -30,43 +31,39 @@
{{assessmentGroup.name}}
* - +

-
-
{{ submission | json }}
-
- - +
diff --git a/src/pages/assessments/group/assessments-group.page.ts b/src/pages/assessments/group/assessments-group.page.ts index 7f434f9f..d868be9d 100644 --- a/src/pages/assessments/group/assessments-group.page.ts +++ b/src/pages/assessments/group/assessments-group.page.ts @@ -1,16 +1,15 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { NavParams, NavController, AlertController, LoadingController, Events } from 'ionic-angular'; import { FormBuilder, Validators, FormGroup, FormControl, FormArray } from '@angular/forms'; import { CacheService } from '../../../shared/cache/cache.service'; import { ChoiceBase, QuestionBase, Submission, AssessmentService } from '../../../services/assessment.service'; import * as _ from 'lodash'; - @Component({ selector: 'assessments-group-page', templateUrl: './assessments-group.html', }) -export class AssessmentsGroupPage { +export class AssessmentsGroupPage implements OnInit { questions = []; formGroup; @@ -40,7 +39,7 @@ export class AssessmentsGroupPage { public events: Events ) {} - ionViewDidEnter() { + ngOnInit() { // navigate from activity page this.activity = this.navParams.get('activity') || {}; @@ -49,15 +48,15 @@ export class AssessmentsGroupPage { if (!_.isEmpty(this.event)) { this.activity = this.event; } + } - this.assessment = this.activity.assessment; // required for context_id - this.cacheKey = `assessment.group.${this.assessment.context_id}`; + ionViewDidEnter() { + // use assessment object from activity (required for extracting context_id) + this.assessment = this.activity.assessment; + this.cacheKey = `assessment.group.${this.assessment.context_id}`; this.assessmentGroup = this.navParams.get('assessmentGroup') || {}; this.submission = this.navParams.get('submission') || {}; - - console.log('this.assessmentGroup', this.assessmentGroup); - // preset key used for caching later (locally and remote data) this.canUpdateInput = this.isInputEditable(this.submission); // this.published = this.assessmentService.isPublished(this.submissions); @@ -69,6 +68,10 @@ export class AssessmentsGroupPage { ); } + /** + * @name updateSubmission + * @description trace changes of input for assessment (to avoid extra checking logics) + */ updateSubmission() { this.events.publish('assessment:changes', { changed: true @@ -86,22 +89,6 @@ export class AssessmentsGroupPage { return true; } return false; - // let editable = false; - // _.forEach(this.submissions, (submission) => { - // if (_.isEmpty(submission)) { - // editable = true; - // } else { - // _.forEach(submission, (subm) => { - // if ( - // subm.AssessmentSubmission && - // subm.AssessmentSubmission.status === 'in progress' - // ) { - // editable = true; - // } - // }); - // } - // }); - // return editable; } /** @@ -116,24 +103,32 @@ export class AssessmentsGroupPage { } _.forEach(submission.review, (review) => { + _.forEach(questions, (question, idx) => { - if (review.assessment_question_id === question.id) { - // text type + if (review.assessment_question_id === question.question_id) { + // text type (no merging, text question displayed in plain text) if (question.type === 'text') { questions[idx].review_answer = review; } // oneof type + // combine question, when answered by both reviewer and submitter if (question.type === 'oneof') { questions[idx].review_answer = review; + let submitterAnswer = question.answer; + _.forEach(question.choices, (choice, key) => { - if (choice.id == review.answer && choice.id == question.answer.answer) { - questions[idx].choices[key].name = choice.name + ' (you and reviewer)'; - } - if (choice.id != review.answer && choice.id == question.answer.answer) { - questions[idx].choices[key].name = choice.name + ' (you)'; - } - if (choice.id == review.answer && choice.id != question.answer.answer) { + if (!_.isEmpty(submitterAnswer)) { + if (choice.id == review.answer && choice.id == submitterAnswer.answer) { + questions[idx].choices[key].name = choice.name + ' (you and reviewer)'; + } + else if (choice.id != review.answer && choice.id == submitterAnswer.answer) { + questions[idx].choices[key].name = choice.name + ' (you)'; + } + else if (choice.id == review.answer && choice.id != submitterAnswer.answer) { + questions[idx].choices[key].name = choice.name + ' (reviewer)'; + } + } else if (choice.id == review.answer) { // display reviewer answer questions[idx].choices[key].name = choice.name + ' (reviewer)'; } }); @@ -142,39 +137,6 @@ export class AssessmentsGroupPage { }); }); - // _.forEach(submissions, (submission) => { - // _.forEach(submission, (subm) => { - // - // _.forEach(subm.AssessmentReviewAnswer, (reviewAnswer) => { - // _.forEach(questions, (question, idx) => { - // - // if (reviewAnswer.assessment_question_id === question.id) { - // // text type - // if (question.type === 'text') { - // questions[idx].review_answer = reviewAnswer; - // } - // - // // oneof type - // if (question.type === 'oneof') { - // questions[idx].review_answer = reviewAnswer; - // _.forEach(question.choices, (choice, key) => { - // if (choice.id == reviewAnswer.answer && choice.id == question.answer.answer) { - // questions[idx].choices[key].name = choice.name + ' (you and reviewer)'; - // } - // if (choice.id != reviewAnswer.answer && choice.id == question.answer.answer) { - // questions[idx].choices[key].name = choice.name + ' (you)'; - // } - // if (choice.id == reviewAnswer.answer && choice.id != question.answer.answer) { - // questions[idx].choices[key].name = choice.name + ' (reviewer)'; - // } - // }); - // } - // } - // - // }); - // }); - // }); - // }); return questions; } @@ -236,7 +198,14 @@ export class AssessmentsGroupPage { group['choices'] = new FormGroup(choices); } - result[question.id] = new FormGroup(group); + /** + * id and question_id are different id + * - id = has no obvious purpose + * - question_id must be used as id for submission + * + * but for case like this just for index id + */ + result[question.question_id] = new FormGroup(group); }); return result; @@ -262,22 +231,31 @@ export class AssessmentsGroupPage { return { Assessment: { - id: submission.assessment_id, - context_id: this.getSubmissionContext() + id: submission.assessment_id, + context_id: this.getSubmissionContext() }, AssessmentSubmissionAnswer: answers }; } /** - * @description store assessment answer/progress locally + * @name storeProgress + * @description store assessment answer/progress locally (offline) + * @example format for cached submission + * { + * Assessment: { + * id: 1, + * context_id: 2 + * }, + * AssessmentSubmissionAnswer: Array + * } */ storeProgress = () => { let answers = {}; - _.forEach(this.formGroup, (question, id) => { + _.forEach(this.formGroup, (question, question_id) => { let values = question.getRawValue(), answer = { - assessment_question_id: id, + assessment_question_id: question_id, answer: values.answer || values.comment, // store it if choice answer is available or skip @@ -286,7 +264,7 @@ export class AssessmentsGroupPage { // set empty string to remove answer answer.answer = (answer.answer) ? answer.answer : ''; - answers[id] = answer; + answers[question_id] = answer; }); // final step - store submission locally @@ -308,18 +286,17 @@ export class AssessmentsGroupPage { * @description retrieve saved progress from localStorage */ retrieveProgress = (questions: Array, answers?) => { - let cachedProgress = answers || {}; //this.cache.getLocalObject(this.cacheKey); - - let newQuestions = questions; - let savedProgress = cachedProgress.AssessmentSubmissionAnswer; + let cachedProgress = answers || {}, + newQuestions = questions, + savedProgress = cachedProgress.AssessmentSubmissionAnswer; if (!_.isEmpty(savedProgress)) { - // index "id" is set as question.id in @Function buildFormGroup above - _.forEach(newQuestions, (question, id) => { + // index "id" is set as question.question_id in @Function buildFormGroup above + _.forEach(newQuestions, (question, question_id) => { // check integrity of saved answer (question might get updated) - if (savedProgress[id] && savedProgress[id].assessment_question_id == id) { - newQuestions[id] = this.setValueWith(question, savedProgress[id]); + if (savedProgress[question_id] && savedProgress[question_id].assessment_question_id == question_id) { + newQuestions[question_id] = this.setValueWith(question, savedProgress[question_id]); } }); } @@ -347,58 +324,52 @@ export class AssessmentsGroupPage { } /** - * @description initiate save progress and return to previous page/navigation stack + * @name save + * @description save input (partially post submission) and + * return to previous navigation stack */ save() { let self = this, - loading = this.loadingCtrl.create({ - content: 'Loading...' - }), - // to provide a more descriptive error message (if available) - failAlert = this.alertCtrl.create({ - title: 'Fail to submit.' - }); - - let saveProgress = () => { - this.updateSubmission(); - - loading.present().then(() => { - self.assessmentService.save(self.storeProgress()).subscribe( - response => { - loading.dismiss().then(() => { - self.navCtrl.pop(); - }); - }, - reject => { - loading.dismiss().then(() => { - failAlert.data.title = reject.msg || failAlert.data.title; - failAlert.present().then(() => { - console.log('Unable to save', reject); + loading = this.loadingCtrl.create({ + content: 'Loading...' + }), + // to provide a more descriptive error message (if available) + failAlert = this.alertCtrl.create({ + title: 'Fail to submit.' + }), + saveProgress = () => { + this.updateSubmission(); + + loading.present().then(() => { + self.assessmentService.save(self.storeProgress()).subscribe( + response => { + loading.dismiss().then(() => { + self.navCtrl.pop(); }); - }); - } - ); + }, + reject => { + loading.dismiss().then(() => { + failAlert.data.title = reject.msg || failAlert.data.title; + failAlert.present().then(() => { + console.log('Unable to save', reject); + }); + }); + } + ); + }); + }, + confirmBox = this.alertCtrl.create({ + message: 'You have not completed all required questions. Do you still wish to Save?', + buttons: [ + { + text: 'Yes', + handler: saveProgress + }, + 'No' + ] }); - }; - - let confirmBox = this.alertCtrl.create({ - message: 'You have not completed all required questions. Do you still wish to Save?', - buttons: [ - { - text: 'Yes', - handler: () => { - saveProgress(); - } - }, - { - text: 'No', - handler: () => { - //return false; - } - } - ] - }); + // has all compulsory questions answered? if (!this.isAllQuestionsAnswered()) { confirmBox.present(); } else { From 4d80266904c7f6acb897dd148e0ab33b457d3609 Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Mon, 2 Oct 2017 17:04:59 +0800 Subject: [PATCH 03/23] Fix problem unable to submit [ISDK-75] --- src/pages/assessments/assessments.html | 10 +- src/pages/assessments/assessments.page.ts | 503 ++++++++++------------ 2 files changed, 234 insertions(+), 279 deletions(-) diff --git a/src/pages/assessments/assessments.html b/src/pages/assessments/assessments.html index 02d56f6b..bb0fe09f 100644 --- a/src/pages/assessments/assessments.html +++ b/src/pages/assessments/assessments.html @@ -1,7 +1,6 @@ - - + + + + + Hide name in rankings + + @@ -22,9 +23,17 @@ {{ 'SETTINGS.SUPPORT' | translate }} + + {{ 'SETTINGS.HELP' | translate }} +
+ From ae838eea0eaf17ff66b32db81933ede3207cd14d Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Mon, 30 Oct 2017 14:15:31 +0800 Subject: [PATCH 15/23] Allow trigger hide name in setting [ISDK-84] --- src/pages/settings/settings.html | 5 +- src/pages/settings/settings.page.ts | 87 +++++++++++++++++++++++++---- 2 files changed, 78 insertions(+), 14 deletions(-) diff --git a/src/pages/settings/settings.html b/src/pages/settings/settings.html index 2f571164..799dc693 100644 --- a/src/pages/settings/settings.html +++ b/src/pages/settings/settings.html @@ -10,14 +10,11 @@ - + Hide name in rankings - diff --git a/src/pages/settings/settings.page.ts b/src/pages/settings/settings.page.ts index c859ab29..98706c10 100644 --- a/src/pages/settings/settings.page.ts +++ b/src/pages/settings/settings.page.ts @@ -1,8 +1,9 @@ import { Component } from '@angular/core'; -import { App, NavController, MenuController, LoadingController } from 'ionic-angular'; +import { App, NavController, MenuController, LoadingController, AlertController } from 'ionic-angular'; // services import { CacheService } from '../../shared/cache/cache.service'; +import { GameService } from '../../services/game.service'; // pages import { LeaderboardSettingsPage } from '../settings/leaderboard/leaderboard-settings.page'; import { LoginPage } from '../../pages/login/login'; @@ -10,7 +11,7 @@ import { TutorialPage } from '../settings/tutorial/tutorial.page'; import { TermConditionPage } from '../term-condition/term-condition.page'; // Others import { TranslationService } from '../../shared/translation/translation.service'; -import { loadingMessages, errMessages } from '../../app/messages'; +import { loadingMessages } from '../../app/messages'; @Component({ selector: 'settings-page', @@ -18,24 +19,90 @@ import { loadingMessages, errMessages } from '../../app/messages'; }) export class SettingsPage { helpline: string = "help@practera.com"; + hideName: boolean = false; logoutMessage: any = loadingMessages.Logout.logout; settings: any = []; constructor( - public cache: CacheService, + public appCtrl: App, + public alertCtrl: AlertController, + public cacheService: CacheService, + public gameService: GameService, + public loadingCtrl: LoadingController, public menuCtrl: MenuController, public navCtrl: NavController, - public loadingCtrl: LoadingController, public translationService: TranslationService, - public appCtrl: App ) {} - getUserEmail() { - return this.cache.getLocalObject('email') || ''; + ionViewWillEnter(){ + this.preload(); + } + + preload() { + const loading = this.loadingCtrl.create({ + content: 'Loading' + }); + loading.present(); + + let gameId = this.cacheService.getLocalObject('game_id'); + this.gameService.getCharacters(gameId) + .subscribe((characters) => { + let me = characters.Characters[0]; + if(me.meta == null) { + this.hideName = false; + } + if(me.meta != null){ + if (me.meta.private === 0) { + this.hideName = false; + } else { + this.hideName = true; + } + } + loading.dismiss(); + }, (err) => { + loading.dismiss(); + }); + } + + triggerHideName() { + const showAlert = (msg) => { + let alert = this.alertCtrl.create({ + subTitle: msg, + buttons: ['OK'] + }); + alert.present(); + } + + const loader = this.loadingCtrl.create({ + content: 'Updating' + }); + + loader.present().then(() => { + this.gameService.postCharacter({ + Character: { + id: this.cacheService.getLocalObject('character_id'), + meta: { + private: (this.hideName) ? 1 : 0 + } + } + }) + .subscribe((result) => { + loader.dismiss(); + let msg = 'You name will now be hidden if in the ranking'; + if (!this.hideName) { + msg = 'Your name will now be displayed if in the ranking'; + } + showAlert(msg); + }, (err) => { + this.hideName = !this.hideName; + showAlert('Unabled to change your privacy setting.'); + loader.dismiss(); + }); + }); } - goLeaderBoardSettings(){ - this.navCtrl.push(LeaderboardSettingsPage); + getUserEmail() { + return this.cacheService.getLocalObject('email') || ''; } goToTutorial() { @@ -52,7 +119,7 @@ export class SettingsPage { content: this.logoutMessage }); loader.present().then(() => { - this.cache.clear().then(() => { + this.cacheService.clear().then(() => { localStorage.clear(); window.location.reload(); // the reason of doing this is because of we need to refresh page content instead of API data cache issue occurs loader.dismiss(); From f8c6baa419e8bf7a0e90f4702e0d8ecd4d5f14ea Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Mon, 30 Oct 2017 14:17:59 +0800 Subject: [PATCH 16/23] Remove unused import [ISDK-84] --- src/pages/settings/settings.page.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/settings/settings.page.ts b/src/pages/settings/settings.page.ts index 98706c10..d5887e4b 100644 --- a/src/pages/settings/settings.page.ts +++ b/src/pages/settings/settings.page.ts @@ -5,7 +5,6 @@ import { App, NavController, MenuController, LoadingController, AlertController import { CacheService } from '../../shared/cache/cache.service'; import { GameService } from '../../services/game.service'; // pages -import { LeaderboardSettingsPage } from '../settings/leaderboard/leaderboard-settings.page'; import { LoginPage } from '../../pages/login/login'; import { TutorialPage } from '../settings/tutorial/tutorial.page'; import { TermConditionPage } from '../term-condition/term-condition.page'; From 550c5c64bd133412c7c939f065fbdb62d629801a Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Wed, 1 Nov 2017 09:41:01 +0800 Subject: [PATCH 17/23] Remove useless setting for ranking [ISDK-84] --- src/app/app.module.ts | 3 --- .../leaderboard/leaderboard-settings.html | 16 ---------------- .../leaderboard/leaderboard-settings.page.ts | 18 ------------------ src/theme/main.styles.theme.scss | 1 - src/theme/pages/settings/leaderboard.scss | 15 --------------- 5 files changed, 53 deletions(-) delete mode 100644 src/pages/settings/leaderboard/leaderboard-settings.html delete mode 100644 src/pages/settings/leaderboard/leaderboard-settings.page.ts delete mode 100644 src/theme/pages/settings/leaderboard.scss diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e948617f..4c7db13b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -70,7 +70,6 @@ import { EventsViewPage } from '../pages/events/view/events-view.page'; import { ForgetPasswordPage } from '../pages/forget-password/forget-password'; import { GalleryPage } from '../pages/gallery/gallery.page'; import { ItemsPopupPage } from '../pages/assessments/popup/items-popup.page'; -import { LeaderboardSettingsPage } from '../pages/settings/leaderboard/leaderboard-settings.page'; import { LevelsListPage } from '../pages/levels/list/list'; import { LoginPage } from '../pages/login/login'; import { MagicLinkPage } from '../pages/magic-link/magic-link'; @@ -122,7 +121,6 @@ export function HttpLoaderFactory(http: Http) { ForgetPasswordPage, GalleryPage, ItemsPopupPage, - LeaderboardSettingsPage, LevelComponent, LevelsListPage, LoadingMarkerComponent, @@ -237,7 +235,6 @@ export function HttpLoaderFactory(http: Http) { ForgetPasswordPage, ItemsPopupPage, GalleryPage, - LeaderboardSettingsPage, LevelComponent, LevelsListPage, LoadingMarkerComponent, diff --git a/src/pages/settings/leaderboard/leaderboard-settings.html b/src/pages/settings/leaderboard/leaderboard-settings.html deleted file mode 100644 index 6ce93c66..00000000 --- a/src/pages/settings/leaderboard/leaderboard-settings.html +++ /dev/null @@ -1,16 +0,0 @@ - - - {{ 'SETTINGS.LEADERBOARD' | translate }} - - - - - -

Hi {{ username }} ({{ useremail }}),

-
- -

Hide name in leaderboard?

- -
-
-
\ No newline at end of file diff --git a/src/pages/settings/leaderboard/leaderboard-settings.page.ts b/src/pages/settings/leaderboard/leaderboard-settings.page.ts deleted file mode 100644 index 69798990..00000000 --- a/src/pages/settings/leaderboard/leaderboard-settings.page.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Component } from '@angular/core'; - -// services -import { CacheService } from '../../../shared/cache/cache.service'; - -@Component({ - selector: 'leaderboard-settings-page', - templateUrl: 'leaderboard-settings.html' -}) -export class LeaderboardSettingsPage { - isHide: boolean = false; - useremail: string = this.cacheService.getLocalObject('email') || ''; - username: string = this.cacheService.getLocalObject('name') || ''; - - constructor( - public cacheService: CacheService - ) {} -} diff --git a/src/theme/main.styles.theme.scss b/src/theme/main.styles.theme.scss index e3706265..1e65b890 100755 --- a/src/theme/main.styles.theme.scss +++ b/src/theme/main.styles.theme.scss @@ -30,7 +30,6 @@ @import "./pages/rankings/view-ranking-details"; // Settings -@import "./pages/settings/leaderboard"; @import "./pages/settings/tutorial"; @import "./pages/settings/settings"; diff --git a/src/theme/pages/settings/leaderboard.scss b/src/theme/pages/settings/leaderboard.scss deleted file mode 100644 index 3f4261df..00000000 --- a/src/theme/pages/settings/leaderboard.scss +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @description - * - leaderboard settings page styling - * @page - * - pages/settings/leaderboard/leaderboard-settings.html - */ - -.leaderboard-settings { - .hide-settings { - padding: 0; - margin: 0; - display: flex; - align-items: center; - } -} From f9a451a49bbff9fe91a6ea585696e1774c94770e Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Thu, 2 Nov 2017 11:20:23 +0800 Subject: [PATCH 18/23] Remove ranking setting page [ISDK-84] --- src/pages/settings/leaderboard/leaderboard-settings.page.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/pages/settings/leaderboard/leaderboard-settings.page.ts diff --git a/src/pages/settings/leaderboard/leaderboard-settings.page.ts b/src/pages/settings/leaderboard/leaderboard-settings.page.ts deleted file mode 100644 index e69de29b..00000000 From 168a933835b311b5a17e7c20fa28fc1f00eef9d3 Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Mon, 6 Nov 2017 16:28:15 +0800 Subject: [PATCH 19/23] Support load tabs from remote config [ISDK-80] --- src/pages/login/login.ts | 2 +- src/pages/tabs/tabs.page.ts | 4 +-- src/shared/app-config/app-config.service.ts | 31 ++++++++++++--------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/pages/login/login.ts b/src/pages/login/login.ts index ec5a4783..301c3ff2 100644 --- a/src/pages/login/login.ts +++ b/src/pages/login/login.ts @@ -90,10 +90,10 @@ export class LoginPage { this.authService.loginAuth(this.email, this.password) .subscribe(data => { self.cacheService.setLocal('apikey', data.apikey); - // saved for 3 types of timeline id in order for later use self.cacheService.setLocal('timelineID', data.Timelines[0].Timeline.id); self.cacheService.setLocal('teams', data.Teams); self.cacheService.setLocal('gotNewItems', false); + self.cacheService.setLocal('appConfig', data.Experience.config || {}); // get game_id data after login this.gameService.getGames() .subscribe(data => { diff --git a/src/pages/tabs/tabs.page.ts b/src/pages/tabs/tabs.page.ts index dd6f6c46..847afcbc 100644 --- a/src/pages/tabs/tabs.page.ts +++ b/src/pages/tabs/tabs.page.ts @@ -25,8 +25,6 @@ export class TabsPage { ) {} ionViewWillEnter() { - this.appConfig.getTabs().then(modules => { - this.tabs = modules; - }); + this.tabs = this.appConfig.getTabs(); } } diff --git a/src/shared/app-config/app-config.service.ts b/src/shared/app-config/app-config.service.ts index 35f07bd5..10262164 100644 --- a/src/shared/app-config/app-config.service.ts +++ b/src/shared/app-config/app-config.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { CacheService } from '../cache/cache.service'; // Pages import { EventsListPage } from '../../pages/events/list/list.page'; @@ -50,26 +51,30 @@ export class AppConfigService { } }; + constructor ( + private cacheService: CacheService + ) {} + /** - * @description Get raw configure data from server + * @description Get full configure data */ - get(): Promise { - return new Promise((resolve, reject) => { - resolve(this.appConfigContent); - }); + get(): any { + return this.cacheService.getLocal('appConfig'); } /** * @description Get only configure for tabs */ - getTabs(): Promise { - return this.get().then((data: any) => { - return _.sortBy(data.tabs, [(o) => o.order]); - }).then((data: any) => { - return _.map(data, (o) => { - o.root = this.pagesMap[o.name]; - return o; - }); + getTabs(): any { + let appConfig: any = this.cacheService.getLocal('appConfig'); + if (!appConfig.tabs) { + return appConfig.tabs; + } + + let modules = _.sortBy(appConfig.tabs, [(o) => o.order]); + return _.map(modules, (o) => { + o.root = this.pagesMap[o.name]; + return o; }); } } From 403ece91c399ff28476e03c9bc732826a4be30e2 Mon Sep 17 00:00:00 2001 From: Kven Ho Date: Tue, 7 Nov 2017 11:45:38 +0800 Subject: [PATCH 20/23] Merge branch 'develop' into feature/ISDK-84/ranking-service # Conflicts: # src/app/app.module.ts # src/pages/forget-password/forget-password.ts # src/pages/login/login.ts # src/pages/registration/register.page.ts # src/pages/registration/registration.page.ts # src/pages/reset-password/reset-password.ts # src/pages/term-condition/term-condition.page.ts --- package-lock.json | 2403 ++++++++++++----- package.json | 8 +- src/app/app.component.ts | 5 +- src/app/app.module.ts | 39 +- src/app/messages.ts | 11 +- src/assets/i18n-en.json | 7 +- src/configs/config.ts.default | 9 - .../forget-password/forget-password.html | 12 +- src/pages/forget-password/forget-password.ts | 82 +- src/pages/login/login.html | 15 +- src/pages/login/login.ts | 75 +- src/pages/magic-link/magic-link.ts | 33 +- src/pages/registration/register.html | 62 +- src/pages/registration/register.page.ts | 234 +- .../terms-conditions/terms-conditions.html | 55 + .../terms-conditions/terms-conditions.page.ts | 17 + src/pages/reset-password/reset-password.html | 33 +- src/pages/reset-password/reset-password.ts | 128 +- src/pages/settings/settings.page.ts | 8 +- src/pages/settings/tutorial/tutorial.html | 8 +- src/pages/term-condition/term-condition.html | 32 - src/pages/term-condition/term-condition.scss | 27 - .../term-condition/term-content.component.ts | 104 - src/services/auth.service.spec.ts | 121 + src/services/auth.service.ts | 15 - src/shared/cache/cache.component.ts | 22 + src/shared/cache/cache.module.spec.ts | 52 +- src/shared/request/request.service.ts | 2 +- .../testModules/pages/test/test-start.page.ts | 4 +- .../default-center-container.scss | 7 +- .../pages/authenticate/login-container.scss | 11 - .../pages/authenticate/login-module.scss | 39 +- test-config/karma.conf.js | 5 +- yarn.lock | 243 +- 34 files changed, 2676 insertions(+), 1252 deletions(-) delete mode 100644 src/configs/config.ts.default create mode 100644 src/pages/registration/terms-conditions/terms-conditions.html create mode 100644 src/pages/registration/terms-conditions/terms-conditions.page.ts delete mode 100644 src/pages/term-condition/term-condition.html delete mode 100644 src/pages/term-condition/term-condition.scss delete mode 100755 src/pages/term-condition/term-content.component.ts create mode 100644 src/services/auth.service.spec.ts create mode 100644 src/shared/cache/cache.component.ts mode change 100755 => 100644 src/shared/cache/cache.module.spec.ts diff --git a/package-lock.json b/package-lock.json index 4bade911..0e090944 100644 --- a/package-lock.json +++ b/package-lock.json @@ -160,7 +160,7 @@ "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, "component-emitter": { @@ -277,9 +277,9 @@ } }, "@ngx-translate/core": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-7.0.0.tgz", - "integrity": "sha1-W29jvUBCFk1EzYX2hwOvluk5Ln0=" + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-7.2.2.tgz", + "integrity": "sha1-5wBp1e+Og36jNuaJB3N4b177XeU=" }, "@ngx-translate/http-loader": { "version": "0.1.0", @@ -287,9 +287,9 @@ "integrity": "sha1-YCkyVWHXho/jJaQZ3idw6Y/xUC4=" }, "@types/jasmine": { - "version": "2.5.53", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.53.tgz", - "integrity": "sha512-2YNL0jXYuN7w07mb1sMZQ6T6zOvGi83v8UbjhBZ8mhvI1VkQ2STU9XOrTFyvWswMyh5rW1evS+e7qltYJvTqPA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.6.2.tgz", + "integrity": "sha512-MycZLb931+dfAUzz27JeIOrvKjqyWUk27PhJzYWpIJ9nEyPi2bb1AOc/X9bvmvYnekpNrGNqYXwvoXMmpaeoCw==", "dev": true }, "@types/localforage": { @@ -298,9 +298,9 @@ "integrity": "sha1-PWCmv23aOOP4pGlhFZg3nx9klQk=" }, "@types/node": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.39.tgz", - "integrity": "sha512-KQHAZeVsk4UIT9XaR6cn4WpHZzimK6UBD1UomQKfQQFmTlUHaNBzeuov+TM4+kigLO0IJt4I5OOsshcCyA9gSA==", + "version": "8.0.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.47.tgz", + "integrity": "sha512-kOwL746WVvt/9Phf6/JgX/bsGQvbrK5iUgzyfwZNcKVFcjAUVSpF9HxevLTld2SG9aywYHOILj38arDdY1r/iQ==", "dev": true }, "@types/q": { @@ -316,9 +316,10 @@ "dev": true }, "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "abstract-leveldown": { "version": "0.12.4", @@ -338,12 +339,12 @@ } }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "dev": true, "requires": { - "mime-types": "2.1.15", + "mime-types": "2.1.17", "negotiator": "0.6.1" } }, @@ -370,9 +371,9 @@ } }, "adm-zip": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", "dev": true }, "after": { @@ -400,12 +401,14 @@ } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.4.tgz", + "integrity": "sha1-Pa+ai2ciEpn9ro2C0RftjmyAJEs=", "dev": true, "requires": { "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", "json-stable-stringify": "1.0.1" } }, @@ -441,7 +444,7 @@ "resolved": "https://registry.npmjs.org/angular2-moment/-/angular2-moment-1.4.0.tgz", "integrity": "sha1-PVnB68KJNPz+m4iKtGHiYXJJh+g=", "requires": { - "moment": "2.18.1" + "moment": "2.19.1" } }, "angular2-template-loader": { @@ -459,7 +462,7 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "3.1.3", + "big.js": "3.2.0", "emojis-list": "2.1.0", "json5": "0.5.1", "object-assign": "4.1.1" @@ -470,7 +473,8 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "3.2.0", @@ -482,19 +486,29 @@ } }, "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" } }, "aproba": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", - "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "archiver-utils": { "version": "1.3.0", @@ -546,6 +560,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, "requires": { "delegates": "1.0.0", "readable-stream": "2.3.3" @@ -554,12 +569,14 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -574,12 +591,22 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, "requires": { "safe-buffer": "5.1.1" } } } }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -649,7 +676,8 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "asn1.js": { "version": "4.9.1", @@ -672,9 +700,9 @@ } }, "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "ast-types": { @@ -765,13 +793,19 @@ "requires": { "has-flag": "2.0.0" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, "aws4": { @@ -836,6 +870,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -851,15 +886,15 @@ } }, "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, "binary-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", - "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", "dev": true }, "bl": { @@ -896,9 +931,9 @@ } }, "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, "bn.js": { @@ -920,58 +955,56 @@ } }, "body-parser": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "dev": true, "requires": { - "bytes": "2.4.0", - "content-type": "1.0.2", - "debug": "2.6.7", - "depd": "1.1.0", - "http-errors": "1.6.1", - "iconv-lite": "0.4.15", + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", "on-finished": "2.3.0", - "qs": "6.4.0", - "raw-body": "2.2.0", + "qs": "6.5.1", + "raw-body": "2.3.2", "type-is": "1.6.15" }, "dependencies": { "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true }, "raw-body": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", "dev": true, "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.15", + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", "unpipe": "1.0.0" } } } }, "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "brace-expansion": { @@ -1176,7 +1209,7 @@ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "no-case": "2.3.1", + "no-case": "2.3.2", "upper-case": "1.1.3" } }, @@ -1251,7 +1284,7 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.0", + "anymatch": "1.3.2", "async-each": "1.0.1", "fsevents": "1.1.2", "glob-parent": "2.0.0", @@ -1312,9 +1345,9 @@ } }, "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, "cliui": { @@ -1343,7 +1376,8 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.0", @@ -1397,9 +1431,9 @@ "dev": true }, "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "component-inherit": { @@ -1409,9 +1443,9 @@ "dev": true }, "compress-commons": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz", - "integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { "buffer-crc32": "0.2.13", @@ -1502,25 +1536,22 @@ } }, "connect": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", - "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", + "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", "dev": true, "requires": { - "debug": "2.6.7", - "finalhandler": "1.0.3", - "parseurl": "1.3.1", - "utils-merge": "1.0.0" + "debug": "2.6.9", + "finalhandler": "1.0.6", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" }, "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true } } }, @@ -1536,7 +1567,8 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true }, "constants-browserify": { "version": "1.0.0", @@ -1551,9 +1583,9 @@ "dev": true }, "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "continuable-cache": { @@ -1581,9 +1613,9 @@ "dev": true }, "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", "dev": true }, "core-util-is": { @@ -1592,9 +1624,9 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "crc": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", - "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", "dev": true }, "crc32-stream": { @@ -1603,7 +1635,7 @@ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "crc": "3.4.4", + "crc": "3.5.0", "readable-stream": "2.3.3" }, "dependencies": { @@ -1683,16 +1715,27 @@ "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", - "which": "1.2.14" + "which": "1.3.0" } }, "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } } }, "crypto-browserify": { @@ -1752,15 +1795,9 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "date-now": { @@ -1770,9 +1807,9 @@ "dev": true }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -1784,12 +1821,14 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, - "optional": true + "requires": { + "strip-bom": "2.0.0" + } }, "deferred-leveldown": { "version": "0.2.0", @@ -1812,7 +1851,7 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "delayed-stream": { @@ -1824,12 +1863,13 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true }, "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", "dev": true }, "des.js": { @@ -1855,9 +1895,9 @@ "dev": true }, "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", "dev": true }, "diffie-hellman": { @@ -1911,6 +1951,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -1995,6 +2036,16 @@ "ws": "1.1.2" }, "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", @@ -2042,12 +2093,6 @@ "yeast": "0.1.2" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", @@ -2090,15 +2135,15 @@ } }, "enhanced-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { "graceful-fs": "4.1.11", "memory-fs": "0.4.1", "object-assign": "4.1.1", - "tapable": "0.2.7" + "tapable": "0.2.8" } }, "ent": { @@ -2180,6 +2225,12 @@ "event-emitter": "0.3.5" } }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", @@ -2233,8 +2284,8 @@ "requires": { "ast-types": "0.9.6", "esprima": "3.1.3", - "private": "0.1.7", - "source-map": "0.5.6" + "private": "0.1.8", + "source-map": "0.5.7" } } } @@ -2366,6 +2417,21 @@ "strip-eof": "1.0.0" } }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -2440,14 +2506,14 @@ "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", "dev": true, "requires": { - "accepts": "1.3.3", + "accepts": "1.3.4", "array-flatten": "1.1.1", "content-disposition": "0.5.2", - "content-type": "1.0.2", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.7", - "depd": "1.1.0", + "depd": "1.1.1", "encodeurl": "1.0.1", "escape-html": "1.0.3", "etag": "1.8.1", @@ -2456,7 +2522,7 @@ "merge-descriptors": "1.0.1", "methods": "1.1.2", "on-finished": "2.3.0", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", "proxy-addr": "1.1.5", "qs": "6.4.0", @@ -2494,22 +2560,14 @@ "dev": true }, "external-editor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", - "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", + "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", "dev": true, "requires": { - "iconv-lite": "0.4.18", - "jschardet": "1.5.0", - "tmp": "0.0.31" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", - "dev": true - } + "iconv-lite": "0.4.19", + "jschardet": "1.5.1", + "tmp": "0.0.33" } }, "extglob": { @@ -2522,9 +2580,9 @@ } }, "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, "falafel": { @@ -2556,7 +2614,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": "0.6.5" + "websocket-driver": "0.7.0" } }, "figures": { @@ -2574,6 +2632,16 @@ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.1", + "minimatch": "3.0.4" + } + }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", @@ -2588,29 +2656,18 @@ } }, "finalhandler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", - "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", "dev": true, "requires": { - "debug": "2.6.7", + "debug": "2.6.9", "encodeurl": "1.0.1", "escape-html": "1.0.3", "on-finished": "2.3.0", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "find-up": { @@ -2655,14 +2712,14 @@ "dev": true }, "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "mime-types": "2.1.17" } }, "formidable": { @@ -2716,92 +2773,895 @@ "dev": true, "optional": true, "requires": { - "nan": "2.6.2", + "nan": "2.7.0", "node-pre-gyp": "0.6.36" }, "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, - "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "tweetnacl": "0.14.5" } }, - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" + "inherits": "2.0.3" } }, - "sshpk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, "requires": { - "asn1": "0.2.3", + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", "assert-plus": "1.0.0", "bcrypt-pbkdf": "1.0.1", "dashdash": "1.14.1", "ecc-jsbn": "0.1.1", "getpass": "0.1.7", + "jodid25519": "1.0.2", "jsbn": "0.1.1", "tweetnacl": "0.14.5" }, "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "bundled": true, + "dev": true, + "optional": true } } }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, "string_decoder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "bundled": true, + "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" } }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, "uuid": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true } } }, @@ -2814,19 +3674,7 @@ "graceful-fs": "4.1.11", "inherits": "2.0.3", "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "rimraf": "2.6.2" } }, "fwd-stream": { @@ -2842,8 +3690,9 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, "requires": { - "aproba": "1.1.2", + "aproba": "1.2.0", "console-control-strings": "1.1.0", "has-unicode": "2.0.1", "object-assign": "4.1.1", @@ -2884,15 +3733,9 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "glob": { @@ -2980,20 +3823,102 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.2.4", + "har-schema": "2.0.0" } }, "has-ansi": { @@ -3029,7 +3954,8 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, "hash-base": { "version": "2.0.2", @@ -3051,15 +3977,15 @@ } }, "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.0.2" } }, "he": { @@ -3080,9 +4006,9 @@ } }, "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", "dev": true }, "hosted-git-info": { @@ -3099,50 +4025,56 @@ "requires": { "es6-templates": "0.2.3", "fastparse": "1.1.1", - "html-minifier": "3.5.3", + "html-minifier": "3.5.6", "loader-utils": "1.1.0", "object-assign": "4.1.1" } }, "html-minifier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.3.tgz", - "integrity": "sha512-iKRzQQDuTCsq0Ultbi/mfJJnR0D3AdZKTq966Gsp92xkmAPCV4Xi08qhJ0Dl3ZAWemSgJ7qZK+UsZc0gFqK6wg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.6.tgz", + "integrity": "sha512-88FjtKrlak2XjczhxrBomgzV4jmGzM3UnHRBScRkJcmcRum0kb+IwhVAETJ8AVp7j0p3xugjSaw9L+RmI5/QOA==", "dev": true, "requires": { "camel-case": "3.0.0", - "clean-css": "4.1.7", + "clean-css": "4.1.9", "commander": "2.11.0", "he": "1.1.1", "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.0.26" + "uglify-js": "3.1.5" }, "dependencies": { "clean-css": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.7.tgz", - "integrity": "sha1-ua6k+FZ5iJzz6ui0A0nsTr390DI=", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "source-map": "0.5.6" + "source-map": "0.5.7" } } } }, "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "dev": true, "requires": { - "depd": "1.1.0", + "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", "statuses": "1.3.1" } }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, "http-proxy": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", @@ -3154,13 +4086,13 @@ } }, "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", + "assert-plus": "1.0.0", + "jsprim": "1.4.1", "sshpk": "1.13.1" } }, @@ -3177,14 +4109,14 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.6.8", + "debug": "2.6.9", "extend": "3.0.1" } }, "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, "idb-wrapper": { @@ -3407,7 +4339,7 @@ "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, "ci-info": { @@ -3876,7 +4808,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.9.0" + "binary-extensions": "1.10.0" } }, "is-buffer": { @@ -3934,6 +4866,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -4080,36 +5013,159 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "dev": true, + "requires": { + "async": "2.5.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.0.tgz", + "integrity": "sha512-alLSEFX06ApU75sm5oWcaVNaiss/bgMRiWTct3g0P0ZZTKjR+6QiCcuVOKDI1kWJgwHEnIXsv/dWm783kPpmtw==", + "dev": true, + "requires": { + "convert-source-map": "1.5.0", + "istanbul-lib-instrument": "1.9.1", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, "jasmine": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.6.0.tgz", - "integrity": "sha1-ayLnCIPo5YnUVjRhU7TSBt2+IX8=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", "dev": true, "requires": { "exit": "0.1.2", "glob": "7.1.1", - "jasmine-core": "2.6.4" + "jasmine-core": "2.8.0" } }, "jasmine-core": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", - "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", "dev": true }, "jasmine-spec-reporter": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.1.tgz", - "integrity": "sha1-Wm1Yq11hvqcwn7wnkjlRF1axtYg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", "dev": true, "requires": { "colors": "1.1.2" } }, "jasminewd2": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.1.0.tgz", - "integrity": "sha1-2llSddGuYx3nNqwKfH2Fyfc+9lI=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", "dev": true }, "js-base64": { @@ -4124,16 +5180,35 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + } + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, "jschardet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", - "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", + "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", "dev": true }, "json-loader": { @@ -4197,23 +5272,15 @@ "dev": true }, "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { "assert-plus": "1.0.0", - "extsprintf": "1.0.2", + "extsprintf": "1.3.0", "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + "verror": "1.10.0" } }, "jstransform": { @@ -4236,19 +5303,75 @@ } } }, + "jszip": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.4.tgz", + "integrity": "sha512-z6w8iYIxZ/fcgul0j/OerkYnkomH8BZigvzbxVmr2h5HkZUrPtk2kjYtLkqR9wwQxEP6ecKNoKLsbhd18jfnGA==", + "dev": true, + "requires": { + "core-js": "2.3.0", + "es6-promise": "3.0.2", + "lie": "3.1.1", + "pako": "1.0.6", + "readable-stream": "2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "3.0.6" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, "karma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", - "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", + "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", "dev": true, "requires": { - "bluebird": "3.5.0", - "body-parser": "1.17.2", + "bluebird": "3.5.1", + "body-parser": "1.18.2", "chokidar": "1.7.0", "colors": "1.1.2", "combine-lists": "1.0.1", - "connect": "3.6.2", - "core-js": "2.4.1", + "connect": "3.6.5", + "core-js": "2.5.1", "di": "0.0.1", "dom-serialize": "2.2.1", "expand-braces": "0.1.2", @@ -4263,10 +5386,10 @@ "optimist": "0.6.1", "qjobs": "1.1.5", "range-parser": "1.2.0", - "rimraf": "2.6.1", + "rimraf": "2.6.2", "safe-buffer": "5.1.1", "socket.io": "1.7.3", - "source-map": "0.5.6", + "source-map": "0.5.7", "tmp": "0.0.31", "useragent": "2.2.1" }, @@ -4276,6 +5399,15 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } } } }, @@ -4286,7 +5418,17 @@ "dev": true, "requires": { "fs-access": "1.0.1", - "which": "1.2.14" + "which": "1.3.0" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz", + "integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=", + "dev": true, + "requires": { + "istanbul-api": "1.2.1", + "minimatch": "3.0.4" } }, "karma-jasmine": { @@ -4314,16 +5456,16 @@ } }, "karma-webpack": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.4.tgz", - "integrity": "sha1-Pi1PSLqUqHjhxmu44a5hKJh6F1s=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.5.tgz", + "integrity": "sha512-tb+P6rCNqPpVOzaDkNvuAX5gXJ/baGIFBSD/Pin1p1RTa3cookXxEc5wRkrLVA9acwEKvEq1TetGkOX1f8mf8A==", "dev": true, "requires": { "async": "0.9.2", "loader-utils": "0.2.17", "lodash": "3.10.1", "source-map": "0.1.43", - "webpack-dev-middleware": "1.11.0" + "webpack-dev-middleware": "1.12.0" }, "dependencies": { "async": { @@ -4338,7 +5480,7 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "3.1.3", + "big.js": "3.2.0", "emojis-list": "2.1.0", "json5": "0.5.1", "object-assign": "4.1.1" @@ -4432,7 +5574,7 @@ "integrity": "sha1-5ADlfw5g2O8r1NBo3EKKVDRdvNo=", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "lodash.assign": "3.2.0", "rsvp": "3.6.2" }, @@ -4656,7 +5798,7 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "3.1.3", + "big.js": "3.2.0", "emojis-list": "2.1.0", "json5": "0.5.1" } @@ -5003,7 +6145,7 @@ "normalize-path": "2.1.1", "object.omit": "2.0.1", "parse-glob": "3.0.4", - "regex-cache": "0.4.3" + "regex-cache": "0.4.4" } }, "miller-rabin": { @@ -5023,18 +6165,18 @@ "dev": true }, "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", "dev": true }, "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "1.30.0" } }, "mimic-fn": { @@ -5085,9 +6227,9 @@ } }, "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.1.tgz", + "integrity": "sha1-VtoaLRy/AdOLfhr8McELz6GSkWc=" }, "ms": { "version": "2.0.0", @@ -5102,9 +6244,9 @@ "dev": true }, "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", "dev": true }, "ncname": { @@ -5135,9 +6277,9 @@ "dev": true }, "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { "lower-case": "1.1.4" @@ -5157,11 +6299,19 @@ "nopt": "3.0.6", "npmlog": "4.1.2", "osenv": "0.1.4", - "request": "2.81.0", - "rimraf": "2.6.1", + "request": "2.83.0", + "rimraf": "2.6.2", "semver": "5.3.0", "tar": "2.2.1", - "which": "1.2.14" + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } } }, "node-libs-browser": { @@ -5229,24 +6379,6 @@ } } }, - "node-pre-gyp": { - "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, "node-sass": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", @@ -5265,10 +6397,10 @@ "lodash.mergewith": "4.6.0", "meow": "3.7.0", "mkdirp": "0.5.1", - "nan": "2.6.2", + "nan": "2.7.0", "node-gyp": "3.6.2", "npmlog": "4.1.2", - "request": "2.81.0", + "request": "2.83.0", "sass-graph": "2.2.4", "stdout-stream": "1.4.0" }, @@ -5280,7 +6412,7 @@ "dev": true, "requires": { "lru-cache": "4.1.1", - "which": "1.2.14" + "which": "1.3.0" } } } @@ -5291,7 +6423,7 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.0" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -5302,7 +6434,7 @@ "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.3.0", + "semver": "5.4.1", "validate-npm-package-license": "3.0.1" } }, @@ -5312,7 +6444,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.0.2" + "remove-trailing-separator": "1.1.0" } }, "normalize-range": { @@ -5363,7 +6495,8 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.8.2", @@ -5374,7 +6507,8 @@ "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 }, "object-component": { "version": "0.0.3", @@ -5463,7 +6597,8 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true }, "os-locale": { "version": "1.4.0", @@ -5487,12 +6622,14 @@ "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=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "osenv": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -5519,6 +6656,27 @@ "p-limit": "1.1.0" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -5531,7 +6689,7 @@ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "no-case": "2.3.1" + "no-case": "2.3.2" } }, "parse-asn1": { @@ -5568,6 +6726,12 @@ "error-ex": "1.3.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parsejson": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", @@ -5596,9 +6760,9 @@ } }, "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, "path-browserify": { @@ -5673,9 +6837,9 @@ } }, "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, "pify": { @@ -5741,9 +6905,9 @@ "dev": true }, "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process": { "version": "0.11.10", @@ -5760,35 +6924,42 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true }, "protractor": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz", - "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.2.0.tgz", + "integrity": "sha1-0/ObGV6F81Oa2djLZWCp0rYyl8Q=", "dev": true, "requires": { - "@types/node": "6.0.85", + "@types/node": "6.0.90", "@types/q": "0.0.32", "@types/selenium-webdriver": "2.53.42", "blocking-proxy": "0.0.5", "chalk": "1.1.3", "glob": "7.1.1", - "jasmine": "2.6.0", - "jasminewd2": "2.1.0", + "jasmine": "2.8.0", + "jasminewd2": "2.2.0", "optimist": "0.6.1", "q": "1.4.1", "saucelabs": "1.3.0", - "selenium-webdriver": "3.0.1", - "source-map-support": "0.4.15", + "selenium-webdriver": "3.6.0", + "source-map-support": "0.4.18", "webdriver-js-extender": "1.0.0", "webdriver-manager": "12.0.6" }, "dependencies": { "@types/node": { - "version": "6.0.85", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", - "integrity": "sha512-6qLZpfQFO/g5Ns2e7RsW6brk0Q6Xzwiw7kVVU/XiQNOiJXSojhX76GP457PBYIsNMH2WfcGgcnZB4awFDHrwpA==", + "version": "6.0.90", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz", + "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==", + "dev": true + }, + "adm-zip": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", "dev": true }, "webdriver-manager": { @@ -5804,9 +6975,9 @@ "ini": "1.3.4", "minimist": "1.2.0", "q": "1.4.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.4.1", "xml2js": "0.4.17" } } @@ -5955,19 +7126,6 @@ "string_decoder": "0.10.31" } }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - } - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -6051,8 +7209,8 @@ "requires": { "ast-types": "0.8.15", "esprima-fb": "15001.1001.0-dev-harmony-fb", - "private": "0.1.7", - "source-map": "0.5.6" + "private": "0.1.8", + "source-map": "0.5.7" }, "dependencies": { "esprima-fb": { @@ -6078,13 +7236,12 @@ "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=" }, "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" + "is-equal-shallow": "0.1.3" } }, "relateurl": { @@ -6094,9 +7251,9 @@ "dev": true }, "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { @@ -6121,33 +7278,41 @@ } }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "dev": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", + "mime-types": "2.1.17", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.2", + "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", "uuid": "3.1.0" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } } }, "require-directory": { @@ -6197,9 +7362,9 @@ } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "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.1" @@ -6373,7 +7538,8 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "safe-json-parse": { "version": "1.0.1", @@ -6408,6 +7574,15 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.2.4" + } + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -6430,13 +7605,13 @@ } }, "selenium-webdriver": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", - "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, "requires": { - "adm-zip": "0.4.7", - "rimraf": "2.6.1", + "jszip": "3.1.4", + "rimraf": "2.6.2", "tmp": "0.0.30", "xml2js": "0.4.17" }, @@ -6453,9 +7628,9 @@ } }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "send": { @@ -6465,13 +7640,13 @@ "dev": true, "requires": { "debug": "2.6.7", - "depd": "1.1.0", + "depd": "1.1.1", "destroy": "1.0.4", "encodeurl": "1.0.1", "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.0", - "http-errors": "1.6.1", + "http-errors": "1.6.2", "mime": "1.3.4", "ms": "2.0.0", "on-finished": "2.3.0", @@ -6498,7 +7673,7 @@ "requires": { "encodeurl": "1.0.1", "escape-html": "1.0.3", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "send": "0.15.3" } }, @@ -6510,7 +7685,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-immediate-shim": { "version": "1.0.1", @@ -6558,7 +7734,8 @@ "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", @@ -6578,12 +7755,12 @@ } }, "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", + "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "socket.io": { @@ -6670,12 +7847,6 @@ "to-array": "0.1.4" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", @@ -6705,6 +7876,12 @@ "json3": "3.3.2" }, "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", @@ -6729,16 +7906,16 @@ "dev": true }, "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "spdx-correct": { @@ -6782,14 +7959,6 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "statuses": { @@ -6926,11 +8095,6 @@ } } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "string-range": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/string-range/-/string-range-1.2.2.tgz", @@ -6947,12 +8111,18 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -6963,6 +8133,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -6998,9 +8169,9 @@ "dev": true }, "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -7021,9 +8192,9 @@ "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" }, "tapable": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz", - "integrity": "sha1-5GwNqsuyuKmLmwzqD0BSEFgX7Vw=", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, "tar": { @@ -7037,23 +8208,6 @@ "inherits": "2.0.3" } }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "1.0.34", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, "tar-stream": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", @@ -7121,6 +8275,12 @@ "xtend": "4.0.1" } }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + }, "timers-browserify": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", @@ -7162,9 +8322,9 @@ } }, "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "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" @@ -7183,9 +8343,9 @@ "dev": true }, "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { "punycode": "1.4.1" @@ -7198,66 +8358,66 @@ "dev": true }, "ts-loader": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.1.tgz", - "integrity": "sha512-qpHhht5OaOTlZe0scI5zjFrMIEmqt2qEyhpBiDJBA4nIV/iSF+jj1dGoDwFndL1D71dAr3P+gCmCShqolaQ+HQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", + "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", "dev": true, "requires": { - "chalk": "2.0.1", - "enhanced-resolve": "3.3.0", + "chalk": "2.2.0", + "enhanced-resolve": "3.4.1", "loader-utils": "1.1.0", - "semver": "5.3.0" + "semver": "5.4.1" }, "dependencies": { "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } } } }, "ts-node": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.2.1.tgz", - "integrity": "sha1-lZXdhA0D5ivHkhTOWntR5V48T/w=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", + "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=", "dev": true, "requires": { "arrify": "1.0.1", - "chalk": "2.0.1", - "diff": "3.3.0", + "chalk": "2.2.0", + "diff": "3.4.0", "make-error": "1.3.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "source-map-support": "0.4.15", + "source-map-support": "0.4.18", "tsconfig": "6.0.0", - "v8flags": "3.0.0", + "v8flags": "3.0.1", "yn": "2.0.0" }, "dependencies": { "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, "v8flags": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.0.tgz", - "integrity": "sha512-AGl+C+4qpeSu2g3JxCD/mGFFOs/vVZ3XREkD3ibQXEqr4Y4zgIrPWW124/IKJFHOIVFIoH8miWrLf0o84HYjwA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz", + "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=", "dev": true, "requires": { - "user-home": "1.1.1" + "homedir-polyfill": "1.0.1" } } } @@ -7287,8 +8447,8 @@ "requires": { "minimist": "1.2.0", "mkdirp": "0.5.1", - "source-map": "0.5.6", - "source-map-support": "0.4.15" + "source-map": "0.5.7", + "source-map-support": "0.4.18" } }, "tslib": { @@ -7306,7 +8466,7 @@ "builtin-modules": "1.1.1", "chalk": "2.3.0", "commander": "2.11.0", - "diff": "3.3.0", + "diff": "3.4.0", "glob": "7.1.1", "minimatch": "3.0.4", "resolve": "1.4.0", @@ -7375,6 +8535,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "type-is": { @@ -7384,7 +8545,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.15" + "mime-types": "2.1.17" } }, "typedarray": { @@ -7424,13 +8585,21 @@ } }, "uglify-js": { - "version": "3.0.26", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.26.tgz", - "integrity": "sha512-+D/BjzuvT1oRMSkH0fuF3M/BCvDxDywmZasd1UTPPHsdsHZqJEAZSvrojgFlS7lrM3ZZWq5h7Bb5i96X1TbOJw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.5.tgz", + "integrity": "sha512-tSqlO7/GZHAVSw6mbtJt2kz0ZcUrKUH7Xg92o52aE+gL0r6cXiASZY4dpHqQ7RVGXmoQuPA2qAkG4TkP59f8XA==", "dev": true, "requires": { "commander": "2.11.0", - "source-map": "0.5.6" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "uglify-to-browserify": { @@ -7446,7 +8615,7 @@ "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "dev": true, "requires": { - "source-map": "0.5.6", + "source-map": "0.5.7", "uglify-js": "2.8.29", "webpack-sources": "1.0.1" }, @@ -7474,7 +8643,7 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "source-map": "0.5.6", + "source-map": "0.5.7", "uglify-to-browserify": "1.0.2", "yargs": "3.10.0" } @@ -7493,13 +8662,6 @@ } } }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true - }, "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", @@ -7565,7 +8727,7 @@ "dev": true, "requires": { "lru-cache": "2.2.4", - "tmp": "0.0.31" + "tmp": "0.0.33" }, "dependencies": { "lru-cache": { @@ -7596,7 +8758,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "utils-merge": { "version": "1.0.0", @@ -7627,12 +8790,14 @@ "dev": true }, "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "extsprintf": "1.0.2" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" } }, "vlq": { @@ -7677,12 +8842,6 @@ "selenium-webdriver": "2.53.3" }, "dependencies": { - "adm-zip": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", - "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", - "dev": true - }, "sax": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", @@ -7696,7 +8855,7 @@ "dev": true, "requires": { "adm-zip": "0.4.4", - "rimraf": "2.6.1", + "rimraf": "2.6.2", "tmp": "0.0.24", "ws": "1.1.1", "xml2js": "0.4.4" @@ -7762,10 +8921,7 @@ "integrity": "sha1-Pa+ai2ciEpn9ro2C0RftjmyAJEs=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "locate-path": "2.0.0" } }, "ansi-regex": { @@ -7924,15 +9080,16 @@ } }, "webpack-dev-middleware": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", - "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", + "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", "dev": true, "requires": { "memory-fs": "0.4.1", "mime": "1.3.4", "path-is-absolute": "1.0.1", - "range-parser": "1.2.0" + "range-parser": "1.2.0", + "time-stamp": "2.0.0" } }, "webpack-sources": { @@ -7942,28 +9099,29 @@ "dev": true, "requires": { "source-list-map": "2.0.0", - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "websocket-extensions": "0.1.1" + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.2" } }, "websocket-extensions": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", - "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz", + "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=", "dev": true }, "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -7979,6 +9137,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, "requires": { "string-width": "1.0.2" } @@ -7989,7 +9148,7 @@ "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "dev": true, "requires": { - "semver": "5.3.0" + "semver": "5.4.1" } }, "window-size": { @@ -8149,7 +9308,7 @@ "dev": true, "requires": { "archiver-utils": "1.3.0", - "compress-commons": "1.2.0", + "compress-commons": "1.2.2", "lodash": "4.17.4", "readable-stream": "2.3.3" }, diff --git a/package.json b/package.json index f8d70d2d..bdfc7438 100755 --- a/package.json +++ b/package.json @@ -56,11 +56,11 @@ "karma-jasmine": "^1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "karma-sourcemap-loader": "^0.3.7", - "karma-webpack": "^2.0.3", + "karma-webpack": "^2.0.5", "null-loader": "^0.1.1", - "protractor": "^5.1.1", - "ts-loader": "^2.0.3", - "ts-node": "^3.0.2", + "protractor": "^5.2.0", + "ts-loader": "^2.3.7", + "ts-node": "^3.3.0", "typescript": "2.3.4" } } diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 7f975a77..e5566dba 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -4,11 +4,10 @@ import { Platform, NavController } from 'ionic-angular'; import { CacheService } from '../shared/cache/cache.service'; import { AuthService } from '../services/auth.service'; // pages -import { TermConditionPage } from '../pages/term-condition/term-condition.page'; import { SidenavPage } from '../pages/sidenav/sidenav'; import { ResetPasswordPage } from '../pages/reset-password/reset-password'; import { TabsPage } from '../pages/tabs/tabs.page'; -import { RegistrationPage } from '../pages/registration/registration.page'; +import { RegisterPage } from '../pages/registration/register.page'; import { LoginPage } from '../pages/login/login'; import { MagicLinkPage } from '../pages/magic-link/magic-link'; import { TestPage } from '../pages/tabs/test.page'; @@ -21,7 +20,7 @@ export class MyApp implements OnInit { rootPage: any; urlParameters: Array = []; do = { - 'registration': RegistrationPage, + 'registration': RegisterPage, 'login': LoginPage, 'resetpassword': ResetPasswordPage, 'secure': MagicLinkPage, diff --git a/src/app/app.module.ts b/src/app/app.module.ts index fd019212..02daabce 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -18,7 +18,7 @@ import { i18nData } from './assets/i18n-en'; import { AppConfigModule } from '../shared/app-config/app-config.module'; import { TranslationModule } from '../shared/translation/translation.module'; import { MomentModule } from 'angular2-moment'; - +import { WindowRef } from '../shared/window'; // services import { AchievementService } from '../services/achievement.service'; import { ActivityService } from '../services/activity.service'; @@ -35,24 +35,21 @@ import { NotificationService } from '../shared/notification/notification.service import { RequestModule } from '../shared/request/request.module'; import { SessionService } from '../services/session.service'; import { SubmissionService } from '../services/submission.service'; - import { TeamService } from '../services/team.service'; -import { WindowRef } from '../shared/window'; // components -import { ModalComponent } from '../shared/notification/modal.component'; -import { QuestionGroupComponent } from '../components/question-group/question-group.component'; import { EventComponent } from '../components/event/event.component'; +import { FeedbackComponent } from '../components/questions/feedback'; +import { FileQuestionComponent } from '../components/questions/file'; import { LevelComponent } from '../components/level/level'; import { LoadingMarkerComponent } from '../components/loadingMarker/loadingMarker'; import { LockerComponent } from '../components/locker/locker'; import { MemberComponent } from '../components/member/member'; -import { PhotoComponent } from '../components/photo/photo'; -import { TermContentComponent } from '../pages/term-condition/term-content.component'; -import { FileQuestionComponent } from '../components/questions/file'; +import { ModalComponent } from '../shared/notification/modal.component'; +import { MultipleQuestionComponent } from '../components/questions/multiple'; import { OneofQuestionComponent } from '../components/questions/oneof'; +import { PhotoComponent } from '../components/photo/photo'; +import { QuestionGroupComponent } from '../components/question-group/question-group.component'; import { TextQuestionComponent } from '../components/questions/text'; -import { MultipleQuestionComponent } from '../components/questions/multiple'; -import { FeedbackComponent } from '../components/questions/feedback'; // pages import { AchievementsViewPage } from '../pages/achievements/view/achievements-view.page'; import { ActivitiesListPage } from '../pages/activities/list/list.page'; @@ -78,21 +75,19 @@ import { RankingBadgesPage } from '../pages/rankings/view/ranking-badges'; import { RankingDetailsPage } from '../pages/rankings/view/ranking-details.page'; import { RankingsPage } from '../pages/rankings/list/rankings.page'; import { RegisterPage } from '../pages/registration/register.page'; -import { RegistrationPage } from '../pages/registration/registration.page'; import { ResetPasswordPage } from '../pages/reset-password/reset-password'; import { SettingsPage } from '../pages/settings/settings.page'; import { SidenavPage } from '../pages/sidenav/sidenav'; import { TabsPage } from '../pages/tabs/tabs.page'; -import { TeamPage } from '../pages/team/team.page'; -import { TermConditionPage } from '../pages/term-condition/term-condition.page'; +import { TeamPage } from '../pages/team/team'; +import { TermsConditionsPage } from '../pages/registration/terms-conditions/terms-conditions.page'; import { TestPage } from '../pages/tabs/test.page'; import { TutorialPage } from '../pages/settings/tutorial/tutorial.page'; // custom pipes +import { EscapeHtmlPipe } from '../pipes/keep-html.pipe'; import { TimeAgoPipe } from '../pipes/timeago'; -import { UcfirstPipe } from '../pipes/ucfirst.pipe'; import { TruncatePipe } from '../pipes/truncate.pipe'; -import { EscapeHtmlPipe } from '../pipes/keep-html.pipe'; - +import { UcfirstPipe } from '../pipes/ucfirst.pipe'; // configs import { default as Configure } from '../configs/config'; // AoT requires an exported function for factories @@ -139,7 +134,6 @@ export function createTranslateLoader(http: HttpClient) { RankingDetailsPage, RankingsPage, RegisterPage, - RegistrationPage, ResetPasswordPage, SettingsPage, SidenavPage, @@ -147,8 +141,7 @@ export function createTranslateLoader(http: HttpClient) { TeamPage, TestPage, TutorialPage, - TermConditionPage, - TermContentComponent, + TermsConditionsPage, TextQuestionComponent, TimeAgoPipe, TruncatePipe, @@ -201,10 +194,10 @@ export function createTranslateLoader(http: HttpClient) { defaultHistory: [ MagicLinkPage ] }, { - component: RegistrationPage, + component: RegisterPage, name: 'Registration', segment: 'registration', - defaultHistory: [ RegistrationPage ] + defaultHistory: [ RegisterPage ] }, { component: TestPage, @@ -249,15 +242,13 @@ export function createTranslateLoader(http: HttpClient) { RankingDetailsPage, RankingsPage, RegisterPage, - RegistrationPage, ResetPasswordPage, SettingsPage, SidenavPage, TabsPage, TestPage, - TermConditionPage, + TermsConditionsPage, TutorialPage, - TermContentComponent, ], providers: [ { provide: AchievementService, useClass: AchievementService }, diff --git a/src/app/messages.ts b/src/app/messages.ts index c21a0958..aa412bba 100644 --- a/src/app/messages.ts +++ b/src/app/messages.ts @@ -52,10 +52,10 @@ export const errMessages = { }, PasswordValidation: { mismatch: { - "mismatch": "You must enter matching passwords. Please Try again." + "mismatch": "Passwords don’t match" }, minlength: { - "minlength": "The minimum length allowed for a password is 8 characters." + "minlength": "At least 8 characters required" } }, Registration: { @@ -76,6 +76,9 @@ export const errMessages = { }, verifyFailed: { "verifyfailed": "Sorry, verification failed, please resend your email and password." + }, + acceptTermsConditions: { + "accepted": "You need to agree to the Terms & Conditions before completing registration." } }, ResetPassword: { @@ -83,12 +86,12 @@ export const errMessages = { "failed": "Whoops, we were unable to reset your password. Please try again." }, invalidLink: { - "invalid": "Oops... The log in link is broken. You will be redirected to the login page. Try again with your username and password." + "invalid": "Oops... The reset password link is expired, please contact your program coordinator." } }, TermConditions: { disagreement: { - "noAccepted": "You must agree to the Terms and Conditions." + "noAccepted": "You need to agree to the Terms & Conditions." }, verifyFailed: { "verifyfailed": "Oops... Registration verification has failed. Please try again later." diff --git a/src/assets/i18n-en.json b/src/assets/i18n-en.json index 6a17e730..057a04bc 100644 --- a/src/assets/i18n-en.json +++ b/src/assets/i18n-en.json @@ -30,15 +30,16 @@ "NEXT": "Next", "PREV": "Prev", "SKIP": "Skip", - "SUBMIT": "Submit" + "SUBMIT": "Submit", + "BACKTO": "Back to Login" }, "LOGIN": { "HEADER": "Welcome to Practera", "PAGETITLE": "Login", - "PASSWORDFORGOT": "Forget Your Password?" + "PASSWORDFORGOT": "Forgot Your Password?" }, "REGISTRATION": { - "HEADER": "Great - you are almost there! Just one more thing...", + "HEADER": "Great - you are almost there! Just one more step...", "PAGETITLE": "Set Password" }, "RANKING": { diff --git a/src/configs/config.ts.default b/src/configs/config.ts.default deleted file mode 100644 index ec398a10..00000000 --- a/src/configs/config.ts.default +++ /dev/null @@ -1,9 +0,0 @@ -// Need update read me -// Copy file to config.ts -export default { - prefixUrl: 'http://local.practera.com:8080/', - appKey: '', - filestack: { - apiKey: '' - }, -} diff --git a/src/pages/forget-password/forget-password.html b/src/pages/forget-password/forget-password.html index 616e4304..2a937af8 100644 --- a/src/pages/forget-password/forget-password.html +++ b/src/pages/forget-password/forget-password.html @@ -1,20 +1,22 @@ {{ 'FORGOTPASSWORD.PAGETITLE' | translate }} + + + -