fix ordering e2e failing test (#4825)

* ordering fix use common method in datatable

* ordering fix use common method in datatable

* fix sorting ps e2e

* fix ordering

* move search page in testing and fix sorting boolean flag

* fix import

* fix moment

* use common sort method in document list test

* use common sort method in document list test

* remove unnecesary sort control

* remove duplicate test

* remove e2e suspended removed status

* documentation
This commit is contained in:
Eugenio Romano
2019-06-11 07:34:16 +01:00
committed by GitHub
parent c85df84a01
commit 990fa4625b
43 changed files with 951 additions and 477 deletions

27
audit-info-3.2.1.md Normal file
View File

@@ -0,0 +1,27 @@
---
Title: License info, Alfresco Angular components 3.2.1
---
# License information for Alfresco Angular components 3.2.1
This page lists all third party libraries that ADF 3.2.1 depends on.
## Risks
- Critical risk dependencies 0
- High risk dependencies 0
- Moderate risk dependencies 4
- Low risk dependencies 1
Dependencies analyzed 64984
## Libraries
| Severity | Vulnerable versions | Module |
| --- | --- | --- |
|low | "<4.17.5" | lodash |
|moderate | "<4.17.11" | lodash |
|moderate | ">=0.3.14 <0.6.2" | marked |
|moderate | "<0.18.1" | axios |

View File

@@ -251,35 +251,26 @@ describe('Document List - Pagination', function () {
paginationPage.selectItemsPerPage(itemsPerPage.twenty); paginationPage.selectItemsPerPage(itemsPerPage.twenty);
contentServicesPage.checkAcsContainer(); contentServicesPage.checkAcsContainer();
contentServicesPage.waitForTableBody(); contentServicesPage.waitForTableBody();
contentServicesPage.getElementsDisplayedName().then((elements) => {
contentServicesPage.checkElementsSortedAsc(elements);
});
contentServicesPage.sortByName(false); expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('ASC', 'Display name'));
contentServicesPage.getElementsDisplayedName().then(function (list) {
contentServicesPage.checkElementsSortedDesc(list); contentServicesPage.sortByName('DESC');
}); expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
paginationPage.selectItemsPerPage(itemsPerPage.five); paginationPage.selectItemsPerPage(itemsPerPage.five);
contentServicesPage.checkAcsContainer(); contentServicesPage.checkAcsContainer();
contentServicesPage.waitForTableBody(); contentServicesPage.waitForTableBody();
contentServicesPage.getElementsDisplayedName().then(function (list) { expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
contentServicesPage.checkElementsSortedDesc(list);
});
paginationPage.clickOnNextPage(); paginationPage.clickOnNextPage();
contentServicesPage.checkAcsContainer(); contentServicesPage.checkAcsContainer();
contentServicesPage.waitForTableBody(); contentServicesPage.waitForTableBody();
contentServicesPage.getElementsDisplayedName().then(function (list) { expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
contentServicesPage.checkElementsSortedDesc(list);
});
paginationPage.selectItemsPerPage(itemsPerPage.ten); paginationPage.selectItemsPerPage(itemsPerPage.ten);
contentServicesPage.checkAcsContainer(); contentServicesPage.checkAcsContainer();
contentServicesPage.waitForTableBody(); contentServicesPage.waitForTableBody();
contentServicesPage.getElementsDisplayedName().then(function (list) { expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
contentServicesPage.checkElementsSortedDesc(list);
});
}); });
it('[C260107] Should not display pagination bar when a folder is empty', () => { it('[C260107] Should not display pagination bar when a folder is empty', () => {

View File

@@ -22,8 +22,7 @@ import { DropActions } from '../../actions/drop.actions';
import { by, element, protractor, $$, browser } from 'protractor'; import { by, element, protractor, $$, browser } from 'protractor';
import path = require('path'); import path = require('path');
import { DateUtil } from '../../util/dateUtil'; import { BrowserVisibility, DocumentListPage, BrowserActions, DateUtil } from '@alfresco/adf-testing';
import { BrowserVisibility, DocumentListPage, BrowserActions } from '@alfresco/adf-testing';
import { NavigationBarPage } from './navigationBarPage'; import { NavigationBarPage } from './navigationBarPage';
export class ContentServicesPage { export class ContentServicesPage {
@@ -183,50 +182,10 @@ export class ContentServicesPage {
return this; return this;
} }
getElementsDisplayedSize() {
return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.size);
}
getElementsDisplayedName() {
return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.name);
}
getElementsDisplayedId() { getElementsDisplayedId() {
return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.nodeId); return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.nodeId);
} }
checkElementsSortedAsc(elements) {
let sorted = true;
let i = 0;
while (elements.length > 1 && sorted === true && i < (elements.length - 1)) {
const left = elements[i];
const right = elements[i + 1];
if (left > right) {
sorted = false;
}
i++;
}
return sorted;
}
checkElementsSortedDesc(elements) {
let sorted = true;
let i = 0;
while (elements.length > 1 && sorted === true && i < (elements.length - 1)) {
const left = elements[i];
const right = elements[i + 1];
if (left < right) {
sorted = false;
}
i++;
}
return sorted;
}
checkElementsDateSortedAsc(elements) { checkElementsDateSortedAsc(elements) {
let sorted = true; let sorted = true;
let i = 0; let i = 0;
@@ -328,19 +287,19 @@ export class ContentServicesPage {
return this.contentList.getAllRowsColumnValues(this.columns.name); return this.contentList.getAllRowsColumnValues(this.columns.name);
} }
sortByName(sortOrder) { sortByName(sortOrder: string) {
return this.contentList.dataTable.sortByColumn(sortOrder, this.nameColumnHeader); return this.contentList.dataTable.sortByColumn(sortOrder, this.nameColumnHeader);
} }
sortByAuthor(sortOrder) { sortByAuthor(sortOrder: string) {
return this.contentList.dataTable.sortByColumn(sortOrder, this.createdByColumnHeader); return this.contentList.dataTable.sortByColumn(sortOrder, this.createdByColumnHeader);
} }
sortByCreated(sortOrder) { sortByCreated(sortOrder: string) {
return this.contentList.dataTable.sortByColumn(sortOrder, this.createdColumnHeader); return this.contentList.dataTable.sortByColumn(sortOrder, this.createdColumnHeader);
} }
sortAndCheckListIsOrderedByName(sortOrder) { sortAndCheckListIsOrderedByName(sortOrder: string) {
this.sortByName(sortOrder); this.sortByName(sortOrder);
const deferred = protractor.promise.defer(); const deferred = protractor.promise.defer();
this.checkListIsSortedByNameColumn(sortOrder).then((result) => { this.checkListIsSortedByNameColumn(sortOrder).then((result) => {
@@ -349,23 +308,23 @@ export class ContentServicesPage {
return deferred.promise; return deferred.promise;
} }
async checkListIsSortedByNameColumn(sortOrder) { async checkListIsSortedByNameColumn(sortOrder: string) {
return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.name); return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.name);
} }
async checkListIsSortedByCreatedColumn(sortOrder) { async checkListIsSortedByCreatedColumn(sortOrder: string) {
return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.created); return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.created);
} }
async checkListIsSortedByAuthorColumn(sortOrder) { async checkListIsSortedByAuthorColumn(sortOrder: string) {
return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.createdBy); return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.createdBy);
} }
async checkListIsSortedBySizeColumn(sortOrder) { async checkListIsSortedBySizeColumn(sortOrder: string) {
return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.size); return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.size);
} }
sortAndCheckListIsOrderedByAuthor(sortOrder) { sortAndCheckListIsOrderedByAuthor(sortOrder: string) {
this.sortByAuthor(sortOrder); this.sortByAuthor(sortOrder);
const deferred = protractor.promise.defer(); const deferred = protractor.promise.defer();
this.checkListIsSortedByAuthorColumn(sortOrder).then((result) => { this.checkListIsSortedByAuthorColumn(sortOrder).then((result) => {
@@ -374,7 +333,7 @@ export class ContentServicesPage {
return deferred.promise; return deferred.promise;
} }
sortAndCheckListIsOrderedByCreated(sortOrder) { sortAndCheckListIsOrderedByCreated(sortOrder: string) {
this.sortByCreated(sortOrder); this.sortByCreated(sortOrder);
const deferred = protractor.promise.defer(); const deferred = protractor.promise.defer();
this.checkListIsSortedByCreatedColumn(sortOrder).then((result) => { this.checkListIsSortedByCreatedColumn(sortOrder).then((result) => {

View File

@@ -34,7 +34,7 @@ export class FiltersPage {
return this; return this;
} }
sortByName(sortOrder) { sortByName(sortOrder: string) {
this.dataTable.sortByColumn(sortOrder, 'name'); this.dataTable.sortByColumn(sortOrder, 'name');
} }

View File

@@ -96,9 +96,9 @@ export class ProcessFiltersPage {
/** /**
* Sort the list by name column. * Sort the list by name column.
* *
* @param sortOrder : 'true' to sort the list ascendant and 'false' for descendant * @param sortOrder : 'ASC' to sort the list ascendant and 'DESC' for descendant
*/ */
sortByName(sortOrder) { sortByName(sortOrder: string) {
this.dataTable.sortByColumn(sortOrder, 'name'); this.dataTable.sortByColumn(sortOrder, 'name');
} }

View File

@@ -151,11 +151,11 @@ export class TasksPage {
} }
clickSortByNameAsc() { clickSortByNameAsc() {
return this.tasksListPage().getDataTable().sortByColumn(true, 'name'); return this.tasksListPage().getDataTable().sortByColumn('ASC', 'name');
} }
clickSortByNameDesc() { clickSortByNameDesc() {
return this.tasksListPage().getDataTable().sortByColumn(false, 'name'); return this.tasksListPage().getDataTable().sortByColumn('DESC', 'name');
} }
} }

View File

@@ -16,8 +16,7 @@
*/ */
import { element, by } from 'protractor'; import { element, by } from 'protractor';
import { SearchCategoriesPage } from './content-services/search/search-categories'; import { BrowserVisibility, SearchCategoriesPage } from '@alfresco/adf-testing';
import { BrowserVisibility } from '@alfresco/adf-testing';
export class SearchFiltersPage { export class SearchFiltersPage {
@@ -282,12 +281,12 @@ export class SearchFiltersPage {
return this; return this;
} }
checkFileTypeFacetLabelIsDisplayed(fileType) { checkFileTypeFacetLabelIsDisplayed(fileType: string | RegExp) {
BrowserVisibility.waitUntilElementIsVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType))); BrowserVisibility.waitUntilElementIsVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType)));
return this; return this;
} }
checkFileTypeFacetLabelIsNotDisplayed(fileType) { checkFileTypeFacetLabelIsNotDisplayed(fileType: string | RegExp) {
BrowserVisibility.waitUntilElementIsNotVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType))); BrowserVisibility.waitUntilElementIsNotVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType)));
return this; return this;
} }

View File

@@ -16,10 +16,9 @@
*/ */
import { DataTableComponentPage } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '@alfresco/adf-testing';
import { SearchSortingPickerPage } from './content-services/search/components/search-sortingPicker.page';
import { element, by } from 'protractor'; import { element, by } from 'protractor';
import { ContentServicesPage } from './contentServicesPage'; import { ContentServicesPage } from './contentServicesPage';
import { BrowserVisibility } from '@alfresco/adf-testing'; import { BrowserVisibility, SearchSortingPickerPage } from '@alfresco/adf-testing';
export class SearchResultsPage { export class SearchResultsPage {
@@ -36,14 +35,6 @@ export class SearchResultsPage {
this.dataTable.tableIsLoaded(); this.dataTable.tableIsLoaded();
} }
closeActionButton() {
const container = element(by.css('div.cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing'));
BrowserVisibility.waitUntilElementIsVisible(container);
container.click();
BrowserVisibility.waitUntilElementIsNotVisible(container);
return this;
}
checkContentIsDisplayed(content) { checkContentIsDisplayed(content) {
this.dataTable.checkContentIsDisplayed('Display name', content); this.dataTable.checkContentIsDisplayed('Display name', content);
return this; return this;
@@ -77,46 +68,33 @@ export class SearchResultsPage {
this.contentServices.deleteContent(content); this.contentServices.deleteContent(content);
} }
checkDeleteIsDisabled(content) { sortByName(sortOrder: string) {
this.contentServices.checkDeleteIsDisabled(content);
this.closeActionButton();
}
sortByName(sortOrder) {
this.searchSortingPicker.sortBy(sortOrder, 'Name'); this.searchSortingPicker.sortBy(sortOrder, 'Name');
} }
sortByAuthor(sortOrder) { sortByAuthor(sortOrder: string) {
this.searchSortingPicker.sortBy(sortOrder, 'Author'); this.searchSortingPicker.sortBy(sortOrder, 'Author');
} }
sortByCreated(sortOrder) { sortByCreated(sortOrder: string) {
this.searchSortingPicker.sortBy(sortOrder, 'Created'); this.searchSortingPicker.sortBy(sortOrder, 'Created');
} }
sortBySize(sortOrder) { sortBySize(sortOrder: string) {
this.searchSortingPicker.sortBy(sortOrder, 'Size'); this.searchSortingPicker.sortBy(sortOrder, 'Size');
return this; return this;
} }
async checkListIsOrderedByNameAsc() { async checkListIsOrderedByNameAsc() {
const list = await this.contentServices.getElementsDisplayedName(); return this.contentServices.contentList.dataTablePage().checkListIsSorted('ASC', 'Display name');
return this.contentServices.checkElementsSortedAsc(list);
} }
async checkListIsOrderedByNameDesc() { async checkListIsOrderedByNameDesc() {
const list = await this.contentServices.getElementsDisplayedName(); return this.contentServices.contentList.dataTablePage().checkListIsSorted('DESC', 'Display name');
return this.contentServices.checkElementsSortedDesc(list);
} }
async checkListIsOrderedByAuthorAsc() { async checkListIsOrderedByAuthorAsc() {
const authorList = await this.dataTable.geCellElementDetail('Created by'); return this.contentServices.contentList.dataTablePage().checkListIsSorted('ASC', 'Created by');
return this.contentServices.checkElementsSortedAsc(authorList);
}
async checkListIsOrderedByAuthorDesc() {
const authorList = await this.dataTable.geCellElementDetail('Created by');
return this.contentServices.checkElementsSortedDesc(authorList);
} }
} }

View File

@@ -90,6 +90,7 @@ xdescribe('Process list cloud', () => {
'processInstanceId', 'processInstanceId',
'order', 'order',
'sort', 'sort',
'initiator',
'order' 'order'
], ],
'sortProperties': [ 'sortProperties': [
@@ -107,7 +108,7 @@ xdescribe('Process list cloud', () => {
done(); done();
}, 5 * 60 * 1000); }, 5 * 60 * 1000);
afterAll(async(done) => { afterAll(async (done) => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
await identityService.deleteIdentityUser(testUser.idIdentityService); await identityService.deleteIdentityUser(testUser.idIdentityService);
done(); done();
@@ -124,45 +125,23 @@ xdescribe('Process list cloud', () => {
it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async () => { it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async () => {
processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING') processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING')
.setSortFilterDropDown('Name').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Name').setOrderFilterDropDown('ASC');
processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) {
const initialList = list.slice(0); expect(processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Name')).toBe(true);
list.sort();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC');
processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) {
const initialList = list.slice(0); expect(processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Name')).toBe(true);
list.sort();
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C291783] Should display processes ordered by id when Id is selected from sort dropdown', async () => { it('[C291783] Should display processes ordered by id when Id is selected from sort dropdown', async () => {
processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING') processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING')
.setSortFilterDropDown('Id').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Id').setOrderFilterDropDown('ASC');
processCloudDemoPage.processListCloudComponent().getDataTable(); expect(processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Id')).toBe(true);
browser.driver.sleep(1000);
processCloudDemoPage.getAllRowsByIdColumn().then(function (list) {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC');
processCloudDemoPage.processListCloudComponent().getDataTable(); expect(processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Id')).toBe(true);
browser.driver.sleep(1000);
processCloudDemoPage.getAllRowsByIdColumn().then(function (list) {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C297697] The value of the filter should be preserved when saving it', async () => { it('[C297697] The value of the filter should be preserved when saving it', async () => {

View File

@@ -20,14 +20,13 @@ import {
StringUtil, TasksService, StringUtil, TasksService,
ProcessDefinitionsService, ProcessInstancesService, ProcessDefinitionsService, ProcessInstancesService,
LoginSSOPage, ApiService, LoginSSOPage, ApiService,
AppListCloudPage, LocalStorageUtil, IdentityService, SettingsPage, GroupIdentityService AppListCloudPage, LocalStorageUtil, IdentityService, SettingsPage, GroupIdentityService, DateUtil
} from '@alfresco/adf-testing'; } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { TaskListCloudConfiguration } from './taskListCloud.config'; import { TaskListCloudConfiguration } from './taskListCloud.config';
import moment = require('moment'); import moment = require('moment');
import { DateUtil } from '../util/dateUtil';
import resources = require('../util/resources'); import resources = require('../util/resources');
@@ -49,7 +48,8 @@ describe('Edit task filters and task list properties', () => {
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name; const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name;
const noTasksFoundMessage = 'No Tasks Found'; const noTasksFoundMessage = 'No Tasks Found';
let createdTask, notAssigned, notDisplayedTask, processDefinition, processInstance, priorityTask, subTask, otherOwnerTask, testUser, groupInfo; let createdTask, notAssigned, notDisplayedTask, processDefinition, processInstance, priorityTask, subTask,
otherOwnerTask, testUser, groupInfo;
const priority = 30; const priority = 30;
const beforeDate = moment().add(-1, 'days').format('DD/MM/YYYY'); const beforeDate = moment().add(-1, 'days').format('DD/MM/YYYY');
@@ -75,7 +75,7 @@ describe('Edit task filters and task list properties', () => {
createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp);
await tasksService.claimTask(createdTask.entry.id, simpleApp); await tasksService.claimTask(createdTask.entry.id, simpleApp);
notAssigned = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); notAssigned = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp);
priorityTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {priority: priority}); priorityTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, { priority: priority });
await tasksService.claimTask(priorityTask.entry.id, simpleApp); await tasksService.claimTask(priorityTask.entry.id, simpleApp);
notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp);
await tasksService.claimTask(notDisplayedTask.entry.id, candidateBaseApp); await tasksService.claimTask(notDisplayedTask.entry.id, candidateBaseApp);
@@ -85,7 +85,7 @@ describe('Edit task filters and task list properties', () => {
processInstancesService = new ProcessInstancesService(apiService); processInstancesService = new ProcessInstancesService(apiService);
processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp);
subTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {'parentTaskId': createdTask.entry.id}); subTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, { 'parentTaskId': createdTask.entry.id });
await tasksService.claimTask(subTask.entry.id, simpleApp); await tasksService.claimTask(subTask.entry.id, simpleApp);
const jsonFile = new TaskListCloudConfiguration().getConfiguration(); const jsonFile = new TaskListCloudConfiguration().getConfiguration();
@@ -135,7 +135,7 @@ describe('Edit task filters and task list properties', () => {
done(); done();
}, 5 * 60 * 1000); }, 5 * 60 * 1000);
afterAll(async(done) => { afterAll(async (done) => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
await identityService.deleteIdentityUser(testUser.idIdentityService); await identityService.deleteIdentityUser(testUser.idIdentityService);
done(); done();
@@ -383,241 +383,85 @@ describe('Edit task filters and task list properties', () => {
it('[C306901] Should display tasks sorted by task name when taskName is selected from sort dropdown', () => { it('[C306901] Should display tasks sorted by task name when taskName is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED') tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED')
.setSortFilterDropDown('Name').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Name').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Name')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsNameColumn().then( (list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Name')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsNameColumn().then( (list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C290156] Should display tasks ordered by id when Id is selected from sort dropdown', () => { it('[C290156] Should display tasks ordered by id when Id is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED') tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED')
.setSortFilterDropDown('Id').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Id').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Id')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Id')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C306903] Should display tasks sorted by processDefinitionId when processDefinitionId is selected from sort dropdown', () => { it('[C306903] Should display tasks sorted by processDefinitionId when processDefinitionId is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED') tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED')
.setSortFilterDropDown('ProcessDefinitionId').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('ProcessDefinitionId').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'ProcessDefinitionId')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByProcessDefIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'ProcessDefinitionId')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByProcessDefIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C306905] Should display tasks sorted by processInstanceId when processInstanceId is selected from sort dropdown', () => { it('[C306905] Should display tasks sorted by processInstanceId when processInstanceId is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED') tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ASSIGNED')
.setSortFilterDropDown('ProcessInstanceId').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('ProcessInstanceId').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'ProcessInstanceId')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByProcessInstanceIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'ProcessInstanceId')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByProcessInstanceIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C306907] Should display tasks sorted by assignee when assignee is selected from sort dropdown', () => { it('[C306907] Should display tasks sorted by assignee when assignee is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL') tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL')
.setSortFilterDropDown('Assignee').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Assignee').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Assignee')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByAssigneeColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Assignee')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByAssigneeColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C306911] Should display tasks sorted by parentTaskId when parentTaskId is selected from sort dropdown', () => { it('[C306911] Should display tasks sorted by parentTaskId when parentTaskId is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL') tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL')
.setSortFilterDropDown('ParentTaskId').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('ParentTaskId').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'ParentTaskId')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByParentTaskIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'ParentTaskId')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByParentTaskIdColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C306909] Should display tasks sorted by priority when priority is selected from sort dropdown', () => { it('[C306909] Should display tasks sorted by priority when priority is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL') tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL')
.setSortFilterDropDown('Priority').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Priority').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Priority')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByPriorityColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Priority')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByPriorityColumn().then((list) => {
list = list.map(Number);
const initialList = list.slice(0);
list.sort((a, b) => b - a);
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C307114] Should display tasks sorted by standAlone when standAlone is selected from sort dropdown', () => { it('[C307114] Should display tasks sorted by standAlone when standAlone is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL') tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL')
.setSortFilterDropDown('StandAlone').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('StandAlone').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'StandAlone')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByStandAloneColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'StandAlone')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByStandAloneColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
it('[C307115] Should display tasks sorted by owner when owner is selected from sort dropdown', () => { it('[C307115] Should display tasks sorted by owner when owner is selected from sort dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL') tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee().setStatusFilterDropDown('ALL')
.setSortFilterDropDown('Owner').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Owner').setOrderFilterDropDown('ASC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Owner')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByOwnerColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC');
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Owner')).toBe(true);
tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed();
tasksCloudDemoPage.taskListCloudComponent().getAllRowsByOwnerColumn().then((list) => {
const initialList = list.slice(0);
list.sort(function (firstStr, secondStr) {
return firstStr.localeCompare(secondStr);
});
list.reverse();
expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true);
});
}); });
}); });

View File

@@ -55,7 +55,7 @@ describe('Task filters cloud', () => {
completedTaskName = StringUtil.generateRandomString(), completedTaskName = StringUtil.generateRandomString(),
assignedTaskName = StringUtil.generateRandomString(), deletedTaskName = StringUtil.generateRandomString(); assignedTaskName = StringUtil.generateRandomString(), deletedTaskName = StringUtil.generateRandomString();
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
let assignedTask, deletedTask, suspendedTasks, testUser, groupInfo; let assignedTask, deletedTask, testUser, groupInfo;
const orderByNameAndPriority = ['cCreatedTask', 'dCreatedTask', 'eCreatedTask']; const orderByNameAndPriority = ['cCreatedTask', 'dCreatedTask', 'eCreatedTask'];
let priority = 30; let priority = 30;
const nrOfTasks = 3; const nrOfTasks = 3;
@@ -90,7 +90,6 @@ describe('Task filters cloud', () => {
const secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); const secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp);
queryService = new QueryService(apiService); queryService = new QueryService(apiService);
suspendedTasks = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp);
await queryService.getProcessInstanceTasks(secondProcessInstance.entry.id, simpleApp); await queryService.getProcessInstanceTasks(secondProcessInstance.entry.id, simpleApp);
await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp); await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp);
await processInstancesService.deleteProcessInstance(secondProcessInstance.entry.id, simpleApp); await processInstancesService.deleteProcessInstance(secondProcessInstance.entry.id, simpleApp);
@@ -148,16 +147,6 @@ describe('Task filters cloud', () => {
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName);
}); });
it('[C290154] Should display only tasks with suspended statuses when Suspended is selected from status dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignee()
.setStatusFilterDropDown('SUSPENDED');
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedById(suspendedTasks.list.entries[0].entry.id);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(deletedTaskName);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTaskName);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName);
});
it('[C290060] Should display only tasks with Created status when Created is selected from status dropdown', () => { it('[C290060] Should display only tasks with Created status when Created is selected from status dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignee().setStatusFilterDropDown('CREATED'); tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignee().setStatusFilterDropDown('CREATED');
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTaskName); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTaskName);
@@ -168,7 +157,6 @@ describe('Task filters cloud', () => {
it('[C290155] Should display only tasks with Cancelled status when Cancelled is selected from status dropdown', () => { it('[C290155] Should display only tasks with Cancelled status when Cancelled is selected from status dropdown', () => {
tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignee().setStatusFilterDropDown('CANCELLED'); tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignee().setStatusFilterDropDown('CANCELLED');
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(suspendedTasks.list.entries[0].entry.name);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(deletedTaskName); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(deletedTaskName);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName); tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName); tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName);

View File

@@ -18,7 +18,7 @@
import { LoginPage } from '@alfresco/adf-testing'; import { LoginPage } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TaskListDemoPage } from '../pages/adf/demo-shell/process-services/taskListDemoPage'; import { TaskListDemoPage } from '../pages/adf/demo-shell/process-services/taskListDemoPage';
import { PaginationPage } from '@alfresco/adf-testing'; import { PaginationPage, DateUtil } from '@alfresco/adf-testing';
import moment = require('moment'); import moment = require('moment');
import { Tenant } from '../models/APS/tenant'; import { Tenant } from '../models/APS/tenant';
@@ -31,7 +31,6 @@ import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { AppsActions } from '../actions/APS/apps.actions'; import { AppsActions } from '../actions/APS/apps.actions';
import { AppsRuntimeActions } from '../actions/APS/appsRuntime.actions'; import { AppsRuntimeActions } from '../actions/APS/appsRuntime.actions';
import { UsersActions } from '../actions/users.actions'; import { UsersActions } from '../actions/users.actions';
import { DateUtil } from '../util/dateUtil';
describe('Start Task - Custom App', () => { describe('Start Task - Custom App', () => {

View File

@@ -15,10 +15,9 @@
* limitations under the License. * limitations under the License.
*/ */
import { LoginPage, Widget } from '@alfresco/adf-testing'; import { LoginPage, Widget, DatePickerPage } from '@alfresco/adf-testing';
import { ProcessFiltersPage } from '../pages/adf/process-services/processFiltersPage'; import { ProcessFiltersPage } from '../pages/adf/process-services/processFiltersPage';
import { ProcessServiceTabBarPage } from '../pages/adf/process-services/processServiceTabBarPage'; import { ProcessServiceTabBarPage } from '../pages/adf/process-services/processServiceTabBarPage';
import { DatePickerPage } from '../pages/adf/material/datePickerPage';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { browser } from 'protractor'; import { browser } from 'protractor';
@@ -38,7 +37,7 @@ describe('Dynamic Table', () => {
const widget = new Widget(); const widget = new Widget();
let user, tenantId, appId, apps, users; let user, tenantId, appId, apps, users;
beforeAll(async(done) => { beforeAll(async (done) => {
this.alfrescoJsApi = new AlfrescoApi({ this.alfrescoJsApi = new AlfrescoApi({
provider: 'BPM', provider: 'BPM',
hostBpm: browser.params.testConfig.adf.url hostBpm: browser.params.testConfig.adf.url
@@ -56,7 +55,7 @@ describe('Dynamic Table', () => {
done(); done();
}); });
afterAll(async(done) => { afterAll(async (done) => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword); await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await this.alfrescoJsApi.activiti.adminTenantsApi.deleteTenant(tenantId); await this.alfrescoJsApi.activiti.adminTenantsApi.deleteTenant(tenantId);
@@ -75,7 +74,7 @@ describe('Dynamic Table', () => {
const rowPosition = 0; const rowPosition = 0;
beforeAll(async(done) => { beforeAll(async (done) => {
await this.alfrescoJsApi.login(user.email, user.password); await this.alfrescoJsApi.login(user.email, user.password);
const importedApp = await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location); const importedApp = await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location);
@@ -86,7 +85,7 @@ describe('Dynamic Table', () => {
done(); done();
}); });
afterAll(async(done) => { afterAll(async (done) => {
await this.alfrescoJsApi.login(user.email, user.password); await this.alfrescoJsApi.login(user.email, user.password);
await this.alfrescoJsApi.activiti.modelsApi.deleteModel(appId); await this.alfrescoJsApi.activiti.modelsApi.deleteModel(appId);
@@ -129,7 +128,7 @@ describe('Dynamic Table', () => {
const app = resources.Files.APP_DYNAMIC_TABLE_DROPDOWN; const app = resources.Files.APP_DYNAMIC_TABLE_DROPDOWN;
const dropdown = widget.dropdown(); const dropdown = widget.dropdown();
beforeAll(async(done) => { beforeAll(async (done) => {
await this.alfrescoJsApi.login(user.email, user.password); await this.alfrescoJsApi.login(user.email, user.password);
@@ -141,7 +140,7 @@ describe('Dynamic Table', () => {
done(); done();
}); });
afterAll(async(done) => { afterAll(async (done) => {
await this.alfrescoJsApi.login(user.email, user.password); await this.alfrescoJsApi.login(user.email, user.password);
await this.alfrescoJsApi.activiti.modelsApi.deleteModel(appId); await this.alfrescoJsApi.activiti.modelsApi.deleteModel(appId);

View File

@@ -376,11 +376,11 @@ describe('Process List - Pagination', function () {
processDetailsPage.checkProcessTitleIsDisplayed(); processDetailsPage.checkProcessTitleIsDisplayed();
processFiltersPage.waitForTableBody(); processFiltersPage.waitForTableBody();
processFiltersPage.sortByName(true); processFiltersPage.sortByName('ASC');
processFiltersPage.waitForTableBody(); processFiltersPage.waitForTableBody();
processFiltersPage.checkProcessesSortedByNameAsc(); processFiltersPage.checkProcessesSortedByNameAsc();
processFiltersPage.sortByName(false); processFiltersPage.sortByName('DESC');
processFiltersPage.waitForTableBody(); processFiltersPage.waitForTableBody();
processFiltersPage.checkProcessesSortedByNameDesc(); processFiltersPage.checkProcessesSortedByNameDesc();
}); });
@@ -395,7 +395,7 @@ describe('Process List - Pagination', function () {
processDetailsPage.checkProcessTitleIsDisplayed(); processDetailsPage.checkProcessTitleIsDisplayed();
processFiltersPage.waitForTableBody(); processFiltersPage.waitForTableBody();
processFiltersPage.sortByName(true); processFiltersPage.sortByName('ASC');
processFiltersPage.waitForTableBody(); processFiltersPage.waitForTableBody();
processFiltersPage.checkProcessesSortedByNameAsc(); processFiltersPage.checkProcessesSortedByNameAsc();

View File

@@ -83,12 +83,12 @@ describe('Task List Pagination - Sorting', () => {
taskPage.tasksListPage().getDataTable().waitForTableBody(); taskPage.tasksListPage().getDataTable().waitForTableBody();
paginationPage.selectItemsPerPage(itemsPerPage.twenty); paginationPage.selectItemsPerPage(itemsPerPage.twenty);
taskPage.tasksListPage().getDataTable().waitForTableBody(); taskPage.tasksListPage().getDataTable().waitForTableBody();
taskPage.filtersPage().sortByName(true); taskPage.filtersPage().sortByName('ASC');
taskPage.tasksListPage().getDataTable().waitForTableBody(); taskPage.tasksListPage().getDataTable().waitForTableBody();
taskPage.filtersPage().getAllRowsNameColumn().then(function (list) { taskPage.filtersPage().getAllRowsNameColumn().then(function (list) {
expect(JSON.stringify(list) === JSON.stringify(taskNames)).toEqual(true); expect(JSON.stringify(list) === JSON.stringify(taskNames)).toEqual(true);
}); });
taskPage.filtersPage().sortByName(false); taskPage.filtersPage().sortByName('DESC');
taskPage.filtersPage().getAllRowsNameColumn().then(function (list) { taskPage.filtersPage().getAllRowsNameColumn().then(function (list) {
taskNames.reverse(); taskNames.reverse();
expect(JSON.stringify(list) === JSON.stringify(taskNames)).toEqual(true); expect(JSON.stringify(list) === JSON.stringify(taskNames)).toEqual(true);

View File

@@ -15,18 +15,16 @@
* limitations under the License. * limitations under the License.
*/ */
import { LoginPage, LocalStorageUtil } from '@alfresco/adf-testing'; import { LoginPage, LocalStorageUtil, DatePickerPage, DateUtil } from '@alfresco/adf-testing';
import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog';
import { DataTableComponentPage } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '@alfresco/adf-testing';
import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { SearchResultsPage } from '../../pages/adf/searchResultsPage';
import { DatePickerPage } from '../../pages/adf/material/datePickerPage';
import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
import { SearchFiltersPage } from '../../pages/adf/searchFiltersPage'; import { SearchFiltersPage } from '../../pages/adf/searchFiltersPage';
import { SearchConfiguration } from '../search.config'; import { SearchConfiguration } from '../search.config';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { browser } from 'protractor'; import { browser } from 'protractor';
import { DateUtil } from '../../util/dateUtil';
describe('Search Date Range Filter', () => { describe('Search Date Range Filter', () => {
@@ -131,7 +129,7 @@ describe('Search Date Range Filter', () => {
dateRangeFilter.checkApplyButtonIsEnabled() dateRangeFilter.checkApplyButtonIsEnabled()
.clickApplyButton(); .clickApplyButton();
searchResults.sortByCreated(true); searchResults.sortByCreated('ASC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Created'); const results = await dataTable.geCellElementDetail('Created');

View File

@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { LoginPage, LocalStorageUtil } from '@alfresco/adf-testing'; import { LoginPage, LocalStorageUtil, DateUtil } from '@alfresco/adf-testing';
import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog';
import { DataTableComponentPage } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '@alfresco/adf-testing';
import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { SearchResultsPage } from '../../pages/adf/searchResultsPage';
@@ -29,7 +29,6 @@ import { FileModel } from '../../models/ACS/fileModel';
import { browser } from 'protractor'; import { browser } from 'protractor';
import resources = require('../../util/resources'); import resources = require('../../util/resources');
import { SearchConfiguration } from '../search.config'; import { SearchConfiguration } from '../search.config';
import { DateUtil } from '../../util/dateUtil';
describe('Search Number Range Filter', () => { describe('Search Number Range Filter', () => {
@@ -165,7 +164,7 @@ describe('Search Number Range Filter', () => {
sizeRangeFilter.clickApplyButton(); sizeRangeFilter.clickApplyButton();
searchResults.tableIsLoaded(); searchResults.tableIsLoaded();
searchResults.sortBySize(false); searchResults.sortBySize('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Size'); const results = await dataTable.geCellElementDetail('Size');
@@ -196,7 +195,7 @@ describe('Search Number Range Filter', () => {
expect(sizeRangeFilter.checkApplyButtonIsEnabled()).toBe(true); expect(sizeRangeFilter.checkApplyButtonIsEnabled()).toBe(true);
sizeRangeFilter.clickApplyButton(); sizeRangeFilter.clickApplyButton();
searchResults.sortBySize(false); searchResults.sortBySize('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Size'); const results = await dataTable.geCellElementDetail('Size');
@@ -214,7 +213,7 @@ describe('Search Number Range Filter', () => {
searchFilters.checkNameFilterIsDisplayed() searchFilters.checkNameFilterIsDisplayed()
.checkNameFilterIsExpanded(); .checkNameFilterIsExpanded();
nameFilter.searchByName('z*'); nameFilter.searchByName('z*');
searchResults.sortBySize(false); searchResults.sortBySize('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Size'); const results = await dataTable.geCellElementDetail('Size');
@@ -270,7 +269,7 @@ describe('Search Number Range Filter', () => {
sizeRangeFilter.clickApplyButton(); sizeRangeFilter.clickApplyButton();
searchResults.tableIsLoaded(); searchResults.tableIsLoaded();
searchResults.sortBySize(false); searchResults.sortBySize('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Size'); const results = await dataTable.geCellElementDetail('Size');
@@ -308,7 +307,7 @@ describe('Search Number Range Filter', () => {
expect(sizeRangeFilter.getToNumber()).toEqual(''); expect(sizeRangeFilter.getToNumber()).toEqual('');
sizeRangeFilter.putFromNumber(0).putToNumber(1).clickApplyButton(); sizeRangeFilter.putFromNumber(0).putToNumber(1).clickApplyButton();
searchResults.sortBySize(false); searchResults.sortBySize('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Size'); const results = await dataTable.geCellElementDetail('Size');
@@ -418,7 +417,7 @@ describe('Search Number Range Filter', () => {
sizeRangeFilter.clickApplyButton(); sizeRangeFilter.clickApplyButton();
searchResults.tableIsLoaded(); searchResults.tableIsLoaded();
searchResults.sortByCreated(false); searchResults.sortByCreated('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await dataTable.geCellElementDetail('Created'); const results = await dataTable.geCellElementDetail('Created');

View File

@@ -118,7 +118,7 @@ describe('Search Number Range Filter', () => {
it('[C276981] Should be able to clear value in Search Size Slider', () => { it('[C276981] Should be able to clear value in Search Size Slider', () => {
const size = 5; const size = 5;
sizeSliderFilter.checkSliderIsDisplayed().setValue(size); sizeSliderFilter.checkSliderIsDisplayed().setValue(size);
searchResults.sortBySize(false) searchResults.sortBySize('DESC')
.tableIsLoaded(); .tableIsLoaded();
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
@@ -137,7 +137,7 @@ describe('Search Number Range Filter', () => {
sizeSliderFilter.checkSliderIsDisplayed() sizeSliderFilter.checkSliderIsDisplayed()
.clickClearButton(); .clickClearButton();
searchResults.sortBySize(false) searchResults.sortBySize('DESC')
.tableIsLoaded(); .tableIsLoaded();
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {

View File

@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { LoginPage, LocalStorageUtil, BrowserActions } from '@alfresco/adf-testing'; import { LoginPage, LocalStorageUtil, BrowserActions, SearchSortingPickerPage } from '@alfresco/adf-testing';
import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog';
import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { SearchResultsPage } from '../../pages/adf/searchResultsPage';
import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
@@ -29,7 +29,6 @@ import { AcsUserModel } from '../../models/ACS/acsUserModel';
import { browser } from 'protractor'; import { browser } from 'protractor';
import resources = require('../../util/resources'); import resources = require('../../util/resources');
import { SearchConfiguration } from '../search.config'; import { SearchConfiguration } from '../search.config';
import { SearchSortingPickerPage } from '../../pages/adf/content-services/search/components/search-sortingPicker.page';
describe('Search Sorting Picker', () => { describe('Search Sorting Picker', () => {
@@ -175,29 +174,20 @@ describe('Search Sorting Picker', () => {
it('[C277280] Should be able to sort the search results by "Name" ASC', () => { it('[C277280] Should be able to sort the search results by "Name" ASC', () => {
searchFilters.checkSearchFiltersIsDisplayed(); searchFilters.checkSearchFiltersIsDisplayed();
searchFilters.creatorCheckListFiltersPage().filterBy(`${acsUser.firstName} ${acsUser.lastName}`); searchFilters.creatorCheckListFiltersPage().filterBy(`${acsUser.firstName} ${acsUser.lastName}`);
searchResults.sortByName(true); searchResults.sortByName('ASC');
expect(searchResults.checkListIsOrderedByNameAsc()).toBe(true); expect(searchResults.checkListIsOrderedByNameAsc()).toBe(true);
}); });
it('[C277281] Should be able to sort the search results by "Name" DESC', () => { it('[C277281] Should be able to sort the search results by "Name" DESC', () => {
searchFilters.checkSearchFiltersIsDisplayed(); searchFilters.checkSearchFiltersIsDisplayed();
searchFilters.creatorCheckListFiltersPage().filterBy(`${acsUser.firstName} ${acsUser.lastName}`); searchFilters.creatorCheckListFiltersPage().filterBy(`${acsUser.firstName} ${acsUser.lastName}`);
searchResults.sortByName(false); searchResults.sortByName('DESC');
expect(searchResults.checkListIsOrderedByNameDesc()).toBe(true); expect(searchResults.checkListIsOrderedByNameDesc()).toBe(true);
}); });
it('[C277282] Should be able to sort the search results by "Author" ASC', () => {
searchResults.sortByAuthor(true);
expect(searchResults.checkListIsOrderedByAuthorAsc()).toBe(true);
});
it('[C277283] Should be able to sort the search results by "Author" DESC', () => {
searchResults.sortByAuthor(false);
expect(searchResults.checkListIsOrderedByAuthorDesc()).toBe(true);
});
it('[C277286] Should be able to sort the search results by "Created Date" ASC', () => { it('[C277286] Should be able to sort the search results by "Created Date" ASC', () => {
searchResults.sortByCreated(true); searchResults.sortByCreated('ASC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await searchResults.dataTable.geCellElementDetail('Created'); const results = await searchResults.dataTable.geCellElementDetail('Created');
expect(contentServices.checkElementsDateSortedAsc(results)).toBe(true); expect(contentServices.checkElementsDateSortedAsc(results)).toBe(true);
@@ -205,7 +195,7 @@ describe('Search Sorting Picker', () => {
}); });
it('[C277287] Should be able to sort the search results by "Created Date" DESC', () => { it('[C277287] Should be able to sort the search results by "Created Date" DESC', () => {
searchResults.sortByCreated(false); searchResults.sortByCreated('DESC');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const results = await searchResults.dataTable.geCellElementDetail('Created'); const results = await searchResults.dataTable.geCellElementDetail('Created');
expect(contentServices.checkElementsDateSortedDesc(results)).toBe(true); expect(contentServices.checkElementsDateSortedDesc(results)).toBe(true);
@@ -230,7 +220,7 @@ describe('Search Sorting Picker', () => {
.enterTextAndPressEnter(search); .enterTextAndPressEnter(search);
searchSortingPicker.checkSortingSelectorIsDisplayed() searchSortingPicker.checkSortingSelectorIsDisplayed()
.sortBy(true, 'Modified Date'); .sortBy('ASC', 'Modified Date');
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
const idList = await contentServices.getElementsDisplayedId(); const idList = await contentServices.getElementsDisplayedId();
@@ -245,25 +235,4 @@ describe('Search Sorting Picker', () => {
}); });
}); });
it('[C277301] Should be able to change default sorting option for the search results', async () => {
navigationBar.clickContentServicesButton();
jsonFile = SearchConfiguration.getConfiguration();
jsonFile.sorting.options.push({
'key': 'createdByUser',
'label': 'Author',
'type': 'FIELD',
'field': 'cm:creator',
'ascending': true
});
await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile));
searchDialog.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search);
searchSortingPicker.checkSortingSelectorIsDisplayed();
expect(searchResults.checkListIsOrderedByAuthorAsc()).toBe(true);
});
}); });

View File

@@ -9,16 +9,21 @@ The ADF CLI manages, builds , doc and test your ADF Application projects.
## Installation ## Installation
To get started follow these instructions: To get started follow these instructions:
``
npm install adf-cli -g
``sh
npm install aadf-cli -g
`` ``
### License Check ### License Check
Move in the folder where you have your pacakge.json and run the command: Move in the folder where you have your package.json and run the command:
```bash ```bash
adf-license adf-license
``` ```
### Audit Check
Move in the folder where you have your package.json and run the command:
```bash
adf-audit
```

32
lib/cli/bin/doc/audit.js Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env node
var shell = require('shelljs');
var cmd = "npm audit --json";
var ejs = require('ejs');
var path = require('path');
var fs = require('fs');
var templatePath = path.resolve(__dirname, 'templates', 'auditPage.ejs');
try {
var jsonAudit = shell.exec(cmd, {silent:true});
} catch(err) {
console.error('error'+ err);
}
var packageJson = JSON.parse(fs.readFileSync(path.resolve('./','package.json')));
ejs.renderFile(templatePath, {
jsonAudit: JSON.parse(jsonAudit),
projVersion: packageJson.version,
projName: packageJson.description
}, {}, (err, mdText) => {
if (err) {
console.log(err);
} else {
fs.writeFileSync(`audit-info-${packageJson.version}.md`, mdText);
console.log(`Wrote Audit`);
}
});

31
lib/cli/bin/doc/templates/auditPage.ejs vendored Normal file
View File

@@ -0,0 +1,31 @@
---
Title: License info, <%= projName %> <%= projVersion %>
---
# License information for <%= projName %> <%= projVersion %>
This page lists all third party libraries that ADF <%= projVersion %> depends on.
## Risks
- Critical risk dependencies <%= jsonAudit.metadata.vulnerabilities.critical %>
- High risk dependencies <%= jsonAudit.metadata.vulnerabilities.high %>
- Moderate risk dependencies <%= jsonAudit.metadata.vulnerabilities.moderate %>
- Low risk dependencies <%= jsonAudit.metadata.vulnerabilities.low %>
Dependencies analyzed <%= jsonAudit.metadata.totalDependencies %>
## Libraries
| Severity | Vulnerable versions | Module |
| --- | --- | --- |
<%
for(var currentAdvisories in jsonAudit.advisories) {
severity = jsonAudit.advisories[currentAdvisories].severity;
vulnerable_versions = JSON.stringify(jsonAudit.advisories[currentAdvisories].vulnerable_versions);
module = jsonAudit.advisories[currentAdvisories].module_name;
-%>
|<%= severity %> | <%= vulnerable_versions %> | <%= module %> |
<% } %>

View File

@@ -4,11 +4,36 @@
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"JSONStream": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
"requires": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
}
},
"abbrev": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
}, },
"agent-base": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
"requires": {
"es6-promisify": "^5.0.0"
}
},
"agentkeepalive": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
"integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
"requires": {
"humanize-ms": "^1.2.1"
}
},
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -17,6 +42,11 @@
"color-convert": "^1.9.0" "color-convert": "^1.9.0"
} }
}, },
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"array-find-index": { "array-find-index": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
@@ -32,6 +62,11 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
}, },
"bluebird": {
"version": "3.5.5",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
"integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w=="
},
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -41,6 +76,52 @@
"concat-map": "0.0.1" "concat-map": "0.0.1"
} }
}, },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"builtins": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
"integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og="
},
"cacache": {
"version": "11.3.2",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz",
"integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==",
"requires": {
"bluebird": "^3.5.3",
"chownr": "^1.1.1",
"figgy-pudding": "^3.5.1",
"glob": "^7.1.3",
"graceful-fs": "^4.1.15",
"lru-cache": "^5.1.1",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
"promise-inflight": "^1.0.1",
"rimraf": "^2.6.2",
"ssri": "^6.0.1",
"unique-filename": "^1.1.1",
"y18n": "^4.0.0"
},
"dependencies": {
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"requires": {
"yallist": "^3.0.2"
}
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A=="
}
}
},
"chalk": { "chalk": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -51,6 +132,11 @@
"supports-color": "^5.3.0" "supports-color": "^5.3.0"
} }
}, },
"chownr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
"integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
},
"color-convert": { "color-convert": {
"version": "1.9.3", "version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -64,11 +150,50 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
}, },
"commander": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
},
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
}, },
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
"requires": {
"aproba": "^1.1.1",
"fs-write-stream-atomic": "^1.0.8",
"iferr": "^0.1.5",
"mkdirp": "^0.5.1",
"rimraf": "^2.5.4",
"run-queue": "^1.0.0"
}
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cyclist": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
"integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA="
},
"debug": { "debug": {
"version": "3.2.6", "version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
@@ -91,11 +216,90 @@
"wrappy": "1" "wrappy": "1"
} }
}, },
"duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
"integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
"requires": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
"readable-stream": "^2.0.0",
"stream-shift": "^1.0.0"
}
},
"encoding": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
"iconv-lite": "~0.4.13"
}
},
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
"requires": {
"once": "^1.4.0"
}
},
"err-code": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
"integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA="
},
"es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
"es6-promise": "^4.0.3"
}
},
"escape-string-regexp": { "escape-string-regexp": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
}, },
"figgy-pudding": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w=="
},
"flush-write-stream": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
"integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
"requires": {
"inherits": "^2.0.3",
"readable-stream": "^2.3.6"
}
},
"from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
}
},
"fs-write-stream-atomic": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
"integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
"requires": {
"graceful-fs": "^4.1.2",
"iferr": "^0.1.5",
"imurmurhash": "^0.1.4",
"readable-stream": "1 || 2"
}
},
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -129,6 +333,70 @@
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
}, },
"http-cache-semantics": {
"version": "3.8.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
"integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w=="
},
"http-proxy-agent": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
"integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
"requires": {
"agent-base": "4",
"debug": "3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
}
},
"humanize-ms": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
"integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
"requires": {
"ms": "^2.0.0"
}
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"iferr": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
},
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
},
"inflight": { "inflight": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -143,11 +411,31 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
}, },
"interpret": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
"integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw=="
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"json-parse-better-errors": { "json-parse-better-errors": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
}, },
"jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
},
"license-checker": { "license-checker": {
"version": "25.0.1", "version": "25.0.1",
"resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
@@ -165,6 +453,33 @@
"treeify": "^1.1.0" "treeify": "^1.1.0"
} }
}, },
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"make-fetch-happen": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz",
"integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==",
"requires": {
"agentkeepalive": "^3.4.1",
"cacache": "^11.0.1",
"http-cache-semantics": "^3.8.1",
"http-proxy-agent": "^2.1.0",
"https-proxy-agent": "^2.2.1",
"lru-cache": "^4.1.2",
"mississippi": "^3.0.0",
"node-fetch-npm": "^2.0.2",
"promise-retry": "^1.1.1",
"socks-proxy-agent": "^4.0.0",
"ssri": "^6.0.0"
}
},
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -178,6 +493,23 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}, },
"mississippi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
"integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
"requires": {
"concat-stream": "^1.5.0",
"duplexify": "^3.4.2",
"end-of-stream": "^1.1.0",
"flush-write-stream": "^1.0.0",
"from2": "^2.1.0",
"parallel-transform": "^1.1.0",
"pump": "^3.0.0",
"pumpify": "^1.3.3",
"stream-each": "^1.1.0",
"through2": "^2.0.0"
}
},
"mkdirp": { "mkdirp": {
"version": "0.5.1", "version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
@@ -186,11 +518,34 @@
"minimist": "0.0.8" "minimist": "0.0.8"
} }
}, },
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
"requires": {
"aproba": "^1.1.1",
"copy-concurrently": "^1.0.0",
"fs-write-stream-atomic": "^1.0.8",
"mkdirp": "^0.5.1",
"rimraf": "^2.5.4",
"run-queue": "^1.0.3"
}
},
"ms": { "ms": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}, },
"node-fetch-npm": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
"integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==",
"requires": {
"encoding": "^0.1.11",
"json-parse-better-errors": "^1.0.0",
"safe-buffer": "^5.1.1"
}
},
"nopt": { "nopt": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
@@ -211,6 +566,30 @@
"validate-npm-package-license": "^3.0.1" "validate-npm-package-license": "^3.0.1"
} }
}, },
"npm-package-arg": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz",
"integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==",
"requires": {
"hosted-git-info": "^2.6.0",
"osenv": "^0.1.5",
"semver": "^5.5.0",
"validate-npm-package-name": "^3.0.0"
}
},
"npm-registry-fetch": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz",
"integrity": "sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw==",
"requires": {
"JSONStream": "^1.3.4",
"bluebird": "^3.5.1",
"figgy-pudding": "^3.4.1",
"lru-cache": "^4.1.3",
"make-fetch-happen": "^4.0.1",
"npm-package-arg": "^6.1.0"
}
},
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -238,6 +617,16 @@
"os-tmpdir": "^1.0.0" "os-tmpdir": "^1.0.0"
} }
}, },
"parallel-transform": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
"integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
"requires": {
"cyclist": "~0.2.2",
"inherits": "^2.0.3",
"readable-stream": "^2.1.5"
}
},
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -248,6 +637,60 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
}, },
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
},
"promise-retry": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
"integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=",
"requires": {
"err-code": "^1.0.0",
"retry": "^0.10.0"
}
},
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"pumpify": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
"integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
"requires": {
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
"pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
}
}
},
"read-installed": { "read-installed": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
@@ -274,6 +717,20 @@
"slash": "^1.0.0" "slash": "^1.0.0"
} }
}, },
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"readdir-scoped-modules": { "readdir-scoped-modules": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz", "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz",
@@ -285,6 +742,14 @@
"once": "^1.3.0" "once": "^1.3.0"
} }
}, },
"rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"requires": {
"resolve": "^1.1.6"
}
},
"resolve": { "resolve": {
"version": "1.11.0", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
@@ -293,11 +758,52 @@
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
}, },
"retry": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
"integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q="
},
"rimraf": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"requires": {
"glob": "^7.1.3"
}
},
"run-queue": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
"requires": {
"aproba": "^1.1.1"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA=="
}, },
"shelljs": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz",
"integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==",
"requires": {
"glob": "^7.0.0",
"interpret": "^1.0.0",
"rechoir": "^0.6.2"
}
},
"slash": { "slash": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -308,6 +814,39 @@
"resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
"integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
}, },
"smart-buffer": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz",
"integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw=="
},
"socks": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz",
"integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==",
"requires": {
"ip": "^1.1.5",
"smart-buffer": "4.0.2"
}
},
"socks-proxy-agent": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
"integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
"requires": {
"agent-base": "~4.2.1",
"socks": "~2.3.2"
},
"dependencies": {
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"requires": {
"es6-promisify": "^5.0.0"
}
}
}
},
"spdx-compare": { "spdx-compare": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
@@ -366,6 +905,36 @@
"spdx-ranges": "^2.0.0" "spdx-ranges": "^2.0.0"
} }
}, },
"ssri": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
"integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
"requires": {
"figgy-pudding": "^3.5.1"
}
},
"stream-each": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
"integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
"requires": {
"end-of-stream": "^1.1.0",
"stream-shift": "^1.0.0"
}
},
"stream-shift": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
},
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -374,11 +943,51 @@
"has-flag": "^3.0.0" "has-flag": "^3.0.0"
} }
}, },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
"requires": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
}
},
"treeify": { "treeify": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
"integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A=="
}, },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
"requires": {
"unique-slug": "^2.0.0"
}
},
"unique-slug": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
"integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
"requires": {
"imurmurhash": "^0.1.4"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"util-extend": { "util-extend": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
@@ -393,10 +1002,33 @@
"spdx-expression-parse": "^3.0.0" "spdx-expression-parse": "^3.0.0"
} }
}, },
"validate-npm-package-name": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
"integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
"requires": {
"builtins": "^1.0.3"
}
},
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
},
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
} }
} }
} }

View File

@@ -4,7 +4,8 @@
"version": "3.2.1", "version": "3.2.1",
"author": "Alfresco Software, Ltd.", "author": "Alfresco Software, Ltd.",
"bin": { "bin": {
"adf-license": "./bin/doc/licenseList.js" "adf-license": "./bin/doc/licenseList.js",
"adf-audit": "./bin/doc/audit.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@@ -14,9 +15,11 @@
"url": "https://github.com/Alfresco/alfresco-ng2-components/issues" "url": "https://github.com/Alfresco/alfresco-ng2-components/issues"
}, },
"dependencies": { "dependencies": {
"spdx-license-list": "^5.0.0", "commander": "^2.15.1",
"license-checker": "^25.0.1", "license-checker": "^25.0.1",
"commander": "^2.15.1" "npm-registry-fetch": "^3.9.0",
"shelljs": "^0.8.3",
"spdx-license-list": "^5.0.0"
}, },
"keywords": [ "keywords": [
"alfresco-component" "alfresco-component"

View File

@@ -18,3 +18,5 @@
export * from './like.page'; export * from './like.page';
export * from './rate.page'; export * from './rate.page';
export * from './document-list.page'; export * from './document-list.page';
export * from './search/public-api';

View File

@@ -16,8 +16,8 @@
*/ */
import { by, browser, protractor } from 'protractor'; import { by, browser, protractor } from 'protractor';
import { DatePickerPage } from '../../../material/datePickerPage'; import { DatePickerPage } from '../../../material/pages/date-picker.page';
import { BrowserVisibility } from '@alfresco/adf-testing'; import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class DateRangeFilterPage { export class DateRangeFilterPage {
@@ -71,7 +71,7 @@ export class DateRangeFilterPage {
return this; return this;
} }
checkFromErrorMessageIsDisplayed(msg) { checkFromErrorMessageIsDisplayed(msg: string) {
BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorMessage)); BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorMessage));
browser.controlFlow().execute(async () => { browser.controlFlow().execute(async () => {
await expect(this.filter.element(this.fromErrorMessage).getText()).toEqual(msg); await expect(this.filter.element(this.fromErrorMessage).getText()).toEqual(msg);

View File

@@ -15,7 +15,8 @@
* limitations under the License. * limitations under the License.
*/ */
import { by, protractor } from 'protractor'; import { by, protractor } from 'protractor';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { BrowserActions } from '../../../core/utils/browser-actions';
import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class NumberRangeFilterPage { export class NumberRangeFilterPage {

View File

@@ -0,0 +1,25 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './search-categories.page';
export * from './date-range-filter.page';
export * from './number-range-filter.page';
export * from './search-checkList.page';
export * from './search-radio.page';
export * from './search-slider.page';
export * from './search-sorting-picker.page';
export * from './search-text.page';

View File

@@ -16,13 +16,14 @@
*/ */
import { by, ElementFinder } from 'protractor'; import { by, ElementFinder } from 'protractor';
import { SearchTextPage } from './components/search-text'; import { SearchTextPage } from './search-text.page';
import { SearchCheckListPage } from './components/search-checkList'; import { SearchCheckListPage } from './search-checkList.page';
import { SearchRadioPage } from './components/search-radio'; import { SearchRadioPage } from './search-radio.page';
import { DateRangeFilterPage } from './components/dateRangeFilterPage'; import { DateRangeFilterPage } from './date-range-filter.page';
import { NumberRangeFilterPage } from './components/numberRangeFilterPage'; import { NumberRangeFilterPage } from './number-range-filter.page';
import { SearchSliderPage } from './components/search-slider.page'; import { SearchSliderPage } from './search-slider.page';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { BrowserActions } from '../../../core/utils/browser-actions';
import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class SearchCategoriesPage { export class SearchCategoriesPage {

View File

@@ -16,7 +16,8 @@
*/ */
import { element, by, ElementFinder } from 'protractor'; import { element, by, ElementFinder } from 'protractor';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { BrowserActions } from '../../../core/utils/browser-actions';
import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class SearchCheckListPage { export class SearchCheckListPage {
@@ -30,29 +31,29 @@ export class SearchCheckListPage {
this.filter = filter; this.filter = filter;
} }
clickCheckListOption(option) { clickCheckListOption(option: string) {
BrowserVisibility.waitUntilElementIsVisible(this.filter); BrowserVisibility.waitUntilElementIsVisible(this.filter);
const result = this.filter.all(by.css(`mat-checkbox[data-automation-id*='${option}'] .mat-checkbox-inner-container`)).first(); const result = this.filter.all(by.css(`mat-checkbox[data-automation-id*='${option}'] .mat-checkbox-inner-container`)).first();
BrowserActions.click(result); BrowserActions.click(result);
} }
checkChipIsDisplayed(option) { checkChipIsDisplayed(option: string) {
BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'))); BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon')));
return this; return this;
} }
checkChipIsNotDisplayed(option) { checkChipIsNotDisplayed(option: string) {
BrowserVisibility.waitUntilElementIsNotOnPage(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'))); BrowserVisibility.waitUntilElementIsNotOnPage(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon')));
return this; return this;
} }
removeFilterOption(option) { removeFilterOption(option: string) {
const cancelChipButton = element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon')); const cancelChipButton = element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'));
BrowserActions.click(cancelChipButton); BrowserActions.click(cancelChipButton);
return this; return this;
} }
filterBy(option) { filterBy(option: string) {
this.checkSearchFilterInputIsDisplayed(); this.checkSearchFilterInputIsDisplayed();
this.searchInFilter(option); this.searchInFilter(option);
this.clickCheckListOption(option); this.clickCheckListOption(option);
@@ -64,7 +65,7 @@ export class SearchCheckListPage {
return this; return this;
} }
searchInFilter(option) { searchInFilter(option: string) {
BrowserVisibility.waitUntilElementIsClickable(this.filter); BrowserVisibility.waitUntilElementIsClickable(this.filter);
const inputElement = this.filter.all(this.inputBy).first(); const inputElement = this.filter.all(this.inputBy).first();
BrowserVisibility.waitUntilElementIsClickable(inputElement); BrowserVisibility.waitUntilElementIsClickable(inputElement);
@@ -118,7 +119,7 @@ export class SearchCheckListPage {
return this; return this;
} }
getBucketNumberOfFilterType(option) { getBucketNumberOfFilterType(option: string) {
const fileTypeFilter = this.filter.all(by.css('mat-checkbox[data-automation-id*=".' + option + '"] span')).first(); const fileTypeFilter = this.filter.all(by.css('mat-checkbox[data-automation-id*=".' + option + '"] span')).first();
BrowserVisibility.waitUntilElementIsVisible(fileTypeFilter); BrowserVisibility.waitUntilElementIsVisible(fileTypeFilter);
const bucketNumber = fileTypeFilter.getText().then((valueOfBucket) => { const bucketNumber = fileTypeFilter.getText().then((valueOfBucket) => {
@@ -130,19 +131,19 @@ export class SearchCheckListPage {
return bucketNumber; return bucketNumber;
} }
checkCheckListOptionIsDisplayed(option) { checkCheckListOptionIsDisplayed(option: string) {
BrowserVisibility.waitUntilElementIsVisible(this.filter); BrowserVisibility.waitUntilElementIsVisible(this.filter);
const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}']`)); const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}']`));
return BrowserVisibility.waitUntilElementIsVisible(result); return BrowserVisibility.waitUntilElementIsVisible(result);
} }
checkCheckListOptionIsNotSelected(option) { checkCheckListOptionIsNotSelected(option: string) {
BrowserVisibility.waitUntilElementIsVisible(this.filter); BrowserVisibility.waitUntilElementIsVisible(this.filter);
const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}'][class*='checked']`)); const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}'][class*='checked']`));
return BrowserVisibility.waitUntilElementIsNotVisible(result); return BrowserVisibility.waitUntilElementIsNotVisible(result);
} }
checkCheckListOptionIsSelected(option) { checkCheckListOptionIsSelected(option: string) {
BrowserVisibility.waitUntilElementIsVisible(this.filter); BrowserVisibility.waitUntilElementIsVisible(this.filter);
const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}'][class*='checked']`)); const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}'][class*='checked']`));
return BrowserVisibility.waitUntilElementIsVisible(result); return BrowserVisibility.waitUntilElementIsVisible(result);

View File

@@ -16,7 +16,8 @@
*/ */
import { element, by, browser } from 'protractor'; import { element, by, browser } from 'protractor';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { BrowserActions } from '../../../core/utils/browser-actions';
import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class SearchRadioPage { export class SearchRadioPage {
@@ -28,17 +29,17 @@ export class SearchRadioPage {
this.filter = filter; this.filter = filter;
} }
checkFilterRadioButtonIsDisplayed(filterName) { checkFilterRadioButtonIsDisplayed(filterName: string) {
const filterType = element(by.css('mat-radio-button[data-automation-id="search-radio-' + filterName + '"]')); const filterType = element(by.css('mat-radio-button[data-automation-id="search-radio-' + filterName + '"]'));
return BrowserVisibility.waitUntilElementIsVisible(filterType); return BrowserVisibility.waitUntilElementIsVisible(filterType);
} }
checkFilterRadioButtonIsChecked(filterName) { checkFilterRadioButtonIsChecked(filterName: string) {
const selectedFilterType = element(by.css('mat-radio-button[data-automation-id="search-radio-' + filterName + '"][class*="checked"]')); const selectedFilterType = element(by.css('mat-radio-button[data-automation-id="search-radio-' + filterName + '"][class*="checked"]'));
return BrowserVisibility.waitUntilElementIsVisible(selectedFilterType); return BrowserVisibility.waitUntilElementIsVisible(selectedFilterType);
} }
clickFilterRadioButton(filterName) { clickFilterRadioButton(filterName: string) {
browser.executeScript(`document.querySelector('[data-automation-id="search-radio-${filterName}"] input').click();`); browser.executeScript(`document.querySelector('[data-automation-id="search-radio-${filterName}"] input').click();`);
} }

View File

@@ -16,7 +16,7 @@
*/ */
import { browser, by } from 'protractor'; import { browser, by } from 'protractor';
import { BrowserVisibility } from '@alfresco/adf-testing'; import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class SearchSliderPage { export class SearchSliderPage {
@@ -41,11 +41,10 @@ export class SearchSliderPage {
return this.filter.element(this.slider).getAttribute('aria-valuenow'); return this.filter.element(this.slider).getAttribute('aria-valuenow');
} }
setValue(value) { setValue(value: number) {
browser.actions().dragAndDrop( browser.actions().dragAndDrop(
this.filter.element(this.slider).element(by.css('div[class="mat-slider-thumb"]')), this.filter.element(this.slider).element(by.css('div[class="mat-slider-thumb"]')),
{x: value * 10, y: 0} { x: value * 10, y: 0 }
).perform(); ).perform();
return this; return this;
} }

View File

@@ -16,7 +16,8 @@
*/ */
import { browser, by, element, protractor } from 'protractor'; import { browser, by, element, protractor } from 'protractor';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { BrowserActions } from '../../../core/utils/browser-actions';
import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class SearchSortingPickerPage { export class SearchSortingPickerPage {
@@ -24,7 +25,7 @@ export class SearchSortingPickerPage {
orderArrow = element(by.css('adf-sorting-picker button mat-icon')); orderArrow = element(by.css('adf-sorting-picker button mat-icon'));
optionsDropdown = element(by.css('div[class*="mat-select-panel"]')); optionsDropdown = element(by.css('div[class*="mat-select-panel"]'));
sortBy(sortOrder, sortType) { sortBy(sortOrder: string, sortType: string | RegExp) {
BrowserActions.click(this.sortingSelector); BrowserActions.click(this.sortingSelector);
const selectedSortingOption = element(by.cssContainingText('span[class="mat-option-text"]', sortType)); const selectedSortingOption = element(by.cssContainingText('span[class="mat-option-text"]', sortType));
BrowserActions.click(selectedSortingOption); BrowserActions.click(selectedSortingOption);
@@ -32,10 +33,15 @@ export class SearchSortingPickerPage {
this.sortByOrder(sortOrder); this.sortByOrder(sortOrder);
} }
sortByOrder(sortOrder) { /**
* Sort the list by name column.
*
* @param sortOrder : 'ASC' to sort the list ascendant and 'DESC' for descendant
*/
sortByOrder(sortOrder: string) {
BrowserVisibility.waitUntilElementIsVisible(this.orderArrow); BrowserVisibility.waitUntilElementIsVisible(this.orderArrow);
this.orderArrow.getText().then((result) => { this.orderArrow.getText().then((result) => {
if (sortOrder === true) { if (sortOrder.toLocaleLowerCase() === 'asc') {
if (result !== 'arrow_upward') { if (result !== 'arrow_upward') {
browser.executeScript(`document.querySelector('adf-sorting-picker button mat-icon').click();`); browser.executeScript(`document.querySelector('adf-sorting-picker button mat-icon').click();`);
} }

View File

@@ -16,7 +16,7 @@
*/ */
import { protractor, by } from 'protractor'; import { protractor, by } from 'protractor';
import { BrowserVisibility } from '@alfresco/adf-testing'; import { BrowserVisibility } from '../../../core/utils/browser-visibility';
export class SearchTextPage { export class SearchTextPage {
@@ -32,7 +32,7 @@ export class SearchTextPage {
return this.filter.element(this.inputBy).getAttribute('placeholder'); return this.filter.element(this.inputBy).getAttribute('placeholder');
} }
searchByName(name) { searchByName(name: string) {
BrowserVisibility.waitUntilElementIsVisible(this.filter); BrowserVisibility.waitUntilElementIsVisible(this.filter);
this.filter.element(this.inputBy).clear(); this.filter.element(this.inputBy).clear();
this.filter.element(this.inputBy).sendKeys(name).sendKeys(protractor.Key.ENTER); this.filter.element(this.inputBy).sendKeys(name).sendKeys(protractor.Key.ENTER);

View File

@@ -132,25 +132,28 @@ export class DataTableComponentPage {
/** /**
* Check the list is sorted. * Check the list is sorted.
* *
* @param sortOrder: 'true' if the list is expected to be sorted ascendant and 'false' for descendant * @param sortOrder: 'ASC' if the list is expected to be sorted ascending and 'DESC' for descending
* @param locator: locator for column * @param columnTitle: titleColumn column
* @return 'true' if the list is sorted as expected and 'false' if it isn't * @return 'true' if the list is sorted as expected and 'false' if it isn't
*/ */
checkListIsSorted(sortOrder, locator) { checkListIsSorted(sortOrder: string, columnTitle: string) {
const deferred = protractor.promise.defer(); const deferred = protractor.promise.defer();
const column = element.all(by.css(`div[title='${locator}'] span`)); const column = element.all(by.css(`div.adf-datatable-cell[title='${columnTitle}'] span`));
BrowserVisibility.waitUntilElementIsVisible(column.first()); BrowserVisibility.waitUntilElementIsVisible(column.first());
const initialList = []; const initialList = [];
column.each(function (currentElement) { column.each(function (currentElement) {
currentElement.getText().then(function (text) { currentElement.getText().then(function (text) {
initialList.push(text); if (text.length !== 0) {
initialList.push(text.toLowerCase());
}
}); });
}).then(function () { }).then(function () {
let sortedList = initialList; let sortedList = [...initialList];
sortedList = sortedList.sort(); sortedList = sortedList.sort();
if (sortOrder === false) { if (sortOrder.toLocaleLowerCase() === 'desc') {
sortedList = sortedList.reverse(); sortedList = sortedList.reverse();
} }
deferred.fulfill(initialList.toString() === sortedList.toString()); deferred.fulfill(initialList.toString() === sortedList.toString());
}); });
return deferred.promise; return deferred.promise;
@@ -209,11 +212,16 @@ export class DataTableComponentPage {
return element.all(by.css(`adf-datatable div[title="${detail}"] span`)); return element.all(by.css(`adf-datatable div[title="${detail}"] span`));
} }
sortByColumn(sortOrder, column) { /**
const locator = by.css(`div[data-automation-id="auto_id_${column}"]`); * Sort the list by name column.
*
* @param sortOrder : 'ASC' to sort the list ascendant and 'DESC' for descendant
*/
sortByColumn(sortOrder: string, titleColumn: string) {
const locator = by.css(`div[data-automation-id="auto_id_${titleColumn}"]`);
BrowserVisibility.waitUntilElementIsVisible(element(locator)); BrowserVisibility.waitUntilElementIsVisible(element(locator));
return element(locator).getAttribute('class').then(function (result) { return element(locator).getAttribute('class').then(function (result) {
if (sortOrder === true) { if (sortOrder.toLocaleLowerCase() === 'asc') {
if (!result.includes('sorted-asc')) { if (!result.includes('sorted-asc')) {
if (result.includes('sorted-desc') || result.includes('sortable')) { if (result.includes('sorted-desc') || result.includes('sortable')) {
element(locator).click(); element(locator).click();
@@ -274,6 +282,10 @@ export class DataTableComponentPage {
return this; return this;
} }
waitTillContentLoaded() {
return BrowserVisibility.waitUntilElementIsVisible(this.contents);
}
checkColumnIsDisplayed(column) { checkColumnIsDisplayed(column) {
BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="auto_id_entry.${column}"]`))); BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="auto_id_entry.${column}"]`)));
return this; return this;

View File

@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import * as moment from 'moment'; import moment from 'moment-es6';
export class DateUtil { export class DateUtil {

View File

@@ -22,3 +22,4 @@ export * from './protractor.util';
export * from './local-storage.util'; export * from './local-storage.util';
export * from './file-browser.util'; export * from './file-browser.util';
export * from './form.util'; export * from './form.util';
export * from './date-util';

View File

@@ -16,8 +16,9 @@
*/ */
import { element, by, browser } from 'protractor'; import { element, by, browser } from 'protractor';
import { DateUtil } from '../../../util/dateUtil'; import { DateUtil } from '../../core/utils/date-util';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { BrowserVisibility } from '../../core/utils/browser-visibility';
import { BrowserActions } from '../../core/utils/browser-actions';
export class DatePickerPage { export class DatePickerPage {

View File

@@ -16,3 +16,4 @@
*/ */
export * from './tabs.page'; export * from './tabs.page';
export * from './date-picker.page';

View File

@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import { by, element, protractor } from 'protractor'; import { browser, by, element, protractor } from 'protractor';
import { EditProcessFilterDialogPage } from './dialog/edit-process-filter-dialog.page'; import { EditProcessFilterDialogPage } from './dialog/edit-process-filter-dialog.page';
import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserVisibility } from '../../core/utils/browser-visibility';
import { BrowserActions } from '../../core/utils/browser-actions'; import { BrowserActions } from '../../core/utils/browser-actions';
@@ -76,6 +76,7 @@ export class EditProcessFilterCloudComponentPage {
const orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); const orderElement = element.all(by.cssContainingText('mat-option span', option)).first();
BrowserActions.click(orderElement); BrowserActions.click(orderElement);
browser.sleep(1000);
return this; return this;
} }

View File

@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { by, element, protractor } from 'protractor'; import { browser, by, element, protractor } from 'protractor';
import { EditTaskFilterDialogPage } from './dialog/edit-task-filter-dialog.page'; import { EditTaskFilterDialogPage } from './dialog/edit-task-filter-dialog.page';
import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserVisibility } from '../../core/utils/browser-visibility';
import { BrowserActions } from '../../core/utils/browser-actions'; import { BrowserActions } from '../../core/utils/browser-actions';
@@ -79,6 +79,7 @@ export class EditTaskFilterCloudComponentPage {
const orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); const orderElement = element.all(by.cssContainingText('mat-option span', option)).first();
BrowserActions.click(orderElement); BrowserActions.click(orderElement);
browser.sleep(1000);
return this; return this;
} }

22
package-lock.json generated
View File

@@ -6504,8 +6504,7 @@
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"dev": true
}, },
"fsevents": { "fsevents": {
"version": "1.2.7", "version": "1.2.7",
@@ -7203,7 +7202,6 @@
"version": "7.1.3", "version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": { "requires": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
"inflight": "^1.0.4", "inflight": "^1.0.4",
@@ -8242,7 +8240,6 @@
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": { "requires": {
"once": "^1.3.0", "once": "^1.3.0",
"wrappy": "1" "wrappy": "1"
@@ -8351,8 +8348,7 @@
"interpret": { "interpret": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
"integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw=="
"dev": true
}, },
"invariant": { "invariant": {
"version": "2.2.4", "version": "2.2.4",
@@ -10855,7 +10851,6 @@
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
@@ -11991,7 +11986,6 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@@ -12472,8 +12466,7 @@
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
"dev": true
}, },
"path-is-inside": { "path-is-inside": {
"version": "1.0.2", "version": "1.0.2",
@@ -12490,8 +12483,7 @@
"path-parse": { "path-parse": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
"dev": true
}, },
"path-to-regexp": { "path-to-regexp": {
"version": "0.1.7", "version": "0.1.7",
@@ -13750,7 +13742,6 @@
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"dev": true,
"requires": { "requires": {
"resolve": "^1.1.6" "resolve": "^1.1.6"
} }
@@ -14069,7 +14060,6 @@
"version": "1.10.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"dev": true,
"requires": { "requires": {
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
@@ -14901,7 +14891,6 @@
"version": "0.8.3", "version": "0.8.3",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz",
"integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==",
"dev": true,
"requires": { "requires": {
"glob": "^7.0.0", "glob": "^7.0.0",
"interpret": "^1.0.0", "interpret": "^1.0.0",
@@ -18604,8 +18593,7 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
"dev": true
}, },
"write": { "write": {
"version": "1.0.3", "version": "1.0.3",

View File

@@ -112,6 +112,7 @@
"reflect-metadata": "0.1.13", "reflect-metadata": "0.1.13",
"remark-validate-links": "^8.0.0", "remark-validate-links": "^8.0.0",
"rxjs": "^6.2.2", "rxjs": "^6.2.2",
"shelljs": "^0.8.3",
"systemjs": "0.19.27", "systemjs": "0.19.27",
"web-animations-js": "2.3.1", "web-animations-js": "2.3.1",
"zone.js": "~0.8.26" "zone.js": "~0.8.26"