@@ -38,6 +38,7 @@
arrow_downward
add_circle_outline
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.spec.ts
index 10cd6a98c4..684c609d36 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.spec.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.spec.ts
@@ -19,26 +19,104 @@ import { LogServiceMock } from 'ng2-alfresco-core';
import { DynamicTableWidget } from './dynamic-table.widget';
import { DynamicTableModel, DynamicTableRow, DynamicTableColumn } from './dynamic-table.widget.model';
import { FormModel, FormFieldTypes, FormFieldModel } from './../core/index';
+import { ActivitiAlfrescoContentService } from '../../../services/activiti-alfresco.service';
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
+import { RowEditorComponent } from './editors/row.editor';
+import { DropdownEditorComponent } from './editors/dropdown/dropdown.editor';
+import { DateEditorComponent } from './editors/date/date.editor';
+import { BooleanEditorComponent } from './editors/boolean/boolean.editor';
+import { TextEditorComponent } from './editors/text/text.editor';
+import { CoreModule, LogService } from 'ng2-alfresco-core';
+import { FormService } from './../../../services/form.service';
+import { EcmModelService } from './../../../services/ecm-model.service';
import { WidgetVisibilityService } from '../../../services/widget-visibility.service';
+let fakeFormField = {
+ id: 'fake-dynamic-table',
+ name: 'fake-label',
+ value: [{1: 1, 2: 2, 3: 4}],
+ required: false,
+ readOnly: false,
+ overrideId: false,
+ colspan: 1,
+ placeholder: null,
+ minLength: 0,
+ maxLength: 0,
+ params: {
+ existingColspan: 1,
+ maxColspan: 1
+ },
+ sizeX: 2,
+ sizeY: 2,
+ row: -1,
+ col: -1,
+ columnDefinitions: [
+ {
+ id: 1,
+ name: 1,
+ type: 'String',
+ visible: true
+ },
+ {
+ id: 2,
+ name: 2,
+ type: 'String',
+ visible: true
+ },
+ {
+ id: 3,
+ name: 3,
+ type: 'String',
+ visible: true
+ }
+ ]
+};
+
describe('DynamicTableWidget', () => {
let widget: DynamicTableWidget;
+ let fixture: ComponentFixture;
+ let element: HTMLElement;
let table: DynamicTableModel;
- let visibilityService: WidgetVisibilityService;
- let logService: LogServiceMock;
+ let logService: LogService;
+ let componentHandler: any;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ CoreModule.forRoot()
+ ],
+ declarations: [DynamicTableWidget, RowEditorComponent,
+ DropdownEditorComponent, DateEditorComponent, BooleanEditorComponent, TextEditorComponent],
+ providers: [
+ FormService,
+ {provide: LogService, useClass: LogServiceMock},
+ ActivitiAlfrescoContentService,
+ EcmModelService,
+ WidgetVisibilityService
+ ]
+ }).compileComponents();
+ }));
beforeEach(() => {
- logService = new LogServiceMock();
const field = new FormFieldModel(new FormModel());
+ logService = TestBed.get(LogService);
table = new DynamicTableModel(field);
- visibilityService = new WidgetVisibilityService(null, logService);
- widget = new DynamicTableWidget(null, visibilityService, logService);
+ let changeDetectorSpy = jasmine.createSpyObj('cd', ['detectChanges']);
+ let nativeElementSpy = jasmine.createSpyObj('nativeElement', ['querySelector']);
+ changeDetectorSpy.nativeElement = nativeElementSpy;
+ let elementRefSpy = jasmine.createSpyObj('elementRef', ['']);
+ elementRefSpy.nativeElement = nativeElementSpy;
+
+ fixture = TestBed.createComponent(DynamicTableWidget);
+ element = fixture.nativeElement;
+ widget = fixture.componentInstance;
widget.content = table;
+
});
it('should select row on click', () => {
- let row = { selected: false };
+ let row = {selected: false};
widget.onRowClicked(row);
expect(row.selected).toBeTruthy();
@@ -46,7 +124,7 @@ describe('DynamicTableWidget', () => {
});
it('should requre table to select clicked row', () => {
- let row = { selected: false };
+ let row = {selected: false};
widget.content = null;
widget.onRowClicked(row);
@@ -54,7 +132,7 @@ describe('DynamicTableWidget', () => {
});
it('should reset selected row', () => {
- let row = { selected: false };
+ let row = {selected: false};
widget.content.rows.push(row);
widget.content.selectedRow = row;
expect(widget.content.selectedRow).toBe(row);
@@ -66,7 +144,7 @@ describe('DynamicTableWidget', () => {
});
it('should check selection', () => {
- let row = { selected: false };
+ let row = {selected: false};
widget.content.rows.push(row);
widget.content.selectedRow = row;
expect(widget.hasSelection()).toBeTruthy();
@@ -144,7 +222,7 @@ describe('DynamicTableWidget', () => {
expect(widget.editMode).toBeFalsy();
expect(widget.editRow).toBeFalsy();
- let row = { value: true };
+ let row = {value: true};
widget.content.selectedRow = row;
expect(widget.editSelection()).toBeTruthy();
@@ -154,7 +232,7 @@ describe('DynamicTableWidget', () => {
});
it('should copy row', () => {
- let row = { value: { opt: { key: '1', value: 1 } } };
+ let row = {value: {opt: {key: '1', value: 1}}};
let copy = widget.copyRow(row);
expect(copy.value).toEqual(row.value);
});
@@ -166,14 +244,14 @@ describe('DynamicTableWidget', () => {
it('should retrieve cell value', () => {
const value = '';
- let row = { value: { key: value } };
- let column = { id: 'key' };
+ let row = {value: {key: value}};
+ let column = {id: 'key'};
expect(widget.getCellValue(row, column)).toBe(value);
});
it('should save changes and add new row', () => {
- let row = { isNew: true, value: { key: 'value' } };
+ let row = {isNew: true, value: {key: 'value'}};
widget.editMode = true;
widget.editRow = row;
@@ -186,7 +264,7 @@ describe('DynamicTableWidget', () => {
});
it('should save changes and update row', () => {
- let row = { isNew: false, value: { key: 'value' } };
+ let row = {isNew: false, value: {key: 'value'}};
widget.editMode = true;
widget.editRow = row;
widget.content.selectedRow = row;
@@ -244,16 +322,69 @@ describe('DynamicTableWidget', () => {
});
it('should prepend default currency for amount columns', () => {
- let row = { value: { key: '100' } };
- let column = { id: 'key', type: 'Amount' };
+ let row = {value: {key: '100'}};
+ let column = {id: 'key', type: 'Amount'};
let actual = widget.getCellValue(row, column);
expect(actual).toBe('$ 100');
});
it('should prepend custom currency for amount columns', () => {
- let row = { value: { key: '100' } };
- let column = { id: 'key', type: 'Amount', amountCurrency: 'GBP' };
+ let row = {value: {key: '100'}};
+ let column = {id: 'key', type: 'Amount', amountCurrency: 'GBP'};
let actual = widget.getCellValue(row, column);
expect(actual).toBe('GBP 100');
});
+
+ describe('when template is ready', () => {
+
+ beforeEach(async(() => {
+ componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']);
+ window['componentHandler'] = componentHandler;
+ }));
+
+ beforeEach(() => {
+ widget.field = new FormFieldModel(new FormModel({taskId: 'fake-task-id'}), fakeFormField);
+ widget.field.type = FormFieldTypes.DYNAMIC_TABLE;
+
+ fixture.detectChanges();
+ });
+
+ afterEach(() => {
+ fixture.destroy();
+ TestBed.resetTestingModule();
+ });
+
+ it('should select a row when press space bar', async(() => {
+ let rowElement = element.querySelector('#fake-dynamic-table-row-0');
+
+ expect(element.querySelector('#dynamic-table-fake-dynamic-table')).not.toBeNull();
+ expect(rowElement).not.toBeNull();
+ expect(rowElement.className).toBeFalsy();
+
+ let event: any = new Event('keyup');
+ event.keyCode = 32;
+ rowElement.dispatchEvent(event);
+ fixture.detectChanges();
+
+ fixture.whenStable().then(() => {
+ let selectedRow = element.querySelector('#fake-dynamic-table-row-0');
+ expect(selectedRow.className).toBe('dynamic-table-widget__row-selected');
+ });
+ }));
+
+ it('should focus on add button when a new row is saved', async(() => {
+ let addNewRowButton: HTMLButtonElement = element.querySelector('#fake-dynamic-table-add-row');
+
+ expect(element.querySelector('#dynamic-table-fake-dynamic-table')).not.toBeNull();
+ expect(addNewRowButton).not.toBeNull();
+
+ widget.addNewRow();
+ widget.onSaveChanges();
+ fixture.detectChanges();
+
+ fixture.whenStable().then(() => {
+ expect(document.activeElement.id).toBe('fake-dynamic-table-add-row');
+ });
+ }));
+ });
});
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.ts
index 5ded9b6033..8aab05dac7 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/dynamic-table.widget.ts
@@ -15,17 +15,19 @@
* limitations under the License.
*/
-import { Component, ElementRef, OnInit, Input } from '@angular/core';
+import { Component, ElementRef, OnInit, Input, ChangeDetectorRef } from '@angular/core';
import { LogService } from 'ng2-alfresco-core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
import { DynamicTableModel, DynamicTableRow, DynamicTableColumn } from './dynamic-table.widget.model';
import { WidgetVisibilityService } from '../../../services/widget-visibility.service';
import { FormFieldModel } from '../core/form-field.model';
+import { FormService } from './../../../services/form.service';
@Component({
selector: 'dynamic-table-widget',
templateUrl: './dynamic-table.widget.html',
- styleUrls: ['./dynamic-table.widget.css']
+ styleUrls: ['./dynamic-table.widget.css'],
+ host: baseHost
})
export class DynamicTableWidget extends WidgetComponent implements OnInit {
@@ -42,10 +44,14 @@ export class DynamicTableWidget extends WidgetComponent implements OnInit {
editMode: boolean = false;
editRow: DynamicTableRow = null;
- constructor(private elementRef: ElementRef,
+ private selectArrayCode = [32, 0, 13];
+
+ constructor(public formService: FormService,
+ public elementRef: ElementRef,
private visibilityService: WidgetVisibilityService,
- private logService: LogService) {
- super();
+ private logService: LogService,
+ private cd: ChangeDetectorRef) {
+ super(formService);
}
ngOnInit() {
@@ -55,6 +61,20 @@ export class DynamicTableWidget extends WidgetComponent implements OnInit {
}
}
+ forceFocusOnAddButton() {
+ if (this.content) {
+ this.cd.detectChanges();
+ let buttonAddRow = this.elementRef.nativeElement.querySelector('#' + this.content.id + '-add-row');
+ if (this.isDynamicTableReady(buttonAddRow)) {
+ buttonAddRow.focus();
+ }
+ }
+ }
+
+ private isDynamicTableReady(buttonAddRow) {
+ return this.field && !this.editMode && buttonAddRow;
+ }
+
isValid() {
let result = true;
@@ -71,6 +91,16 @@ export class DynamicTableWidget extends WidgetComponent implements OnInit {
}
}
+ onKeyPressed($event: KeyboardEvent, row: DynamicTableRow) {
+ if (this.content && this.isEnterOrSpacePressed($event.keyCode)) {
+ this.content.selectedRow = row;
+ }
+ }
+
+ private isEnterOrSpacePressed(keycode) {
+ return this.selectArrayCode.indexOf(keycode) !== -1;
+ }
+
hasSelection(): boolean {
return !!(this.content && this.content.selectedRow);
}
@@ -147,11 +177,13 @@ export class DynamicTableWidget extends WidgetComponent implements OnInit {
this.logService.error(this.ERROR_MODEL_NOT_FOUND);
}
this.editMode = false;
+ this.forceFocusOnAddButton();
}
onCancelChanges() {
this.editMode = false;
this.editRow = null;
+ this.forceFocusOnAddButton();
}
copyRow(row: DynamicTableRow): DynamicTableRow {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/date/date.editor.ts b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/date/date.editor.ts
index ff5c7bb73b..d8ce2081b0 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/date/date.editor.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/date/date.editor.ts
@@ -43,7 +43,7 @@ export class DateEditorComponent implements OnInit {
@Input()
column: DynamicTableColumn;
- constructor(private elementRef: ElementRef) {}
+ constructor(public elementRef: ElementRef) {}
ngOnInit() {
this.settings = {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts
index b2887bbe08..7931a49de1 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts
@@ -39,7 +39,7 @@ export class DropdownEditorComponent implements OnInit {
@Input()
column: DynamicTableColumn;
- constructor(private formService: FormService,
+ constructor(public formService: FormService,
private logService: LogService) {
}
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/functional-group/functional-group.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/functional-group/functional-group.widget.ts
index 118f3daf75..edcb4f4f08 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/functional-group/functional-group.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/functional-group/functional-group.widget.ts
@@ -16,14 +16,15 @@
*/
import { Component, OnInit, ElementRef } from '@angular/core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
import { FormService } from '../../../services/form.service';
import { GroupModel } from './../core/group.model';
@Component({
selector: 'functional-group-widget',
templateUrl: './functional-group.widget.html',
- styleUrls: ['./functional-group.widget.css']
+ styleUrls: ['./functional-group.widget.css'],
+ host: baseHost
})
export class FunctionalGroupWidget extends WidgetComponent implements OnInit {
@@ -33,9 +34,9 @@ export class FunctionalGroupWidget extends WidgetComponent implements OnInit {
minTermLength: number = 1;
groupId: string;
- constructor(private formService: FormService,
- private elementRef: ElementRef) {
- super();
+ constructor(public formService: FormService,
+ public elementRef: ElementRef) {
+ super(formService);
}
// TODO: investigate, called 2 times
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts
index d6ce5d8d78..4ed1925a8c 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts
@@ -25,7 +25,7 @@ describe('HyperlinkWidget', () => {
let widget: HyperlinkWidget;
beforeEach(() => {
- widget = new HyperlinkWidget();
+ widget = new HyperlinkWidget(null);
});
it('should get link text from field display text', () => {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts
index e6882a18bd..06919386d7 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts
@@ -16,18 +16,24 @@
*/
import { Component, OnInit } from '@angular/core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
+import { FormService } from './../../../services/form.service';
@Component({
selector: 'hyperlink-widget',
templateUrl: './hyperlink.widget.html',
- styleUrls: ['./hyperlink.widget.css']
+ styleUrls: ['./hyperlink.widget.css'],
+ host: baseHost
})
export class HyperlinkWidget extends WidgetComponent implements OnInit {
linkUrl: string = WidgetComponent.DEFAULT_HYPERLINK_URL;
linkText: string = null;
+ constructor(public formService: FormService) {
+ super(formService);
+ }
+
ngOnInit() {
if (this.field) {
this.linkUrl = this.getHyperlinkUrl(this.field);
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.spec.ts
index e0d0b983d4..54f18a3db2 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.spec.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.spec.ts
@@ -22,7 +22,7 @@ describe('MultilineTextWidget', () => {
let widget: MultilineTextWidget;
beforeEach(() => {
- widget = new MultilineTextWidget();
+ widget = new MultilineTextWidget(null);
});
it('should exist', () => {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts
index dafc83f9c1..4231dcebc9 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts
@@ -16,12 +16,18 @@
*/
import { Component } from '@angular/core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
+import { FormService } from './../../../services/form.service';
@Component({
selector: 'multiline-text-widget',
templateUrl: './multiline-text.widget.html',
- styleUrls: ['./multiline-text.widget.css']
+ styleUrls: ['./multiline-text.widget.css'],
+ host: baseHost
})
export class MultilineTextWidget extends WidgetComponent {
+
+ constructor(public formService: FormService) {
+ super(formService);
+ }
}
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.spec.ts
index e2c229c4cc..c43e209c61 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.spec.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.spec.ts
@@ -22,7 +22,7 @@ describe('NumberWidget', () => {
let widget: NumberWidget;
beforeEach(() => {
- widget = new NumberWidget();
+ widget = new NumberWidget(null);
});
it('should exist', () => {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts
index 83aedefe77..2e677061fd 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts
@@ -16,12 +16,19 @@
*/
import { Component } from '@angular/core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
+import { FormService } from './../../../services/form.service';
@Component({
selector: 'number-widget',
templateUrl: './number.widget.html',
- styleUrls: ['./number.widget.css']
+ styleUrls: ['./number.widget.css'],
+ host: baseHost
})
export class NumberWidget extends WidgetComponent {
+
+ constructor(public formService: FormService) {
+ super(formService);
+ }
+
}
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/people/people.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/people/people.widget.ts
index 59a77b19cd..bb97d0b59e 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/people/people.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/people/people.widget.ts
@@ -16,7 +16,7 @@
*/
import { Component, OnInit, ElementRef } from '@angular/core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
import { FormService } from '../../../services/form.service';
import { GroupModel } from '../core/group.model';
import { GroupUserModel } from '../core/group-user.model';
@@ -24,7 +24,8 @@ import { GroupUserModel } from '../core/group-user.model';
@Component({
selector: 'people-widget',
templateUrl: './people.widget.html',
- styleUrls: ['./people.widget.css']
+ styleUrls: ['./people.widget.css'],
+ host: baseHost
})
export class PeopleWidget extends WidgetComponent implements OnInit {
@@ -34,9 +35,9 @@ export class PeopleWidget extends WidgetComponent implements OnInit {
users: GroupUserModel[] = [];
groupId: string;
- constructor(private formService: FormService,
- private elementRef: ElementRef) {
- super();
+ constructor(public formService: FormService,
+ public elementRef: ElementRef) {
+ super(formService);
}
// TODO: investigate, called 2 times
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts
index 2c63ca5268..2af652eb0d 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts
@@ -17,7 +17,7 @@
import { Component, OnInit } from '@angular/core';
import { LogService } from 'ng2-alfresco-core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
import { FormService } from '../../../services/form.service';
import { FormFieldOption } from './../core/form-field-option';
import { WidgetVisibilityService } from '../../../services/widget-visibility.service';
@@ -25,14 +25,15 @@ import { WidgetVisibilityService } from '../../../services/widget-visibility.ser
@Component({
selector: 'radio-buttons-widget',
templateUrl: './radio-buttons.widget.html',
- styleUrls: ['./radio-buttons.widget.css']
+ styleUrls: ['./radio-buttons.widget.css'],
+ host: baseHost
})
export class RadioButtonsWidget extends WidgetComponent implements OnInit {
- constructor(private formService: FormService,
+ constructor(public formService: FormService,
private visibilityService: WidgetVisibilityService,
private logService: LogService) {
- super();
+ super(formService);
}
ngOnInit() {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html
index 799829fde4..439e9a3d78 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html
@@ -1,20 +1,9 @@
- `
+ `,
+ host: baseHost
})
export class UnknownWidget extends WidgetComponent {
+
+ constructor(public formService: FormService) {
+ super(formService);
+ }
}
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html
index 172e9b0d57..c95723bd76 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html
@@ -8,6 +8,7 @@
#file
type="file"
[attr.id]="field.id"
+ [disabled]="field.readOnly"
class="upload-widget__file"
(change)="onFileChanged($event)">
{
+ let componentHandler;
let widget: UploadWidget;
let formService: FormService;
@@ -37,7 +42,7 @@ describe('UploadWidget', () => {
widget.field = new FormFieldModel(null, {
type: FormFieldTypes.UPLOAD,
value: [
- {name: encodedFileName}
+ { name: encodedFileName }
]
});
@@ -71,7 +76,7 @@ describe('UploadWidget', () => {
widget.field = new FormFieldModel(null, {
type: FormFieldTypes.UPLOAD,
value: [
- {name: 'filename'}
+ { name: 'filename' }
]
});
widget.reset();
@@ -79,4 +84,58 @@ describe('UploadWidget', () => {
expect(widget.field.json.value).toBeNull();
});
+ describe('when template is ready', () => {
+ let uploadWidget: UploadWidget;
+ let fixture: ComponentFixture;
+ let element: HTMLInputElement;
+ let inputElement: HTMLInputElement;
+
+ beforeEach(async(() => {
+ componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']);
+ window['componentHandler'] = componentHandler;
+ }));
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [CoreModule],
+ declarations: [UploadWidget],
+ providers: [FormService, EcmModelService]
+ }).compileComponents().then(() => {
+ fixture = TestBed.createComponent(UploadWidget);
+ uploadWidget = fixture.componentInstance;
+ element = fixture.nativeElement;
+ });
+ }));
+
+ afterEach(() => {
+ fixture.destroy();
+ TestBed.resetTestingModule();
+ });
+
+ beforeEach(() => {
+ uploadWidget.field = new FormFieldModel(new FormModel({ taskId: 'fake-upload-id' }), {
+ id: 'upload-id',
+ name: 'upload-name',
+ value: '',
+ type: FormFieldTypes.UPLOAD,
+ readOnly: false
+ });
+
+ fixture.detectChanges();
+ inputElement = element.querySelector('#upload-id');
+ });
+
+ it('should be disabled on readonly forms', async(() => {
+ uploadWidget.field.form.readOnly = true;
+
+ fixture.whenStable().then(() => {
+ fixture.detectChanges();
+ expect(inputElement).toBeDefined();
+ expect(inputElement).not.toBeNull();
+ expect(inputElement.disabled).toBeTruthy();
+ });
+ }));
+
+ });
+
});
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts
index 214304e06f..65ab9cfd93 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts
@@ -17,13 +17,14 @@
import { Component, OnInit } from '@angular/core';
import { LogService } from 'ng2-alfresco-core';
-import { WidgetComponent } from './../widget.component';
+import { WidgetComponent , baseHost } from './../widget.component';
import { FormService } from '../../../services/form.service';
@Component({
selector: 'upload-widget',
templateUrl: './upload.widget.html',
- styleUrls: ['./upload.widget.css']
+ styleUrls: ['./upload.widget.css'],
+ host: baseHost
})
export class UploadWidget extends WidgetComponent implements OnInit {
@@ -31,9 +32,9 @@ export class UploadWidget extends WidgetComponent implements OnInit {
fileName: string;
displayText: string;
- constructor(private formService: FormService,
+ constructor(public formService: FormService,
private logService: LogService) {
- super();
+ super(formService);
}
ngOnInit() {
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.spec.ts
index 0b2046438d..d90a597108 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.spec.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.spec.ts
@@ -15,101 +15,130 @@
* limitations under the License.
*/
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { ElementRef } from '@angular/core';
import { WidgetComponent } from './widget.component';
import { FormFieldModel } from './core/form-field.model';
import { FormModel } from './core/form.model';
+import { FormService } from './../../services/form.service';
+import { CoreModule } from 'ng2-alfresco-core';
+import { EcmModelService } from './../../services/ecm-model.service';
+import { ActivitiAlfrescoContentService } from '../../services/activiti-alfresco.service';
describe('WidgetComponent', () => {
+ let widget: WidgetComponent;
+ let fixture: ComponentFixture;
+ let element: HTMLElement;
let componentHandler;
+ let formService: FormService;
+
+ beforeEach(async(() => {
+ componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']);
+ window['componentHandler'] = componentHandler;
+ TestBed.configureTestingModule({
+ imports: [
+ CoreModule.forRoot()
+ ],
+ declarations: [WidgetComponent],
+ providers: [
+ FormService,
+ EcmModelService,
+ ActivitiAlfrescoContentService
+ ]
+ }).compileComponents();
+ }));
beforeEach(() => {
- componentHandler = jasmine.createSpyObj('componentHandler', [
- 'upgradeAllRegistered'
- ]);
+ fixture = TestBed.createComponent(WidgetComponent);
+ formService = TestBed.get(FormService);
+
+ element = fixture.nativeElement;
+ widget = fixture.componentInstance;
+
+ fixture.detectChanges();
+ });
+
+ describe('Events', () => {
+
+ it('should click event be redirect on the form event service', (done) => {
+ widget.formService.formEvents.subscribe(() => {
+ done();
+ });
+
+ element.click();
+ });
- window['componentHandler'] = componentHandler;
});
it('should upgrade MDL content on view init', () => {
- let component = new WidgetComponent();
- component.ngAfterViewInit();
+ widget.ngAfterViewInit();
expect(componentHandler.upgradeAllRegistered).toHaveBeenCalled();
});
it('should setup MDL content only if component handler available', () => {
- let component = new WidgetComponent();
- expect(component.setupMaterialComponents(componentHandler)).toBeTruthy();
- expect(component.setupMaterialComponents()).toBeFalsy();
+ expect(widget.setupMaterialComponents(componentHandler)).toBeTruthy();
+ expect(widget.setupMaterialComponents()).toBeFalsy();
});
it('should check field', () => {
- let component = new WidgetComponent();
-
- expect(component.hasField()).toBeFalsy();
- component.field = new FormFieldModel(new FormModel());
- expect(component.hasField()).toBeTruthy();
+ expect(widget.hasField()).toBeFalsy();
+ widget.field = new FormFieldModel(new FormModel());
+ expect(widget.hasField()).toBeTruthy();
});
it('should send an event after view init', (done) => {
- let component = new WidgetComponent();
let fakeForm = new FormModel();
let fakeField = new FormFieldModel(fakeForm, {id: 'fakeField', value: 'fakeValue'});
- component.field = fakeField;
+ widget.field = fakeField;
- component.fieldChanged.subscribe(field => {
+ widget.fieldChanged.subscribe(field => {
expect(field).not.toBe(null);
expect(field.id).toBe('fakeField');
expect(field.value).toBe('fakeValue');
done();
});
- component.ngAfterViewInit();
+ widget.ngAfterViewInit();
});
it('should send an event when a field is changed', (done) => {
- let component = new WidgetComponent();
let fakeForm = new FormModel();
let fakeField = new FormFieldModel(fakeForm, {id: 'fakeField', value: 'fakeValue'});
- component.fieldChanged.subscribe(field => {
+ widget.fieldChanged.subscribe(field => {
expect(field).not.toBe(null);
expect(field.id).toBe('fakeField');
expect(field.value).toBe('fakeValue');
done();
});
- component.checkVisibility(fakeField);
+ widget.checkVisibility(fakeField);
});
it('should eval isRequired state of the field', () => {
- let widget = new WidgetComponent();
expect(widget.isRequired()).toBeFalsy();
widget.field = new FormFieldModel(null);
expect(widget.isRequired()).toBeFalsy();
- widget.field = new FormFieldModel(null, { required: false });
+ widget.field = new FormFieldModel(null, {required: false});
expect(widget.isRequired()).toBeFalsy();
- widget.field = new FormFieldModel(null, { required: true });
+ widget.field = new FormFieldModel(null, {required: true});
expect(widget.isRequired()).toBeTruthy();
});
it('should require element reference to setup textfield', () => {
- let widget = new WidgetComponent();
expect(widget.setupMaterialTextField(null, {}, 'value')).toBeFalsy();
});
it('should require component handler to setup textfield', () => {
let elementRef = new ElementRef(null);
- let widget = new WidgetComponent();
expect(widget.setupMaterialTextField(elementRef, null, 'value')).toBeFalsy();
});
it('should require field value to setup textfield', () => {
let elementRef = new ElementRef(null);
- let widget = new WidgetComponent();
expect(widget.setupMaterialTextField(elementRef, {}, null)).toBeFalsy();
});
@@ -119,15 +148,15 @@ describe('WidgetComponent', () => {
querySelector: function () {
return {
MaterialTextfield: {
- change: function() {
+ change: function () {
changeCalled = true;
}
}
};
}
});
- let widget = new WidgetComponent();
expect(widget.setupMaterialTextField(elementRef, {}, 'value')).toBeTruthy();
expect(changeCalled).toBeTruthy();
});
+
});
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts
index 490f764680..18a9827886 100644
--- a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts
+++ b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts
@@ -15,14 +15,32 @@
* limitations under the License.
*/
-import { Input, AfterViewInit, Output, EventEmitter, ElementRef } from '@angular/core';
+import { Component, Input, AfterViewInit, Output, EventEmitter, ElementRef } from '@angular/core';
import { FormFieldModel } from './core/index';
+import { FormService } from './../../services/form.service';
-declare var componentHandler: any;
+declare let componentHandler: any;
+
+export const baseHost = {
+ '(click)': 'event($event)',
+ '(blur)': 'event($event)',
+ '(change)': 'event($event)',
+ '(focus)': 'event($event)',
+ '(focusin)': 'event($event)',
+ '(focusout)': 'event($event)',
+ '(input)': 'event($event)',
+ '(invalid)': 'event($event)',
+ '(select)': 'event($event)'
+};
/**
* Base widget component.
*/
+@Component({
+ selector: 'base-widget',
+ template: '',
+ host: baseHost
+})
export class WidgetComponent implements AfterViewInit {
static DEFAULT_HYPERLINK_URL: string = '#';
@@ -35,6 +53,9 @@ export class WidgetComponent implements AfterViewInit {
@Output()
fieldChanged: EventEmitter = new EventEmitter();
+ constructor(public formService?: FormService) {
+ }
+
hasField() {
return this.field ? true : false;
}
@@ -111,4 +132,8 @@ export class WidgetComponent implements AfterViewInit {
}
return null;
}
+
+ protected event(event: Event): void {
+ this.formService.formEvents.next(event);
+ }
}
diff --git a/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts b/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts
index 194c510cb2..9950b68eef 100644
--- a/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts
+++ b/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts
@@ -95,6 +95,16 @@ export class ActivitiContentService {
.catch(err => this.handleError(err));
}
+ /**
+ * Return all the related content of the process instance
+ * @param processInstanceId
+ * @returns {any}
+ */
+ createProcessRelatedContent(processInstanceId: string, content: any, opts?: any): Observable {
+ return Observable.fromPromise(this.apiService.getInstance().activiti.contentApi.createRelatedContentOnProcessInstance(processInstanceId, content, opts))
+ .catch(err => this.handleError(err));
+ }
+
toJson(res: any) {
if (res) {
return res || {};
@@ -123,4 +133,9 @@ export class ActivitiContentService {
let icon = this.mimeTypeIcons[mimeType];
return icon || ActivitiContentService.DEFAULT_MIME_TYPE_ICON;
}
+
+ createTaskRelatedContent(taskId: string, file: any, opts?: any) {
+ return Observable.fromPromise(this.apiService.getInstance().activiti.contentApi.createRelatedContentOnTask(taskId, file, opts))
+ .catch(err => this.handleError(err));
+ }
}
diff --git a/ng2-components/ng2-activiti-form/src/services/form.service.spec.ts b/ng2-components/ng2-activiti-form/src/services/form.service.spec.ts
index b4f606b49f..6cdddbefd1 100644
--- a/ng2-components/ng2-activiti-form/src/services/form.service.spec.ts
+++ b/ng2-components/ng2-activiti-form/src/services/form.service.spec.ts
@@ -15,14 +15,8 @@
* limitations under the License.
*/
-import { ReflectiveInjector } from '@angular/core';
-import {
- AlfrescoAuthenticationService,
- AlfrescoSettingsService,
- AlfrescoApiService,
- StorageService,
- LogService
-} from 'ng2-alfresco-core';
+import { TestBed, async } from '@angular/core/testing';
+import { CoreModule, AlfrescoApiService, LogService } from 'ng2-alfresco-core';
import { Observable } from 'rxjs/Rx';
import { FormService } from './form.service';
import { Response, ResponseOptions } from '@angular/http';
@@ -69,24 +63,26 @@ function createFakeBlob() {
describe('Form service', () => {
- let service, injector, apiService, logService;
+ let service: FormService;
+ let apiService: AlfrescoApiService;
+ let logService: LogService;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ CoreModule
+ ],
+ providers: [
+ EcmModelService,
+ FormService
+ ]
+ }).compileComponents();
+ }));
beforeEach(() => {
- injector = ReflectiveInjector.resolveAndCreate([
- AlfrescoSettingsService,
- AlfrescoApiService,
- AlfrescoAuthenticationService,
- EcmModelService,
- StorageService,
- FormService,
- LogService
- ]);
- });
-
- beforeEach(() => {
- service = injector.get(FormService);
- apiService = injector.get(AlfrescoApiService);
- logService = injector.get(LogService);
+ service = TestBed.get(FormService);
+ apiService = TestBed.get(AlfrescoApiService);
+ logService = TestBed.get(LogService);
});
beforeEach(() => {
@@ -530,7 +526,7 @@ describe('Form service', () => {
function stubCreateForm() {
jasmine.Ajax.stubRequest(
- 'http://localhost:9999/activiti-app/api/enterprise/models'
+ 'http://localhost:3000/bpm/activiti-app/api/enterprise/models'
).andReturn({
status: 200,
statusText: 'HTTP/1.1 200 OK',
@@ -541,7 +537,7 @@ describe('Form service', () => {
function stubGetEcmModel() {
jasmine.Ajax.stubRequest(
- 'http://localhost:8080/alfresco/api/-default-/private/alfresco/versions/1/cmm/activitiFormsModel/types'
+ 'http://localhost:3000/ecm/alfresco/api/-default-/private/alfresco/versions/1/cmm/activitiFormsModel/types'
).andReturn({
status: 200,
statusText: 'HTTP/1.1 200 OK',
@@ -562,7 +558,7 @@ describe('Form service', () => {
function stubAddFieldsToAForm() {
jasmine.Ajax.stubRequest(
- 'http://localhost:9999/activiti-app/api/enterprise/editor/form-models/' + formId
+ 'http://localhost:3000/bpm/activiti-app/api/enterprise/editor/form-models/' + formId
).andReturn({
status: 200,
statusText: 'HTTP/1.1 200 OK',
diff --git a/ng2-components/ng2-activiti-form/src/services/form.service.ts b/ng2-components/ng2-activiti-form/src/services/form.service.ts
index 4a789cd5f3..61ff29f94e 100644
--- a/ng2-components/ng2-activiti-form/src/services/form.service.ts
+++ b/ng2-components/ng2-activiti-form/src/services/form.service.ts
@@ -18,7 +18,7 @@
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs/Rx';
import { AlfrescoApiService, LogService } from 'ng2-alfresco-core';
-import { FormValues } from './../components/widgets/core/index';
+import { FormModel, FormValues, FormOutcomeEvent, FormOutcomeModel } from './../components/widgets/core/index';
import { FormDefinitionModel } from '../models/form-definition.model';
import { EcmModelService } from './ecm-model.service';
import { GroupModel } from './../components/widgets/core/group.model';
@@ -33,18 +33,39 @@ export class FormService {
static GENERIC_ERROR_MESSAGE: string = 'Server error';
formLoaded: Subject = new Subject();
+ formDataRefreshed: Subject = new Subject();
formFieldValueChanged: Subject = new Subject();
+ formEvents: Subject = new Subject();
taskCompleted: Subject = new Subject();
taskCompletedError: Subject = new Subject();
taskSaved: Subject = new Subject();
taskSavedError: Subject = new Subject();
formContentClicked: Subject = new Subject();
+ executeOutcome: Subject = new Subject();
+
constructor(private ecmModelService: EcmModelService,
private apiService: AlfrescoApiService,
private logService: LogService) {
}
+ parseForm(json: any, data?: FormValues, readOnly: boolean = false): FormModel {
+ if (json) {
+ let form = new FormModel(json, data, readOnly, this);
+ if (!json.fields) {
+ form.outcomes = [
+ new FormOutcomeModel(form, {
+ id: '$custom',
+ name: FormOutcomeModel.SAVE_ACTION,
+ isSystem: true
+ })
+ ];
+ }
+ return form;
+ }
+ return null;
+ }
+
/**
* Create a Form with a fields for each metadata properties
* @returns {Observable}
diff --git a/ng2-components/ng2-activiti-form/tsconfig.json b/ng2-components/ng2-activiti-form/tsconfig.json
index 42e2a54cc8..b5b9140c06 100644
--- a/ng2-components/ng2-activiti-form/tsconfig.json
+++ b/ng2-components/ng2-activiti-form/tsconfig.json
@@ -35,7 +35,9 @@
"ng2-alfresco-viewer": ["../ng2-alfresco-viewer/"],
"ng2-alfresco-webscript": ["../ng2-alfresco-webscript/"],
"ng2-alfresco-userinfo": ["../ng2-alfresco-userinfo"],
- "alfresco-js-api": ["../node_modules/alfresco-js-api/"]
+ "alfresco-js-api": ["./node_modules/alfresco-js-api/"],
+ "@angular/*": ["./node_modules/@angular/*"],
+ "rxjs/*": ["./node_modules/rxjs/*"]
},
"lib": [
"es2015",
diff --git a/ng2-components/ng2-activiti-diagrams/config/assets/tslint.json b/ng2-components/ng2-activiti-form/tslint.json
similarity index 100%
rename from ng2-components/ng2-activiti-diagrams/config/assets/tslint.json
rename to ng2-components/ng2-activiti-form/tslint.json
diff --git a/ng2-components/ng2-activiti-form/webpack.build.js b/ng2-components/ng2-activiti-form/webpack.build.js
index 44d7d15072..b97d267dca 100644
--- a/ng2-components/ng2-activiti-form/webpack.build.js
+++ b/ng2-components/ng2-activiti-form/webpack.build.js
@@ -1,17 +1 @@
-const webpack = require('webpack');
-const webpackMerge = require('webpack-merge');
-const commonConfig = require('./config/webpack.common.js');
-
-module.exports = webpackMerge(commonConfig, {
-
- output: {
- filename: './bundles/[name].js',
- library: '[name]',
- libraryTarget: 'umd',
- chunkFilename: '[id].chunk.js'
- },
-
- entry: {
- "ng2-activiti-form": "./index.ts"
- }
-});
+module.exports = require('./config/webpack.build.js');
diff --git a/ng2-components/ng2-activiti-form/webpack.coverage.js b/ng2-components/ng2-activiti-form/webpack.coverage.js
new file mode 100644
index 0000000000..efa49b2755
--- /dev/null
+++ b/ng2-components/ng2-activiti-form/webpack.coverage.js
@@ -0,0 +1 @@
+module.exports = require('./config/webpack.coverage.js');
diff --git a/ng2-components/ng2-activiti-form/webpack.test.js b/ng2-components/ng2-activiti-form/webpack.test.js
index b6f4929fa4..85484e61b0 100644
--- a/ng2-components/ng2-activiti-form/webpack.test.js
+++ b/ng2-components/ng2-activiti-form/webpack.test.js
@@ -1,8 +1 @@
-const webpack = require('webpack');
-const webpackMerge = require('webpack-merge');
-const testConfig = require('./config/webpack.test.js');
-
-module.exports = webpackMerge(testConfig, {
-
-
-});
+module.exports = require('./config/webpack.test.js');
diff --git a/ng2-components/ng2-activiti-processlist/.gitignore b/ng2-components/ng2-activiti-processlist/.gitignore
index 8dd503835e..b87321ec78 100644
--- a/ng2-components/ng2-activiti-processlist/.gitignore
+++ b/ng2-components/ng2-activiti-processlist/.gitignore
@@ -8,7 +8,6 @@ dist
src/**/*.js
src/**/*.js.map
src/**/*.d.ts
-demo/**/*.js
demo/**/*.js.map
demo/**/*.d.ts
index.js
@@ -18,3 +17,4 @@ index.js.map
/package/
/bundles/
index.d.ts
+/.happypack
diff --git a/ng2-components/ng2-activiti-processlist/.npmignore b/ng2-components/ng2-activiti-processlist/.npmignore
index cb0b8b2890..a30cc5773b 100644
--- a/ng2-components/ng2-activiti-processlist/.npmignore
+++ b/ng2-components/ng2-activiti-processlist/.npmignore
@@ -4,6 +4,7 @@ npm-debug.log
coverage/
demo/
+dist/
node_modules
typings/
fonts/
@@ -15,3 +16,4 @@ fonts/
/karma.conf.js
/gulpfile.ts
/.npmignore
+/.happypack
diff --git a/ng2-components/ng2-activiti-processlist/README.md b/ng2-components/ng2-activiti-processlist/README.md
index 7c9581e2c4..92afb508c5 100644
--- a/ng2-components/ng2-activiti-processlist/README.md
+++ b/ng2-components/ng2-activiti-processlist/README.md
@@ -1,205 +1,86 @@
-# Activiti Process List Component for Angular 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+# Activiti Process List Component
-Displays lists of process instances both active and completed, using any defined process filter, and
-render details of any chosen instance.
+
+
+
+
+- [Prerequisites](#prerequisites)
+- [Install](#install)
+- [Activiti Process Instance List](#activiti-process-instance-list)
+ * [Properties](#properties)
+ * [Events](#events)
+- [Process Filters Component](#process-filters-component)
+ * [Properties](#properties-1)
+ * [Events](#events-1)
+ * [How filter the activiti process filters](#how-filter-the-activiti-process-filters)
+- [FilterParamsModel](#filterparamsmodel)
+ * [How to create an accordion menu with the processes filter](#how-to-create-an-accordion-menu-with-the-processes-filter)
+- [Start Process component](#start-process-component)
+ * [Properties](#properties-2)
+ * [Events](#events-2)
+- [Process Details component](#process-details-component)
+ * [Properties](#properties-3)
+ * [Events](#events-3)
+- [Process Instance Details Header component](#process-instance-details-header-component)
+ * [Properties](#properties-4)
+ * [Events](#events-4)
+- [Process Instance Tasks component](#process-instance-tasks-component)
+ * [Properties](#properties-5)
+ * [Events](#events-5)
+- [Process Instance Comments component](#process-instance-comments-component)
+ * [Properties](#properties-6)
+- [Process Attachment List component](#process-attachment-list-component)
+ * [Properties](#properties-7)
+ * [Events](#events-6)
+- [Create Process Attachment component](#create-process-attachment-component)
+ * [Properties](#properties-8)
+ * [Events](#events-7)
+- [Build from sources](#build-from-sources)
+- [NPM scripts](#npm-scripts)
+- [Demo](#demo)
+- [License](#license)
+
+
+
+
+
+Displays lists of process instances both active and completed, using any defined process filter, and renders details for any chosen instance.
## Prerequisites
Before you start using this development framework, make sure you have installed all required software and done all the
necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md).
+> If you plan using this component with projects generated by Angular CLI, please refer to the following article: [Using ADF with Angular CLI](https://github.com/Alfresco/alfresco-ng2-components/wiki/Angular-CLI)
+
## Install
-Follow the 3 steps below:
+```sh
+npm install ng2-activiti-processlist
+```
-1. Npm
-
- ```sh
- npm install ng2-activiti-processlist --save
- ```
-
-2. Html
-
- Include these dependencies in your index.html page:
-
- ```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ```
-
-3. SystemJs
-
- Add the following components to your systemjs.config.js file:
-
- - ng2-translate
- - alfresco-js-api
- - ng2-alfresco-core
- - ng2-activiti-form
- - ng2-alfresco-datatable
- - ng2-activiti-tasklist
- - ng2-activiti-processlist
-
- Please refer to the following example file: [systemjs.config.js](demo/systemjs.config.js) .
-
-
-## Basic usage
-
-### Activiti Process Instance List
+## Activiti Process Instance List
This component renders a list containing all the process instances matched by the parameters specified.
+**app.component.html**
+
```html
-
+
+
```
-Usage example of this component :
-
-**main.ts**
-```ts
-
-import { NgModule, Component } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { FilterRepresentationModel } from 'ng2-activiti-tasklist';
-import { CoreModule } from 'ng2-alfresco-core';
-import { ActivitiProcessListModule } from 'ng2-activiti-processlist';
-import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core';
-import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable';
-
-@Component({
- selector: 'alfresco-app-demo',
- template: ` `
-})
-class MyDemoApp {
-
- dataProcesses: ObjectDataTableAdapter;
-
- appId: string = '1';
-
- state: string = 'open';
-
- constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) {
- settingsService.bpmHost = 'http://localhost:9999';
-
- this.authService.login('admin', 'admin').subscribe(
- ticket => {
- console.log(ticket);
- },
- error => {
- console.log(error);
- });
-
- this.dataProcesses = new ObjectDataTableAdapter([], [
- {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true},
- {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true}
- ]
- );
- this.dataProcesses.setSorting(new DataSorting('started', 'desc'));
-
- this.filterRepresentationModel = new FilterRepresentationModel({
- appId: '3003',
- filter: {
- processDefinitionKey: null,
- name: null,
- state: 'running',
- sort: 'created-desc'
- }
- });
- }
-}
-
-@NgModule({
- imports: [
- BrowserModule,
- CoreModule.forRoot(),
- ActivitiProcessListModule
- ],
- declarations: [MyDemoApp],
- bootstrap: [MyDemoApp]
-})
-export class AppModule {
-}
-
-platformBrowserDynamic().bootstrapModule(AppModule);
-
-
-```
-
-#### Options
+### Properties
| Name | Description |
| --- | --- |
-|`appId`| { appId } The id of the app. |
-|`processDefinitionKey`| { processDefinitionKey } The processDefinitionKey of the process. |
-|`state`| { state } Define state of the processes. Possible values are running, completed and all |
-|`sort`| { sort } Define sort of the processes. Possible values are created-desc, created-asc, ended-desc, ended-asc |
-|`schemaColumn`| {any} List of columns to display in the process instances datatable |
+| appId | The id of the app. |
+| processDefinitionKey | The processDefinitionKey of the process. |
+| state | Define state of the processes. Possible values are `running`, `completed` and `all` |
+| sort | Define sort of the processes. Possible values are `created-desc`, `created-asc`, `ended-desc`, `ended-asc` |
+| schemaColumn | List of columns to display in the process instances datatable |
Example:
@@ -212,13 +93,13 @@ Example:
]
```
-#### Events
+### Events
- **rowClick**: Emitted when a row in the process list is clicked
- **onSuccess**: Emitted when the list of process instances has been loaded successfully from the server
- **onError**: Emitted when an error is encountered loading the list of process instances from the server
-### Process Filters component
+## Process Filters Component
Process filters are a collection of criteria used to filter process instances, which may be customized
by users. This component displays a list of available filters and allows the user to select any given
@@ -228,25 +109,55 @@ The most common usage is in driving a process instance list in order to allow th
process instances are displayed in the list.
```html
-
+
+
```
-#### Options
+### Properties
-| Name | Description |
-| --- | --- |
-| `appId` | Display filters available to the current user for the application with the specified ID |
-| `appName` | Display filters available to the current user for the application with the specified name |
+| Name | Type | Description |
+| --- | --- | --- | --- |
+| filterParam | [FilterParamsModel](#filterparamsmodel) | The params to filter the task filter. If there is no match the default one (first filter of the list) is selected |
+| appId | string | Display filters available to the current user for the application with the specified ID. |
+| appName | string | Display filters available to the current user for the application with the specified name. |
+| hasIcon | boolean | Toggle to show or not the filter's icon. |
If both `appId` and `appName` are specified then `appName` will take precedence and `appId` will be ignored.
-#### Events
+### Events
| Name | Description |
| --- | --- |
-| `onSuccess` | Emitted when the list of filters hase been successfully loaded from the server |
-| `onError` | Emitted when an error occurs |
-| `ilterClick` | Emitted when the user selects a filter from the list |
+| onSuccess | Raised when the list of filters hase been successfully loaded from the server |
+| onError | Raised when an error occurs |
+| filterClick | Raised when the user selects a filter from the list |
+
+### How filter the activiti process filters
+
+ ```html
+
+
+ ```
+
+You can use inside the filterParam one of the following property.
+
+## FilterParamsModel
+
+```json
+{
+ "id": "number",
+ "name": "string",
+ "index": "number"
+}
+```
+
+| Name | Type | Description |
+| --- | --- | --- |
+| id | string | The id of the task filter. |
+| name | string | The name of the task filter, lowercase is checked. |
+| index | number | Zero-based position of the filter in the array. |
### How to create an accordion menu with the processes filter
@@ -255,7 +166,10 @@ The AccordionComponent is exposed by the alfresco-core.
```html
-
+
+
+
```
-#### Options
-
+### Properties
| Name | Description |
| --- | --- |
-| `appId` | (required): Limit the list of processes which can be started to those contained in the specified app |
-| `variables` | Variables in input to the process [RestVariable]**](https://github.com/Alfresco/alfresco-js-api/tree/master/src/alfresco-activiti-rest-api/docs/RestVariable.md)|
+| appId | (required): Limit the list of processes which can be started to those contained in the specified app |
+| variables | Variables in input to the process [RestVariable]**](https://github.com/Alfresco/alfresco-js-api/tree/master/src/alfresco-activiti-rest-api/docs/RestVariable.md)|
-#### Events
+### Events
| Name | Description |
| --- | --- |
-| `start` | The event is emitted when the process start |
-| `error` | The event is emitted when the start process fail |
+| start | Raised when the process start |
+| error | Raised when the start process fail |
-### Process Details component
+## Process Details component
This component displays detailed information on a specified process instance
```html
-
+
+
```
-#### Options
+### Properties
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (required): The numeric ID of the process instance to display |
+
+### Events
| Name | Description |
| --- | --- |
-| `processInstanceId` | (required): The numeric ID of the process instance to display |
+| processCancelledEmitter | Raised when the current process is cancelled by the user from within the component |
+| taskFormCompletedEmitter | Raised when the form associated with an active task is completed from within the component |
+| showProcessDiagram | Raised when the show diagram button is clicked |
-#### Events
-
-
-| Name | Description |
-| --- | --- |
-| `processCancelledEmitter` | Emitted when the current process is cancelled by the user from within the component |
-| `taskFormCompletedEmitter` | Emitted when the form associated with an active task is completed from within the component |
-
-### Process Instance Details Header component
+## Process Instance Details Header component
This is a sub-component of the process details component, which renders some general information about the selected process.
```html
-
+
+
```
-#### Options
+### Properties
+| Name | Type| Description |
+| --- | --- | --- |
+| processInstance | string | (**required**): Full details of the process instance to display information about |
+| showDiagram | boolean | If the value is true the button show diagram is shown |
+
+### Events
| Name | Description |
| --- | --- |
-| `processInstance` | (required): Full details of the process instance to display information about |
+| showProcessDiagram | Raised when the show diagram button is clicked |
-#### Events
-
-
-| Name | Description |
-| --- | --- |
-| `processCancelled` | Emitted when the Cancel Process button shown by the component is clicked |
-
-### Process Instance Tasks component
+## Process Instance Tasks component
Lists both the active and completed tasks associated with a particular process instance
```html
-
+
+
```
-#### Options
+### Properties
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (**required**): The ID of the process instance to display tasks for |
+| showRefreshButton | boolean | (default: `true`): Whether to show a refresh button next to the list of tasks to allow this to be updated from the server |
+
+### Events
| Name | Description |
| --- | --- |
-| `processInstanceId` | (required): The numeric ID of the process instance to display tasks for |
-| `showRefreshButton` | (default: `true`): Whether to show a refresh button next to the list of tasks to allow this to be updated from the server |
+| taskFormCompletedEmitter | Raised when the form associated with an active task is completed from within the component |
-#### Events
-
-| Name | Description |
-| --- | --- |
-| `taskFormCompletedEmitter` | Emitted when the form associated with an active task is completed from within the component |
-
-### Process Instance Comments component
+## Process Instance Comments component
Displays comments associated with a particular process instances and allows the user to add new comments
```html
-
+
+
```
-#### Options
+### Properties
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (**required**): The numeric ID of the process instance to display comments for |
+
+## Process Attachment List component
+
+This component displays attached documents on a specified process instance
+
+```html
+
+
+```
+
+
+### Properties
+
+| Name | Type | Description |
+| --- | --- | -- |
+| processInstanceId | string | (**required**): The ID of the process instance to display |
+
+### Events
| Name | Description |
| --- | --- |
-| `processInstanceId` | (required): The numeric ID of the process instance to display comments for |
+| attachmentClick | Raised when the attachment double clicked or selected view option from context menu by the user from within the component and return a Blob obj of the object clicker|
+| success | Raised when the attachment list fetch all the attach and return a list of attachments |
+| error | Raised when the attachment list is not able to fetch the attachments for example network error |
-#### Events
+## Create Process Attachment component
-No events are emitted by this component
+This component displays Upload Component(Drag and Click) to upload the attachment to a specified process instance
+
+```html
+
+
+```
+
+
+
+### Properties
+
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (**required**): The ID of the process instance to display |
+
+### Events
+
+| Name | Description |
+| --- | --- |
+| error | Raised when the error occured while creating/uploading the attachment by the user from within the component |
+| success | Raised when the attachement created/uploaded successfully from within the component |
## Build from sources
-Alternatively you can build component from sources with the following commands:
-
+You can build component from sources with the following commands:
```sh
npm install
npm run build
```
-### Build the files and keep watching for changes
-
-```sh
-$ npm run build:w
-```
-
-## Running unit tests
-
-```sh
-npm test
-```
-
-### Running unit tests in browser
-
-```sh
-npm test-browser
-```
-
-This task rebuilds all the code, runs tslint, license checks and other quality check tools
-before performing unit testing.
-
-### Code coverage
-
-```sh
-npm run coverage
-```
-
-## Demo
-
-If you want have a demo of how the component works, please check the demo folder :
-
-```sh
-cd demo
-npm install
-npm start
-```
+> The `build` task rebuilds all the code, runs tslint, license checks
+> and other quality check tools before performing unit testing.
## NPM scripts
@@ -435,6 +369,16 @@ npm start
| npm run test-browser | Run unit tests in the browser
| npm run coverage | Run unit tests and display code coverage report |
+## Demo
+
+Please check the demo folder for a demo project
+
+```sh
+cd demo
+npm install
+npm start
+```
+
## License
[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE)
diff --git a/ng2-components/ng2-activiti-processlist/config/webpack.build.js b/ng2-components/ng2-activiti-processlist/config/webpack.build.js
new file mode 100644
index 0000000000..52052a022d
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/config/webpack.build.js
@@ -0,0 +1,35 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const commonConfig = require('./webpack.common.js');
+
+module.exports = webpackMerge(commonConfig, {
+
+ devtool: 'cheap-module-source-map',
+
+ externals: [
+ /^\@angular\//,
+ /^rxjs\//,
+ 'moment',
+ 'raphael',
+ 'ng2-charts',
+ 'alfresco-js-api',
+ 'ng2-alfresco-core',
+ 'ng2-alfresco-datatable',
+ 'ng2-activiti-analytics',
+ 'ng2-activiti-diagrams',
+ 'ng2-activiti-form',
+ "ng2-activiti-tasklist",
+ 'ng2-alfresco-documentlist'
+ ],
+
+ output: {
+ filename: './bundles/[name].js',
+ library: '[name]',
+ libraryTarget: 'umd',
+ chunkFilename: '[id].chunk.js'
+ },
+
+ entry: {
+ "ng2-activiti-processlist": "./index.ts"
+ }
+});
diff --git a/ng2-components/ng2-activiti-processlist/config/webpack.common.js b/ng2-components/ng2-activiti-processlist/config/webpack.common.js
index 52a680e87e..92bc275d79 100644
--- a/ng2-components/ng2-activiti-processlist/config/webpack.common.js
+++ b/ng2-components/ng2-activiti-processlist/config/webpack.common.js
@@ -2,6 +2,11 @@ const webpack = require('webpack');
const helpers = require('./helpers');
const fs = require('fs');
const path = require('path');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+var HappyPack = require('happypack');
+const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
+
+const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = {
@@ -12,22 +17,17 @@ module.exports = {
}
},
- // require those dependencies but don't bundle them
- externals: [
- /^\@angular\//,
- /^rxjs\//,
- 'moment',
- 'raphael',
- 'ng2-charts',
- 'alfresco-js-api',
- 'ng2-alfresco-core',
- 'ng2-alfresco-datatable',
- 'ng2-activiti-analytics',
- 'ng2-activiti-diagrams',
- 'ng2-activiti-form',
- "ng2-activiti-tasklist",
- 'ng2-alfresco-documentlist'
- ],
+ resolve: {
+ alias: {
+ "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts'),
+ "ng2-alfresco-datatable": helpers.root('../ng2-alfresco-datatable/index.ts'),
+ "ng2-activiti-tasklist": helpers.root('../ng2-activiti-tasklist/index.ts'),
+ "ng2-activiti-form": helpers.root('../ng2-activiti-form/index.ts')
+ },
+ extensions: ['.ts', '.js'],
+ symlinks: false,
+ modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
+ },
module: {
rules: [
@@ -37,25 +37,19 @@ module.exports = {
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
- {
- enforce: 'pre',
- test: /\.ts$/,
- use: 'source-map-loader',
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
{
enforce: 'pre',
test: /\.ts$/,
loader: 'tslint-loader',
options: {
emitErrors: true,
- configFile: path.resolve(__dirname, './assets/tslint.json')
+ failOnHint: true
},
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
- use: ['ts-loader', 'angular2-template-loader'],
+ loader: ['happypack/loader?id=ts', 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
@@ -67,7 +61,13 @@ module.exports = {
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },{
+ },
+ {
+ test: /\.component.scss$/,
+ use: ['to-string-loader', 'raw-loader', 'sass-loader'],
+ exclude: [/node_modules/, /bundles/, /dist/, /demo/]
+ },
+ {
enforce: 'pre',
test: /\.ts$/,
loader: 'license-check',
@@ -95,15 +95,29 @@ module.exports = {
]
},
- resolve: {
- extensions: ['.ts', '.js'],
- symlinks: false,
- modules: [
- '../ng2-components', 'node_modules'
- ]
- },
-
plugins: [
+ new ForkTsCheckerWebpackPlugin(),
+ new HappyPack({
+ id: 'ts',
+ threads: 8,
+ loaders: [
+ {
+ path: 'ts-loader',
+ query: {
+ happyPackMode: true,
+ "compilerOptions": {
+ "paths": {}
+ }
+ }
+ }
+ ]
+ }),
+
+ new CopyWebpackPlugin([{
+ from: `src/i18n/`,
+ to: `bundles/assets/${path.basename(helpers.root(''))}/i18n/`
+ }]),
+
new webpack.NoEmitOnErrorsPlugin(),
new webpack.BannerPlugin(fs.readFileSync(path.resolve(__dirname, './assets/license_header_add.txt'), 'utf8')),
@@ -112,11 +126,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
- )
+ ),
+ new webpack.DefinePlugin({
+ 'process.env': {
+ 'ENV': JSON.stringify(ENV)
+ }
+ }),
+ new webpack.LoaderOptionsPlugin({
+ htmlLoader: {
+ minimize: false // workaround for ng2
+ }
+ })
],
- devtool: 'cheap-module-source-map',
-
node: {
fs: 'empty',
module: false
diff --git a/ng2-components/ng2-activiti-processlist/config/webpack.coverage.js b/ng2-components/ng2-activiti-processlist/config/webpack.coverage.js
new file mode 100644
index 0000000000..03ae287665
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/config/webpack.coverage.js
@@ -0,0 +1,22 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const testConfig = require('./webpack.test.js');
+const helpers = require('./helpers');
+
+module.exports = webpackMerge(testConfig, {
+
+ module: {
+ rules: [
+ {
+ enforce: 'post',
+ test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
+ include: [helpers.root('src')],
+ loader: 'istanbul-instrumenter-loader',
+ exclude: [
+ /node_modules/,
+ /test/
+ ]
+ }
+ ]
+ }
+});
diff --git a/ng2-components/ng2-activiti-processlist/config/webpack.test.js b/ng2-components/ng2-activiti-processlist/config/webpack.test.js
index 486fed8c15..b85f2f73fd 100644
--- a/ng2-components/ng2-activiti-processlist/config/webpack.test.js
+++ b/ng2-components/ng2-activiti-processlist/config/webpack.test.js
@@ -1,85 +1,8 @@
-const webpack = require('webpack');
const helpers = require('./helpers');
+const webpackMerge = require('webpack-merge');
+const commonConfig = require('./webpack.common.js');
-const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
+module.exports = webpackMerge(commonConfig, {
-module.exports = {
-
- devtool: 'inline-source-map',
-
- resolve: {
- extensions: ['.ts', '.js'],
- symlinks: false,
- modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
- },
-
- module: {
- rules: [
- {
- enforce: 'pre',
- test: /\.js$/,
- loader: 'source-map-loader',
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.ts$/,
- loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.html$/,
- loader: 'html-loader',
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.css$/,
- loader: ['to-string-loader', 'css-loader'],
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
- loader: 'file-loader',
- query: {
- name: '[path][name].[ext]',
- outputPath: (url)=> {
- return url.replace('src', 'dist');
- }
- }
- },
- {
- enforce: 'post',
- test: /\.ts$/,
- loader: 'istanbul-instrumenter-loader',
- exclude: [
- /node_modules/,
- /test/
- ]
- }
- ]
- },
-
- plugins: [
- new webpack.NoEmitOnErrorsPlugin(),
-
- new webpack.ContextReplacementPlugin(
- /angular(\\|\/)core(\\|\/)@angular/,
- helpers.root('./src'),
- {}
- ),
- new webpack.DefinePlugin({
- 'process.env': {
- 'ENV': JSON.stringify(ENV)
- }
- }),
- new webpack.LoaderOptionsPlugin({
- htmlLoader: {
- minimize: false // workaround for ng2
- }
- })
- ],
-
- node: {
- fs: 'empty',
- module: false
- }
-};
+ devtool: 'inline-source-map'
+});
diff --git a/ng2-components/ng2-activiti-processlist/demo/config/helpers.js b/ng2-components/ng2-activiti-processlist/demo/config/helpers.js
new file mode 100644
index 0000000000..a11fa771d6
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/config/helpers.js
@@ -0,0 +1,10 @@
+var path = require('path');
+
+var _root = path.resolve(__dirname, '..');
+
+function root(args) {
+ args = Array.prototype.slice.call(arguments, 0);
+ return path.join.apply(path, [_root].concat(args));
+}
+
+exports.root = root;
diff --git a/ng2-components/ng2-activiti-processlist/demo/config/webpack.common.js b/ng2-components/ng2-activiti-processlist/demo/config/webpack.common.js
new file mode 100644
index 0000000000..681f8543d0
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/config/webpack.common.js
@@ -0,0 +1,129 @@
+const webpack = require('webpack');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const ExtractTextPlugin = require("extract-text-webpack-plugin");
+const helpers = require('./helpers');
+const path = require('path');
+
+const alfrescoLibs = [
+ 'ng2-activiti-processlist',
+ 'ng2-activiti-tasklist',
+ 'ng2-alfresco-core',
+ 'ng2-alfresco-datatable'
+];
+
+module.exports = {
+ entry: {
+ 'polyfills': './src/polyfills.ts',
+ 'vendor': './src/vendor.ts',
+ 'dist': './src/main.ts'
+ },
+
+ module: {
+ rules: [
+ {
+ enforce: 'pre',
+ test: /\.js$/,
+ include: [helpers.root('src'), helpers.root('../ng2-components')],
+ loader: 'source-map-loader',
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ test: /\.ts$/,
+ include: [helpers.root('src'), helpers.root('..')],
+ loader: [
+ 'ts-loader',
+ 'angular2-template-loader'
+ ],
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ enforce: 'pre',
+ test: /\.ts$/,
+ loader: 'tslint-loader',
+ include: [helpers.root('src')],
+ options: {
+ emitErrors: true
+ },
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ enforce: 'pre',
+ test: /\.ts$/,
+ use: 'source-map-loader',
+ exclude: [ /public/, /resources/, /dist/]
+ },
+ {
+ test: /\.html$/,
+ loader: 'html-loader',
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ test: /\.css$/,
+ exclude: [helpers.root('src'), helpers.root('../ng2-components')],
+ loader: ExtractTextPlugin.extract({
+ fallback: 'style-loader',
+ use: 'css-loader?sourceMap'
+ })
+ },
+ {
+ test: /\.css$/,
+ include: [helpers.root('src'), helpers.root('../ng2-components')],
+ loader: 'raw-loader'
+ },
+ {
+ test: /\.component.scss$/,
+ use: ['to-string-loader', 'raw-loader', 'sass-loader']
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
+ loader: 'file-loader?name=assets/[name].[hash].[ext]'
+ }
+ ]
+ },
+
+ plugins: [
+ // Workaround for angular/angular#11580
+ new webpack.ContextReplacementPlugin(
+ // The (\\|\/) piece accounts for path separators in *nix and Windows
+ /angular(\\|\/)core(\\|\/)@angular/,
+ helpers.root('./src'), // location of your src
+ {} // a map of your routes
+ ),
+ new HtmlWebpackPlugin({
+ template: './index.html'
+ }),
+
+ new CopyWebpackPlugin([
+ ... alfrescoLibs.map(lib => {
+ return {
+ context: `../ng2-components/${lib}/bundles/assets/` ,
+ from: '**/*',
+ to: `assets/`
+ }
+ }),
+ {
+ context: 'resources/i18n',
+ from: '**/*.json',
+ to: 'resources/i18n'
+ }
+ ]),
+
+ new webpack.optimize.CommonsChunkPlugin({
+ name: ['src', 'vendor', 'polyfills']
+ })
+ ],
+
+ devServer: {
+ contentBase: helpers.root('dist'),
+ compress: true,
+ port: 3000,
+ historyApiFallback: true,
+ host: '0.0.0.0',
+ inline: true
+ },
+
+ node: {
+ fs: 'empty'
+ }
+};
diff --git a/ng2-components/ng2-activiti-processlist/demo/config/webpack.dev.js b/ng2-components/ng2-activiti-processlist/demo/config/webpack.dev.js
new file mode 100644
index 0000000000..51f2e1232b
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/config/webpack.dev.js
@@ -0,0 +1,38 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const commonConfig = require('./webpack.common.js');
+const helpers = require('./helpers');
+const path = require('path');
+
+module.exports = webpackMerge(commonConfig, {
+
+ devtool: 'cheap-module-eval-source-map',
+
+ output: {
+ path: helpers.root('dist'),
+ filename: '[name].js',
+ chunkFilename: '[id].chunk.js'
+ },
+
+ resolve: {
+ alias: {
+ "ng2-alfresco-core$": path.resolve(__dirname, '../../ng2-alfresco-core/index.ts'),
+ "ng2-alfresco-datatable$": path.resolve(__dirname, '../../ng2-alfresco-datatable/index.ts'),
+ "ng2-activiti-processlist$": path.resolve(__dirname, '../../ng2-activiti-processlist/index.ts'),
+ "ng2-activiti-tasklist$": path.resolve(__dirname, '../../ng2-activiti-tasklist/index.ts')
+ },
+ extensions: ['.ts', '.js'],
+ modules: [path.resolve(__dirname, '../node_modules')]
+ },
+
+ plugins: [
+ new webpack.NoEmitOnErrorsPlugin(),
+ new ExtractTextPlugin('[name].[hash].css'),
+ new webpack.LoaderOptionsPlugin({
+ htmlLoader: {
+ minimize: false // workaround for ng2
+ }
+ })
+ ]
+});
diff --git a/ng2-components/ng2-activiti-processlist/demo/config/webpack.prod.js b/ng2-components/ng2-activiti-processlist/demo/config/webpack.prod.js
new file mode 100644
index 0000000000..81fbc96579
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/config/webpack.prod.js
@@ -0,0 +1,68 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const commonConfig = require('./webpack.common.js');
+const helpers = require('./helpers');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+
+const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
+
+const alfrescoLibs = [
+ 'ng2-activiti-processlist',
+ 'ng2-activiti-tasklist',
+ 'ng2-alfresco-core',
+ 'ng2-alfresco-datatable'
+];
+
+module.exports = webpackMerge(commonConfig, {
+
+ devtool: 'source-map',
+
+ output: {
+ path: helpers.root('dist'),
+ publicPath: '/',
+ filename: '[name].[hash].js',
+ chunkFilename: '[id].[hash].chunk.js'
+ },
+
+ resolve: {
+ extensions: ['.ts', '.js'],
+ modules: [helpers.root('node_modules')]
+ },
+
+ plugins: [
+ new CopyWebpackPlugin([
+ ... alfrescoLibs.map(lib => {
+ return {
+ context: `node_modules/${lib}/bundles/assets/` ,
+ from: '**/*',
+ to: `assets/`
+ }
+ })
+ ]),
+ new webpack.NoEmitOnErrorsPlugin(),
+ new webpack.optimize.UglifyJsPlugin({ // https://github.com/angular/angular/issues/10618
+ mangle: {
+ keep_fnames: true
+ },
+ compress: {
+ warnings: false
+ },
+ output: {
+ comments: false
+ },
+ sourceMap: true
+ }),
+ new ExtractTextPlugin('[name].[hash].css'),
+ new webpack.DefinePlugin({
+ 'process.env': {
+ 'ENV': JSON.stringify(ENV)
+ }
+ }),
+ new webpack.LoaderOptionsPlugin({
+ htmlLoader: {
+ minimize: false // workaround for ng2
+ }
+ })
+ ]
+});
diff --git a/ng2-components/ng2-activiti-processlist/demo/index.html b/ng2-components/ng2-activiti-processlist/demo/index.html
index fe525218aa..d52218c9f4 100644
--- a/ng2-components/ng2-activiti-processlist/demo/index.html
+++ b/ng2-components/ng2-activiti-processlist/demo/index.html
@@ -6,47 +6,8 @@
Alfresco Angular 2 Activiti Process - Demo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
diff --git a/ng2-components/ng2-activiti-processlist/demo/package-lock.json b/ng2-components/ng2-activiti-processlist/demo/package-lock.json
new file mode 100644
index 0000000000..0f2d6fc5f3
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/package-lock.json
@@ -0,0 +1,79 @@
+{
+ "name": "ng2-activiti-processlist-demo",
+ "version": "0.1.0",
+ "lockfileVersion": 1,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+}
diff --git a/ng2-components/ng2-activiti-processlist/demo/package.json b/ng2-components/ng2-activiti-processlist/demo/package.json
index b65aecae94..b30b9cb62b 100644
--- a/ng2-components/ng2-activiti-processlist/demo/package.json
+++ b/ng2-components/ng2-activiti-processlist/demo/package.json
@@ -3,19 +3,16 @@
"description": "Show available processes from the Activiti Process Services suite - Demo",
"version": "0.1.0",
"author": "Will Abson",
- "main": "index.js",
"scripts": {
- "clean": "npm run clean-build && rimraf dist node_modules typings dist",
- "clean-build" : "rimraf 'src/{,**/}**.js' 'src/{,**/}**.js.map' 'src/{,**/}**.d.ts'",
- "postinstall": "npm run build",
- "start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ",
- "server": "wsrv -o -s -l",
- "build": "npm run tslint && npm run clean-build && npm run tsc",
- "build:w": "npm run tslint && rimraf dist && npm run tsc:w",
- "travis": "npm link ng2-alfresco-core ng2-alfresco-datatable ng2-activiti-form ng2-activiti-tasklist ng2-activiti-processlist",
- "tsc": "tsc",
- "tsc:w": "tsc -w",
- "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts -e '{,**/}**.d.ts'"
+ "build": "rimraf dist && npm run webpack -- --config config/webpack.prod.js --progress --profile --bail",
+ "build:dev": "rimraf dist && npm run webpack -- --config config/webpack.dev.js --progress --profile --bail",
+ "start:dist": "wsrv -s dist/ -p 3000 -a 0.0.0.0",
+ "start": "npm run webpack-dev-server -- --config config/webpack.prod.js --progress --content-base app/",
+ "start:dev": "npm run webpack-dev-server -- --config config/webpack.dev.js --progress --content-base app/",
+ "clean": "npm run clean-build && rimraf dist node_modules typings dist",
+ "clean-build": "rimraf 'app/{,**/}**.js' 'app/{,**/}**.js.map' 'app/{,**/}**.d.ts'",
+ "webpack-dev-server": "node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
+ "webpack": "webpack"
},
"keywords": [
"ng2",
@@ -34,18 +31,16 @@
"@angular/platform-browser": "~4.0.0",
"@angular/platform-browser-dynamic": "~4.0.0",
"@angular/router": "~4.0.0",
-
"@angular/material": "2.0.0-beta.1",
- "alfresco-js-api": "~1.5.0",
+ "alfresco-js-api": "~1.6.0",
"core-js": "2.4.1",
"hammerjs": "2.0.8",
- "ng2-alfresco-core": "1.5.0",
- "ng2-translate": "5.0.0",
+ "ng2-alfresco-core": "1.6.0",
+ "@ngx-translate/core": "^7.0.0",
"reflect-metadata": "0.1.10",
"rxjs": "5.1.0",
"systemjs": "0.19.27",
"zone.js": "0.7.6",
-
"intl": "1.2.4",
"dialog-polyfill": "0.4.7",
"element.scrollintoviewifneeded-polyfill": "1.0.1",
@@ -53,17 +48,62 @@
"material-design-lite": "1.2.1",
"moment": "2.15.1",
"md-date-time-picker": "2.2.0",
- "ng2-activiti-tasklist": "1.5.0",
- "ng2-alfresco-datatable": "1.5.0",
- "ng2-activiti-processlist": "1.5.0"
+ "ng2-activiti-tasklist": "1.6.0",
+ "ng2-alfresco-datatable": "1.6.0",
+ "ng2-activiti-processlist": "1.6.0"
},
"devDependencies": {
- "@types/jasmine": "^2.2.33",
- "@types/node": "^6.0.42",
- "concurrently": "^2.2.0",
- "rimraf": "2.5.2",
- "tslint": "^3.8.1",
- "typescript": "^2.0.3",
- "wsrv": "^0.1.5"
+ "@types/hammerjs": "^2.0.34",
+ "@types/jasmine": "2.5.35",
+ "@types/node": "6.0.45",
+ "angular2-template-loader": "^0.6.2",
+ "autoprefixer": "^6.5.4",
+ "copy-webpack-plugin": "^4.0.1",
+ "css-loader": "^0.23.1",
+ "css-to-string-loader": "^0.1.2",
+ "cssnano": "^3.8.1",
+ "extract-text-webpack-plugin": "^2.0.0-rc.3",
+ "file-loader": "0.11.1",
+ "html-loader": "^0.4.4",
+ "html-webpack-plugin": "^2.28.0",
+ "istanbul-instrumenter-loader": "0.2.0",
+ "jasmine-ajax": "^3.2.0",
+ "jasmine-core": "2.4.1",
+ "karma": "^0.13.22",
+ "karma-chrome-launcher": "~1.0.1",
+ "karma-coverage": "^1.1.1",
+ "karma-jasmine": "~1.0.2",
+ "karma-jasmine-ajax": "^0.1.13",
+ "karma-jasmine-html-reporter": "0.2.0",
+ "karma-mocha-reporter": "^2.2.2",
+ "karma-remap-istanbul": "^0.6.0",
+ "karma-sourcemap-loader": "^0.3.7",
+ "karma-systemjs": "^0.16.0",
+ "karma-webpack": "^2.0.2",
+ "loader-utils": "^1.1.0",
+ "merge-stream": "^1.0.1",
+ "node-sass": "^3.13.1",
+ "null-loader": "^0.1.1",
+ "package-json-merge": "0.0.1",
+ "raw-loader": "^0.5.1",
+ "remap-istanbul": "^0.6.3",
+ "rimraf": "^2.6.1",
+ "run-sequence": "^1.2.2",
+ "sass-loader": "6.0.2",
+ "script-loader": "0.7.0",
+ "source-map-loader": "^0.1.6",
+ "style-loader": "^0.13.1",
+ "systemjs-builder": "^0.15.34",
+ "to-string-loader": "^1.1.4",
+ "traceur": "^0.0.91",
+ "ts-loader": "^2.0.0",
+ "ts-node": "^1.7.0",
+ "tslint": "^4.4.2",
+ "tslint-loader": "^3.3.0",
+ "typescript": "^2.1.6",
+ "webpack": "^2.2.1",
+ "webpack-dev-server": "^2.3.0",
+ "webpack-merge": "2.6.1",
+ "wsrv": "^0.1.7"
}
}
diff --git a/ng2-components/ng2-activiti-processlist/demo/src/polyfills.ts b/ng2-components/ng2-activiti-processlist/demo/src/polyfills.ts
new file mode 100644
index 0000000000..541adc72dc
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/src/polyfills.ts
@@ -0,0 +1,17 @@
+import 'core-js/es6';
+import 'core-js/es7/reflect';
+import 'intl';
+
+require('zone.js/dist/zone'); // IE 8-11
+require('element.scrollintoviewifneeded-polyfill'); // IE/FF
+
+if (process.env.ENV === 'production') {
+ // Production
+
+} else {
+ // Development
+
+ Error['stackTraceLimit'] = Infinity;
+
+ require('zone.js/dist/long-stack-trace-zone');
+}
diff --git a/ng2-components/ng2-activiti-processlist/demo/src/vendor.ts b/ng2-components/ng2-activiti-processlist/demo/src/vendor.ts
new file mode 100644
index 0000000000..5296ead28f
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/src/vendor.ts
@@ -0,0 +1,26 @@
+// Angular
+import '@angular/platform-browser';
+import '@angular/platform-browser-dynamic';
+import '@angular/core';
+import '@angular/common';
+import '@angular/http';
+import '@angular/router';
+
+// RxJS
+import 'rxjs';
+
+// hammerjs
+import 'hammerjs';
+
+// Alfresco
+import 'alfresco-js-api';
+import 'ng2-activiti-processlist';
+
+// Google Material Design Lite
+import 'material-design-lite/material.js';
+import 'material-design-lite/dist/material.orange-blue.min.css';
+import 'material-design-icons/iconfont/material-icons.css';
+
+// Polyfill(s) for dialogs
+require('script-loader!dialog-polyfill/dialog-polyfill');
+import 'dialog-polyfill/dialog-polyfill.css';
diff --git a/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js b/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js
deleted file mode 100644
index fb4d4b00b7..0000000000
--- a/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * System configuration for Angular 2 samples
- * Adjust as necessary for your application needs.
- */
-(function (global) {
- System.config({
- paths: {
- // paths serve as alias
- 'npm:': 'node_modules/'
- },
- // map tells the System loader where to look for things
- map: {
- // our app is within the app folder
- app: 'src',
- // angular bundles
- '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
- '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
- '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
- '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
- '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
- '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
- '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
- '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
- '@angular/material': 'npm:@angular/material/bundles/material.umd.js',
- '@angular/animations': 'npm:@angular/animations/bundles/animations.umd.min.js',
- '@angular/animations/browser':'npm:@angular/animations/bundles/animations-browser.umd.js',
- '@angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js',
-
- // other libraries
- 'moment' : 'npm:moment/min/moment.min.js',
- 'rxjs': 'npm:rxjs',
- 'ng2-translate': 'npm:ng2-translate',
- 'alfresco-js-api': 'npm:alfresco-js-api/dist',
- 'ng2-alfresco-core': 'npm:ng2-alfresco-core',
- 'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable',
- 'ng2-activiti-form': 'npm:ng2-activiti-form',
- 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist',
- 'ng2-activiti-processlist': 'npm:ng2-activiti-processlist'
- },
- // packages tells the System loader how to load when no filename and/or no extension
- packages: {
- app: {
- main: './main.js',
- defaultExtension: 'js'
- },
- rxjs: {
- defaultExtension: 'js'
- },
- 'moment': { defaultExtension: 'js' },
- 'ng2-translate': { defaultExtension: 'js' },
- 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'},
- 'ng2-alfresco-core': { main: './bundles/ng2-alfresco-core.js', defaultExtension: 'js'},
- 'ng2-alfresco-datatable': { main: './bundles/ng2-alfresco-datatable.js', defaultExtension: 'js'},
- 'ng2-activiti-form': { main: './bundles/ng2-activiti-form.js', defaultExtension: 'js'},
- 'ng2-activiti-tasklist': { main: './bundles/ng2-activiti-tasklist.js', defaultExtension: 'js'},
- 'ng2-activiti-processlist': { main: './bundles/ng2-activiti-processlist.js', defaultExtension: 'js'}
- }
- });
-})(this);
diff --git a/ng2-components/ng2-activiti-processlist/demo/tsconfig.json b/ng2-components/ng2-activiti-processlist/demo/tsconfig.json
index 524fcfda8e..9dd374392e 100644
--- a/ng2-components/ng2-activiti-processlist/demo/tsconfig.json
+++ b/ng2-components/ng2-activiti-processlist/demo/tsconfig.json
@@ -1,5 +1,6 @@
{
"compilerOptions": {
+ "baseUrl": ".",
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
@@ -16,6 +17,7 @@
"noFallthroughCasesInSwitch": true,
"removeComments": true,
"declaration": true,
+ "outDir": "./dist",
"lib": [
"es2015",
"dom"
@@ -23,7 +25,9 @@
"suppressImplicitAnyIndexErrors": true
},
"exclude": [
- "node_modules"
+ "demo",
+ "node_modules",
+ "dist"
],
"angularCompilerOptions": {
"strictMetadataEmit": false,
diff --git a/ng2-components/ng2-activiti-processlist/demo/tslint.json b/ng2-components/ng2-activiti-processlist/demo/tslint.json
index 36e753c92c..f5ca6283b5 100644
--- a/ng2-components/ng2-activiti-processlist/demo/tslint.json
+++ b/ng2-components/ng2-activiti-processlist/demo/tslint.json
@@ -1,124 +1,118 @@
{
- "rules": {
- "align": [
- true,
- "parameters",
- "arguments",
- "statements"
- ],
- "ban": false,
- "class-name": true,
- "comment-format": [
- true,
- "check-space",
- "check-lowercase"
- ],
- "curly": true,
- "eofline": true,
- "forin": true,
- "indent": [
- true,
- "spaces"
- ],
- "interface-name": false,
- "jsdoc-format": true,
- "label-position": true,
- "label-undefined": true,
- "max-line-length": [
- true,
- 180
- ],
- "member-ordering": [
- true,
- "public-before-private",
- "static-before-instance",
- "variables-before-functions"
- ],
- "no-any": false,
- "no-arg": true,
- "no-bitwise": false,
- "no-conditional-assignment": true,
- "no-consecutive-blank-lines": true,
- "no-console": [
- true,
- "debug",
- "info",
- "time",
- "timeEnd",
- "trace"
- ],
- "no-construct": true,
- "no-constructor-vars": false,
- "no-debugger": true,
- "no-duplicate-key": true,
- "no-duplicate-variable": true,
- "no-empty": false,
- "no-eval": true,
- "no-inferrable-types": false,
- "no-internal-module": true,
- "no-require-imports": false,
- "no-shadowed-variable": true,
- "no-switch-case-fall-through": true,
- "no-trailing-whitespace": true,
- "no-unreachable": true,
- "no-unused-expression": true,
- "no-unused-variable": true,
- "no-use-before-declare": true,
- "no-var-keyword": true,
- "no-var-requires": true,
- "object-literal-sort-keys": false,
- "one-line": [
- true,
- "check-open-brace",
- "check-catch",
- "check-else",
- "check-whitespace"
- ],
- "quotemark": [
- true,
- "single",
- "avoid-escape"
- ],
- "radix": true,
- "semicolon": true,
- "switch-default": true,
- "trailing-comma": [
- true,
- {
- "multiline": "never",
- "singleline": "never"
- }
- ],
- "triple-equals": [
- true,
- "allow-null-check"
- ],
- "typedef": false,
- "typedef-whitespace": [
- true,
- {
- "call-signature": "nospace",
- "index-signature": "nospace",
- "parameter": "nospace",
- "property-declaration": "nospace",
- "variable-declaration": "nospace"
- }
- ],
- "use-strict": false,
- "variable-name": [
- true,
- "check-format",
- "allow-leading-underscore",
- "ban-keywords"
- ],
- "whitespace": [
- true,
- "check-branch",
- "check-operator",
- "check-separator",
- "check-type",
- "check-module",
- "check-decl"
- ]
- }
+ "rules": {
+ "align": [
+ true,
+ "parameters",
+ "statements"
+ ],
+ "ban": false,
+ "class-name": true,
+ "comment-format": [
+ true,
+ "check-space"
+ ],
+ "curly": true,
+ "eofline": true,
+ "forin": true,
+ "indent": [
+ true,
+ "spaces"
+ ],
+ "interface-name": false,
+ "jsdoc-format": true,
+ "label-position": true,
+ "max-line-length": [
+ true,
+ 180
+ ],
+ "member-ordering": [
+ true,
+ "static-before-instance",
+ "variables-before-functions"
+ ],
+ "no-any": false,
+ "no-arg": true,
+ "no-bitwise": false,
+ "no-conditional-assignment": true,
+ "no-consecutive-blank-lines": true,
+ "no-console": [
+ true,
+ "debug",
+ "info",
+ "time",
+ "timeEnd",
+ "trace"
+ ],
+ "no-construct": true,
+ "no-constructor-vars": false,
+ "no-debugger": true,
+ "no-duplicate-variable": true,
+ "no-empty": false,
+ "no-eval": true,
+ "no-inferrable-types": false,
+ "no-internal-module": true,
+ "no-require-imports": false,
+ "no-shadowed-variable": true,
+ "no-switch-case-fall-through": true,
+ "no-trailing-whitespace": true,
+ "no-unused-expression": true,
+ "no-unused-variable": true,
+ "no-use-before-declare": true,
+ "no-var-keyword": true,
+ "no-var-requires": false,
+ "object-literal-sort-keys": false,
+ "one-line": [
+ true,
+ "check-open-brace",
+ "check-catch",
+ "check-else",
+ "check-whitespace"
+ ],
+ "quotemark": [
+ true,
+ "single",
+ "avoid-escape"
+ ],
+ "radix": true,
+ "semicolon": true,
+ "switch-default": true,
+ "trailing-comma": [
+ true,
+ {
+ "multiline": "never",
+ "singleline": "never"
+ }
+ ],
+ "triple-equals": [
+ true,
+ "allow-null-check"
+ ],
+ "typedef": false,
+ "typedef-whitespace": [
+ true,
+ {
+ "call-signature": "nospace",
+ "index-signature": "nospace",
+ "parameter": "nospace",
+ "property-declaration": "nospace",
+ "variable-declaration": "nospace"
+ }
+ ],
+ "use-strict": false,
+ "variable-name": [
+ true,
+ "check-format",
+ "allow-leading-underscore",
+ "ban-keywords"
+ ],
+ "whitespace": [
+ true,
+ "check-branch",
+ "check-operator",
+ "check-separator",
+ "check-type",
+ "check-module",
+ "check-decl"
+ ]
+ }
}
diff --git a/ng2-components/ng2-activiti-processlist/demo/webpack.config.js b/ng2-components/ng2-activiti-processlist/demo/webpack.config.js
new file mode 100644
index 0000000000..26df33c5f6
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/demo/webpack.config.js
@@ -0,0 +1 @@
+module.exports = require('./config/webpack.dev.js');
diff --git a/ng2-components/ng2-activiti-processlist/docs/assets/process-attachment-list.png b/ng2-components/ng2-activiti-processlist/docs/assets/process-attachment-list.png
new file mode 100644
index 0000000000000000000000000000000000000000..23d902bfb4de586ecd665756581208184f7d75cd
GIT binary patch
literal 16319
zcmd6Oc{rAB*r&IZ%93P{9wZ@q5uy;1t?YaD?6NQ6t)55}CD}q*5<;@?m9*KiFNN$x
zWZ#*e_nVnx=9^>YnBzOX`M&W-FVD;K-1l`|=Xw6NJ6K&+fqWn1J`xfV@{5XcS4c>9
zX5jk_(jEAhXYp7o{;sn}(B>o2RLZC5g48lY`|+S92Fj
zOGnphPHxjXtE5Osj*?uIJFn^W^mmW9p@z^q&ZF>Z82--Vlwn4|Z7;I3CcHu+=iO
zlW=r!$ZAndE6DO#7hgPORCz=qUfk$NO=@AXgV95yW6%CRc=zwgIL^zo4@phQZ*o*g
zH{6)!zx{W6hFJaRhR#%d$>`HvkJf&SN-YJpwY12R5{N%a-9vDZBqZyMU0q#Gdna?_
z_iq3AHu=LTLuXf4rcCecA4w!RTuPpLhfeZu|3H6`ShfA%t8!GE+c*CA!Sl=ew_lLo
z)&HOO3;hokcKOGbmX>bLMpeDmeU)WUq;Fs#JfWeXk(ZaJlcj%{nOQQhWha)KIObOR
z^y$+_kEm0xj1LXXw`!<)dwEHA5`27o>gwwQ+Bt`Zhx`239ByoXt-mH8a#`uhvp&3U
zcU=AA>};%r=hX7dAnON79-T8OxvTPqFANS{UzeKtBVUu
zojsPHC46ylF_K58y{)Z2_LN;;rJs$BjmeFf3yO+&wKM(xPNq40xJMyKlEo<{O=@K*
z;;iptbaeFkxLSbHrAwETlzbN2bPDu;Z>=|OrM!5t`R2>5gXb4LlDCeexKUEr@rPJm{-vj<=iNKg&NF?**VzRHAJ&-p
zE%kWTU2MG=!C6vVT)wgRoi$*6=II&NjLb|*7D@WUhueC3j0_CyEG-KxzEG>FH3n_?
zzYm}zR#hkGP9GyDoXFunHnhohRY#{IT_cS}%=zkQL;Q5bQg66*j$z3gkKf%54FRK3
zp3}Wq+L_hW)uN6+bhWhH*OzAw9akM&@L9Fj*Y9r2)QO9W8y`@U-guml&@eiO`_RcT
zHqz3%&@tUtwRMNixbux=tzX485)y%Zw{PG6^5qLJtzGStlOl_$y1Y+K
zN!pOMzP^B=&kuipFA_es*LQL9jL-bb%*+YJH6dT$wXa{5;#Jd{u5t75s3_Ml}NjC%@t5664T}E4;3j`B*mIjUGkOB@bcP!_BkDQgo^4MX?jjh
zny{#_u!P5?uA}3Wb)sK;M~5dqdhgQ6yPUt?_dVY{vZiXdw$W7o?#Tzo-cJhBah`n#
zU!Oa={HL0dj9^gY_V?Tf{m7-8#dyz-;?`oV(-@r`9d>Zbv_j_i0z?>BjQ
zt}-$^2p0YC?+6MCVz1KLHpt1z8Se-Bmqf?J96NT*sKn*i(WB>bIxcZMGFj!rn8?x5
z(V-*A9iyhDMG{;Ae9=(10md@lxQ+vBdcfJj-=SbmR{b*Ag8}CsKD=RA^)qQzc&u4R^
zjg)|^+6wVASsh<1l2HzcAR~Ne_1?^GA@X`{NM#;P
zN=}aAH`yEvlb-4>2+=zcRZB*|R~@5?NgshpTwJ_)@4UwE$@S@n9@`XY?v
zLDegpYtu1Vud=enml$!QuW`!A2x!*HqHzMIJN(Wq=~-G@Drd#V#KaiqRC)YnEcsp;
zdR{`Xd_S?Ez#VVCFwqfYFLouJFP_ptnyAdlP89fJ&-o^et~bA^C~Q&u-SW}(Bkwio
zSDMwzdiUjW3~i0t2KTHRrKza&Njcg2n8Z8wl%A51@SX0hXliP5yRXj0L7bnT7jVE>
zo6Z$|p&H_!apcGmob+isV@%^vTq2s5rBK((+^BV3^!1L#d`8o?#ozPx9Jdqf%Rl)s
z{N^}u0;m0pGbY1$xN7u%qd=TXC1qtv|Mlfd{1p~no_9-2#nUxy&CG<{f3?oex>T!N
zyV!rbB7XP!zGut*($T7h3-y~tGJ$7uWF`l;O1JoDJeJzB)VbDcO*WHS#%E_|$6~|7
zsrK*RpR22^HcTZml`Ld~^M)EIzdpFf)u{mELwdcRa_N);S`-_9`JWwxp&rk^iW@6J
zc|yX%uAd$p@jU(D?%kur_2t1Z9KY-{Ze!{$F0)2UmN-Z_T7mJ*;%;~O7MGT)P}=qN
z^>}j{(p_|XhQ;m^w1kwjv>@7DeKsR?F_;zm?hM=)?Y){EQHBm{ms9bgV?rm}(8kiz
z-Nb1R{Sk`*)`xxTBceE5YO1O)LSDRhf!goQHUIQAlE=C}R!dv^No1ruYft4uy8#n=
z@@vy-4DV~lw4I!$nVib|M@AOUrBRZQRB`iYzvANN7WbYVnjNmSA>odyEh{Z0%Ji2_
zS4yO8Pl{W&Z-?BwH_{N#L{H!O?VGxhQH68=d+b(NCI8&aOv#OvS=O!PPw(EnLuY!C
zk}}zqm-g)0+peyXmoLXg>fLhj!6n#d|*`6aQZiu3cPl=$}|r=r|kQ`+tB
zttPdSQdPAzkyDkOk&z@Sw_Y+ZFt9k)BVqZKCRpxKRMhD7bd_}@%ZEzrm^f`nf$M0)
z_RM|${5clCprD|=y`4uVThjd(O~q0SfiKGU=i8fo8&jTsetu{M+>y2mzuNGD$34GC
zIeafv;h;`UOEWMqkT`Q@W4=XgW@ZL`28ATjU|i~Uf`rc&w
zH37D5WQn$P_vrfW?HAZ@{rTrU{zHG^M^N|L+Zx8U5x-KVufFz;9xP4^Uwn-7r)A?0
zZ(kIBR#4oAR>g|2nTgEZslYep)pV3jpgXvJ&epc$Rb9E3wGW(BwKG3?a8in{W!kMX
zZNJF2pqOX=`BMp8lc_o&d&1H
zUzzr&eYZ9@va+&Jx+BhF`Fh&g+CDzwLDfy;Za_a>Z!AqsO?@gh-`?DbvCmAQklA)m
zE=kAO`_899KOCujci1>Nt(uZ9xVgqCFShBJoHQyGVPi9U{Kc@$h1piJ)~wJKVJkm!0OpagF;pnew+#IkP^$)nBm97b%!9kRKStUgB
zHX!}|`}c)~g=npN_wKD;0Jzc9(=+4~m6FkG`;ff5>=CnsA6uMP*f0V&iC7>xv@z>e`yO
zBum^`kt1DAP1k1zF36C^)fc{g?d<7E7c55vHSq|RW24!(jqM3>kE5bYs{DKU`uci$
z{8DT})1S<y1&-JsUTt}2OHCu1(-j7QGh>i!nqovh0G&I!GI?T$-3fK`J
zACKXam?({3Esd08Bip~<_4@UaPcb4QB9pxpaW!V+3qDrEuVw3^1qVBG%|}K?;!Zo5
z5RFEofc2a^>n(fOj2v`9PdSd~CK!mFj4T|AtR@8~P49A-RGiU^JMb9`BQaf>TDx
z9TQ7pqXd@8gvhv!z^K~j
zZ>^6?GchrZ-vy+ZXwMS1R|g6*FsL1z8B21I^WC_$kq$<#N
zaCB4+n;SFJ*N=^g(m8jIL|9ZRvC6*d4c?9-sCsbbX?#3%0GuX0J%+GPai{EPLuz6L
z%>#9LvtPYR>CaII!!H0T@%>%UF%|k5Yind|+}qbTjm?~%R?~@%i9x^6OxFaaeSy>C
z<c#M=DDXf3t+l?g;$p*cubH7Q5jd5X
zFJG?aG%Plpia+!C`rt>u<^CY$AYjUpk`fVZmUeUo93?<*7Ft@5!H@SRI&%8DtlksJ
zoGMpF!Xx)mvXp!Lj_v2Eh}u*AB4#T8T2s>J&!2I*XpJ;9G=`NoVgk#3Dx{>P13*NS
zYjJzo+1Zy%eGZ7#88NiE$g#0cUFI2mVEQWx_*vW2vq+a0`-LWTLuw1P*C@62N|EDh
zLxXl^TL>LLCs9*J$J)~Jq)BBtN>WfTx1u7xakRy}p3d0oJQod09PMK7?%j}I&;rT;
z9Z!>zk$I2ASi88oMnpu|{3VM8EOno_7V5P!I~*DsiaUyni8*!ZR6$`O#TmZiL}FlI
z^IkMlyabXf$)c97iL=}CIj*{2OiWDRddj(@(Ncb^fRuPk0CUq$Ej_(1O6he0F|p6X
zE~gk()YZRbXk~()CvSfZf~6f`qLd(BN#`I6cw3IN)`6pw5tJXFpboaRwbkT4Y{Yxw
z#Q5YS&{^H(W$X(XA+YK6S=kTvfZ(0>9(Hz_{f}`JpjZV}Uw3iA9s^GGzBaubAK!xk
zMSbXyudgq7y^xU5wdLxtqaO0fDy1M*=0`mR)%}<-=>gML=g75YDEgi|blBIn}M)K@g
zG6JSCP6E?0!?-i9FUrcwGBbGy#HkZlBxo5yD#c#j-aRq0f+AvKT#-rut(x$?me*L!$Ve^7cjwRFG~`R`&q+;9)#Qe%mJJ!o0YgBoI<(1`$>2uS1^#JWk@mc!
zLrui0ksN-3tw9;U6(567AtuocWY0rl#-ONGwZgdQ?=jw7M|S
zWxtqhREBLe@g9yu1Ag-OF)uWv+F_;CD^iK9G&GN+qhD%gngndPqrx$mH`bP{EiCAt
ztV0>IDd^TQ@oTGrfLo}YrOgxh_3>jGO3Epx3{2WXJbpbVq;}B^7w>C
zbR9N9XiMm;8~6F5~4QEDGw}cY
zICe)9B%~HnmrWe2|MJbLX%WWzkZ1I>jEkL3G1LMAq$^TV3JVv1l(<6K5}u5y
zF*^%E6TmEx2j|C2vKL5aaA1ID-yK6fYwr0e3r9yOn`VyH;{5!_R0F?$iC=kt=RlOK
zpc_OBXg`;;y)JXn=x4RJwB)6vq?DBza8N@LrjoG`iqYjQeDfx$fBNlP5|vA9D=UH$
zA8cA)^mLhecod#H`mBHYHF=@ZWi>TvHi}o5m#JhpsDrgL-QCJ@c(FZv
z`R2`)%r+OXr@$hO31{P|9zA}X(lWkd=T7OBp+oxothBUN%NtkJ)sH?@WMgL^H_e4E
z=sLqdu(*2l?{qabBJ^|MTB9-#2tzLIuk_qfl{qISCPMDtPqi$*e*HRdVq04q&_gxF
zdCEI63p;o2BvO?cr?mh;(S}$S_r7~a5D{_v)tc_;=!jG7?d=T&&aP#arJKu!&RJUO
z-W}H3kQeagM+dW=b0(eUcdg<
z+S)2mBt*@_lQ}jv2EHEvazUg5Znp{$xmQ?tI#+jcV1Sy63XAgDnJlWzLni02`M|hD
zlkk1q0+H%;Tvp3CV7T@x-Tu*0YrqOwQyIlemueyBk`fpg7$C}uke>}I@R~8>Tl$Nr
zd-(9-`Buvd7odY(aB~xh&wy4F5^~Ak-yc7P)O@Y29h_SMi4OB#&diqb{@GVUX-Btm
z-z(-PyMUFnub^_0XX|W~LfA(KA{AfM_r5+gQnCXFpmbmiLym(I(%;_?{6?gD(fgRn
z%+ay;`}bO2(4t=pKGl1$A(%6Iwzj`;ePczz{d
zS0puUZ%KA8HO}dv)N``59EMWhGOPsQlqF0dM_-GJhW-BM(YZs^)V{#0AbBPn?UU>IxU
z>F%y_@uJ|59?F9Z3^uytE`1onE-o&NjEtOW2~f4X?+M5okWyh9#gL9{d4!
z1Q!B4{ncwZ6q*e_x^ai`t=VmUx`Tnz*L34uv+08;bz8;Z;Tk)mSaNm=+}3{KTJi$~
zFIcX*yPKOj7`Sx7=WJpl3O_6)gq?VRg5vA2OZC3LczAfgEK3XmQmT0lC+zU
z`@si*_L-TPW8>l?m4@T3y&?X<5Q?c~925EV>(|)zZJ!5r2G^1ny$7kawKYYMEdM?Z
zA~;;0E-wht>PZbfy)zEo`8RLgjE!Z)GJpnW>g2eHG5gS_mz2cNGk@v}W|91M?uqeR
zJFmk>=lnf9Jq>hquNCN*7&_v>+1Pv;oQduZ!yh%5
z6+57FV8j$f1j1x%*I-a)U7i;aaz6@5A|l@Vnn6l1S=
zI|#)0-Jicds5?75D=8`Y`&TM*G>^MMj_vH~DN~@^EG(_KT6}GD_15JCKl=-Eazmq|
zo^Ed6sCUzboU&_w1%iTs@9X0OmF}e`cXjiX({URg4yjpKS{@O1`;5t-ovoVL=Ggff
zC%GS<*!&(I9B!zbOsDOi#i3yVz2=xyB?JbegQ95j*Fg|Bfu-P1o(!p(otgR4*w``d
zCLZs&IzJ9*P8~c1kpmk6jkABoOE%kuo%qMA960GXCuj2oIyySYmaksDN=RVADGHW*
zKROq)MhYDsz5c!wY->y*>@qg++qZA%b?gccKsF)1p@-71_M2UQ$-)8Ns!BIo9ZbO6%#9l!hs_>o|b5p*M(XK)RW#^PR`0YNxq~|l}}6Z
z_S&7GAZwfgOUv}OUj(fTwug7M>zhS(X;9T!<)x{{$HvF|&5fwQeeo^NRzgICHO7snZTQ&om3=?y1WMt2|phntlcC}UB+OzGwAoqoFSp1
z9K>&HYm6*pR5E-R#0y(LNKd!HFmQKYfSsK7E`{$s
z2??wGb{0S_vB4@2s(~{m=zcmrXEA2nQD>)aw{BX?vE#?rmY2V&TGht_(MCLaWN&W|
zuyqC#qPbb7>O3%gG=Ytc4eS(?8{$CSQ~jh*UuBn9SNH7R-Bb&u2X&^ZqLL~~>gw)p
z1clX=9zgrB&23ZTOM
z`+2yzVRJl%&83veec}WeDd}rC*N`%RG67iabh*6XsbPNrzA!*1C+*`^M`7TNj*8m9
zzY`iROCZwF(Pg&TR=4KpX90tHxVxV+{4zSn&dv^9L|Q=Ls->kCS{fk7^mHP2KQi)^
zQ*SxS=0#dsNR65J3KVi|L9^X7XaMjXDFKQRJ~}z73?8sA*lWCJFGKoY41D$Tu3H}Y
zPxSesa*QihM;#?NSrR3rUq?S`fn!I$QnfWa#h)f|zH;fE>Q4VG2u>|+Z3`cnoI)4m
zNJutow_O7OqfHq(bMry4lP4z)XjxcPNw-}TKfev%=?Vo>xU?6Ql&)~m?6~>1r>7!6
z-wla@d)#kllj0Ku8rbv`2>K>U$rhoKqz1YZ;s0bf)^0@^W}Kr(A{WfAn0F8|7^NVg^=|T!8u@
z$htJYnm6Yj58M`@mQ@miK~#OQ1YJ
zX+Udqw6(kP~o>2#Mzc1hkdL0G9N>2t&6irLHLjsNX8U{k}B&
zV(NUnAI`wiz_;hJP^G4;wl;T;|3(4)Sy(VCbsMj60>WHf8BN@O=RL+3&LM<|$a*Uz
zNUGpoqp1RppRPp{RZ|;v7K6H5V+I?8mzP&Lr-N0@`B_HBz3P6zw}*=JUwLu>F!(E%
zWuB{l`0#;OKmV>HU&NP6*fQYs@^W&aLNRdk;rP{Byuq7vc6L(9$TKEAe{Kpcr=Ru2
zu^2@U*ej#x;o)Ix%k5xqWmO1J4TUOK_vw=-R%T}J59C|c(gLH!tLj|2;)3)~ylRpA
zg!ZZ?W~XPLA9TuV$3b=df2F5QZERTBe=j^KCgwHXoC@y|J(d{0cR^W!wcKk(1DJl{@e%$(V9t#T#W_xm7AwXq8
zLEFcVoE#iPhKDgXV8{XyB{ouG1{D^v_$6p!wgaG%cOZe(ViP9CoJaWITPJg%R#pBR
zrTAFT7sZ_G$^|K`4?njOsbYo{eOez}pz!P&cUTnHXhQ^?&kC)b9NM
z=AF>a-AVd?=$zn?BI6L-B!(W%lT$7PW5HAu9t%Xe1rSslb0~Exai_^I7F$?Z36Vuf
zxN_MRtRmK?9OP30J7acb{o(sQ=#v4PbBRcVxP5@I1V7ua8g6
z&*f-mV#beOXE9Q~bO{lveWavUM?Q|uMFB|A(0u53hGGY@t;v0ao}P<`XK=u<_u`L$U35cNJGLx%c)rGjz749bw#zTt*rrPg1e0?0n?#7z%0tut;=WjAO(U3
z_Af3L11phH)YR0pwarlGv~zT9w=KZC54e<|o}g2^ySqd7$mgk^E4;;#
zoM%_kL0qp*osp6<=8lB;%Me(F&=HXed=xCx$_m#m*C#G>7Xa|&NnAQS&g7iZmoHxy
z7e`Y;3;Q`ac_VR)8A%Q{DBb_!6}nx{=@=az-k5cC7w>_t3E#|=BK6s`XW7|P>1heE
z7~jbG0Jy|GdNf>O
z;{uS;L`9=MeytWq{1IpkxsmGk@3-Sw8>{Zs){x3^@rf`ae*XLkYXP>mcqS~a$#7AxWC}uEkq!I%FDv>nP=AgE;w$5z(h3<4n
z28MOsn>SDRO?tb#W22)xdwUT-9M2uu&tHC&W}mC8D>nA_ty>TiJf?elkS}I}gowzh
zFjyQUiTu9_JUn(irS2l~!dv3B2~1|ZdNmou>QB$iJmgZsc%PGt>snie
z7B6irD0)-V46>ww_k)heq-#>kM3)P>+KwQpN2KE1j=?4xUVBGKB-D4g6$>g#`J74;_hp2H`D
zDxW<~0P|rvu(BcO(jDtD|G}DiY8Q&Yx`mA1#lr!Xw7#4E8KZeEVOOO*FC-sB8^Ec^>zafdf#7iE>{lLS
zyI^+dy}tTaRBfbE>J2GrE-o%X!OL0N+cqV31RJ@wG~M|5vjFdkijq>ZZ9z^YywH$K
zNXuiQb4S7;LG!>W!>mBON*Z>os6#gmHMNZE6R4n>+F9Z^mYppuQXtbJgA9Xfex6yV
z5g;8IM%2+E8F(V(m!2V1fx(?efAAob4q;(o@-Qi26a+bKt*w{d@8?HI61H`Mgr{S3
z%0>1g%#;#xo}Qw9b+7)(?YVh+x{5K6m|xsq4uN`XJHh)u7%K>1?AWp6|E;%j05k()
z`S`$q%fc_M?hzEuvo!=z%+1U&FVH2TBO+QLGV`BE&&oQB>4+fl0bdLyt<{E2RxVmeO+0uK=e^@LGc>YLpAh_F7`{h$N9K8(?b)+u
zkuS$8USN9|6ttHh#~Be^V}@2QDk{nnrlXZ73e;{*-~34^0l0{uCd
z0k*bp^7Em6j<}StlZ)<)EjGA&A@PxQWUOhbVws90hUQ%fdVfr
z512A&_x2qj8(?%I;tP=EwiU+Ui0lf^Hz2MeTqfCX?D|$4kjn|gY$$#{6$v$F4B4K}
z&ZOkz@#5|oP~jj;8ygz~;wnb!B8;f0qLP)J&BDw)zqG{9&22VdGvW>b?^``oy0em!
zkgs8VLl0M0K5$m&*b!&=AQp9{QkFJ`-hn$I4rP^FRHTDU#p$EO
zZ&_czenpc}ixe&f)P5U5aZUcc_F^jm{AjT@8@7r%BJY8ArP=p@2R
zu2lQ()aCsXmU{6d#KqY;TF_h`U<3h>ev#;sCX16sXI_~G;kSrXR%g%dOPg5m*$7{N
zzmAgzeQADn7XIIShSnV!!REVYl>|aRqO}lfePI?7KJ@nbD>7C89bG$2ap1tWsJDjt
zpZcAnrH>)2H@mQKMA~06YpK4m(K@edzV->+wc!~r?7K+E+sBPa&qEi}*3w$QzuMY+
zprn3LIZ)fx<&Dzaaq}m#d6+@-v#**&CnqK(y#5>|Sk&A*jPzX!v36|mw5TZPAH?O$
z*$Qc0dH@=}SY&0ZF&z=pRpbwR{%`PPqD>Qz
z4Yj^a{lxQE-LtI$1nf9CBl%OocKx0`oBTt^w37gn
z2zGr1S2)!bW8((1Ttg$H@gijyaR@2H`anxSEF3T^+qmLuzw?hDKmO4jKl~KiRGt5M
zbI+Uk9mds}Br!{QWo6%Cp=7qfV!~NOLuU#5)aq|o;S;HS4Nu}wp;O`b;|Uthh>NMs
zNK3`GK0~KMm>`;$^UyW45(7QGi>cdDEu>yn9Yn~1z6I0PkTvm^>{ayiKT14s-~h9j
z^SN}*Y`wg|sn_yK#i3F!<=7A#NmhI00n1FDRZc;Hj+XZHsZ;Pf1RYv!PbD^5=jyUO
zu((gqF;klp
zarOQK!N-BsD2|8^4GbWjm)2$rRURMfJU@2X=Tk&R2KS*u5#&s#zo}rQfsi|LOw_7B
zfbu6LvFUHx;VBVVaZXhmPio9omY30jCg9bmiu$e2gA)YHxj=P9j0L3&4TYdna!>}@
z1@s2kd*ey)A&QDTQEX~zVPI8qZ2fa9b$+|R$e`-Vv!bg)-#Z{djET{MX>MxT|Bzk5
zP29-adj+y9>@k!N_y7V_j(wF#=p#0ib-AIwJ_}EjcxHzyr9$o$ah#f%NOpP!3BYs8
z@Y=PP=*s{J<1Jskfc`6+mig(U&0?#Reg?MyIgtL4Xv97$SvBINIAb^+o+
z8n?2xMxqmD(M<1jMpt*Y(#{XKD4Z(9e8_!!mw|og@4AGjjUy(8j+ua`vyF5&T~mIm#u`;A5(3wVyv@GQo~X^^8Rjn}t9$K0P`y
zVW6QQ+b4n%^S-W*S4>P7tV@o~$M(VY@ra0U9sBki;esFK-g6isbsBgs$t<@R{zdvb
zCRp)FZ{9qjx}v33W0i-_5C5)eefAPq0!&`I!-ubnJw2Xy;}Mk$Bz$;U+dSm8`kz1j
z)c`C~Qc@s~;A-OW4WOUfq?x#%fe<7^dV-G+;lRLjlLGztr%xw;{jx27)HtdjFP|VC
z;D7Zhx_JiDBETtqebPwYfVIMv!rP%XV0NS;_L*hw}b#O5z$MoqH5~wECyP(tbGDE^pFg?
zlctHuRvt;2p>e$&$Ang#CWh&t^^cl2f+#L7~
z52nUYxxgxiCkzyW^cEf~Y000#>s@Va1yEh9>!nx6k_kluNS7)pD$>)_i{UvBm12mM
zFuoF>Sm1d|lzz0$dh;cIm8W74sb*2D>6#fB@PalYSjGz9rEJ~Y_kUCoW69EvOGx00
zRDu+QGTfeZc6Pq-N|39>(5(6J;c;XnNK|j7ADFTa+)vPa5O4PS?VuN6Mq|LH@J8g{
zaHcCOr68o0xQ@bY3=?^3Dvc%qucSC{`R1nE#P$<7$n@UaiCKvVIYmf~t&PnJ9yZy2
zPER6$ih`6-=P-!JDVB2r@#w@=<H)cEOLPM*6L|&e{A+u~AFd7tOuqNT0
zE59%zWt2Q?Y|T!iJH2w2-zVB2XxmF5`N3M<-4|rA{x)Q>pnhw4>i0jdvXB|B?%DqC
zKlK6b|HU%N?!RTo$NJx%K;QA-+?$oK$^ZHBm{-@&E&i*gU$!WDTFGV-FZcf3zO9QF
LROPZ|uHO1D;?MQ`
literal 0
HcmV?d00001
diff --git a/ng2-components/ng2-activiti-processlist/docs/assets/process-create-attachment.png b/ng2-components/ng2-activiti-processlist/docs/assets/process-create-attachment.png
new file mode 100644
index 0000000000000000000000000000000000000000..f755633f7c68ec755333818118921c9dff249e0d
GIT binary patch
literal 5312
zcmeI0Sy)r&x`3Bb3yKUaN-Bt$f{hw9S`d{fHnBxezzTv40g*w3Fvt`VAgKkUN|8xG
zK*C0eDKZHmKnx)u${+$tc9;p15T+0ygh0r!)7^`6an9N2Irm*R>-oR+uW$Y98{g-9
zaMj*gZI8|#007i%E?v9^07@?aUh`<;mJ3HS30i3kXdqKkE-540d+u^6F}
z#3SwofY6sFb_LzD(Y;f4*Y|**p1XUCPTm0k?xcN)4uNE%C1J!;3ji9twLzc()6l^|
z0J!kk5C#AlS&aa2(SB_wpn1Mi^?wuE7M#DMxXQQ+l`ek0M9Tt;2*=LY>jpc4W@q}#
zGp@S20Px$>&%1!b;h7-dmkt|G0QeSy-SM~ZZ-aDX*TwDx&c1*1`O_*5ExhYi>Kr6h
zN%EDsQYd6@$KTW@gr~i`8U3BfJDer@a2gII-%fC;#-*{lGgaL!+D3c?&nAyzyWs>o#>ESvXXxn(L-_@O&+f1i&o~VVd=}6`9>e
zzQu60I{_cg1}1ByIU!X3v>Sz;QT<#gTeBu#QO>
zxgTrVKCBuTgPLCM)oc1-%~t%#P&r{;Vtd!`X3Wjm%_T&?SD8~E+B>Al^S~d@eeeCg
zHYw1Dhp#SAL>?|jU5xTYM|IZq!7V&2O^wIDId}zm391CLY8ZG@kXN-=-xYPkJ_y-L
z9a5`OK71<^^qX7%jervNa1!wfOEr1XmBf4Zz$cJy#qK6``HP%E{KIqao=VX~ALb_fU&l3iyUmdPU{ar7gm~UY<)`7SLrQVy&U=Q^;*xC0}*ki2*&t0f*>A0_2
zeV!XTI<}`(s(bMC56&~!%imAT-FTu<@79Y@xkDv{HNX=!7mTwUg~c+1Rz>>Q*>|h`
z^UFYXdbgcJcZrXZk0~7Z%0|&41s3p_m5KfKZf@){^wmG
zuPl1qE1b!!q2&i*(D_I+yb*xb`?nIhPF<|_C@#PI#phjhzx}oK#A>*jS>dC<1phbi
zxePDw2AoT*YOYr$6{K#;|t!X+6zA2$8rzL6H!s4HAZ)<^%-8YJdTcM*Etb!Wc{`i87QrHsAbYwlW2@<7v7w92tvnPprDp-Z5Hq>d837mZ
z5tBl~*K}_C~*P7kDX1B(-z+rg~pLI@TQM3
zsL9a16LtpJd+tBQa%JcVV=&(kdU+;G4vC+la5)$gm?$JByjVEB3?aZ_qLWPNSu^?u
zq}!O3>rXF|w9ahHexUQERYlRuPOD3TLSj70ML$$1tq>ZNAB<_hPH5S1Y-?N|ULK#v
zFThPT;+|pKKhC^xsU%Qon194AeCn5Z?FGA@-z+xkR+&xv6V~yObiZRiC1byW>A7l@wVTpZR<7g41im@!WaYjwr?g;r>kq!0vCFvMGO5p?WG3{L9
z>rvO4+fC^p))GqojIww^C8=?Aq){;4J$y-|A-4`FbT_YXB9u`12@16&(4nEQrxwSe
za2sd%l9-L2aU*#*=;3XL5R1~;`8Q<_XU4_z7N6g>NvK|PB)p6DY1qZ!nn#bpH;)r5O&DPmn4K|lN
zCvvh4!5*_BRmc4>y_Bg{e{SPE;6s0
zz8fM>!q7Z}OquTKeiYV@#10TElS+e#O3l$3jm;I`@ePNdD7d5u-0L38p-&!rw?r}w
zt&in5ZIWzCS%RE5L*gx#rx
zFJ9lsv?;gT2*vY5VV_P7am{j#+~JJSVLGBm14(XHb+3bCjB%!M!*<@s6%&$
zD}>uP7+W|Xri59)c;+Rk8yQTX4tsbV=`4wpKAPP4#g2lRQ-{$;`TdfvyA1|im
z3{?0QVOK=RQm)XO)s#)Qeod5(((d(o@Yp-h28#M;@(^WndrQsQ&GjhXV|zi;K44lr
zMm=koG)2qeEuUTfqN5-w0#>)-f>e3OQhjIKyPqk7EE0o3UUBHCjHv0|vY2XxG1VS1
zPdT1ryb@FsqVZ2GU_{PPg7L
zGxh}v%UE~_7vu5owtq!A9}6Da;Pg>g3f%*+M>$1u+e@~*k!20=HgPRux&8=0;
zIa283qQWMRHEqTFAD?(xZHi7>5g8s9(hqqW67Oqq(tc&jG;YC^x}r{_^EpgjeYr--|0(*y4LTrvPlY^_DoSbR2299IQH(ZAg`Db
z23MA1TN}T9b2TZiEPo}t-L*;JgT)R!BFm7I>xhmK8$slJHsrNDP*S5mLH~VYdE1Os
zI75ar!`opV0>aLY^hXg!e$I94=cA+wl%hCq*E@&$y2q_97V2SU
z=Xs&ukUp{-dH1eK%XmdtYn9@~Avhnm0YhAy`?DGHyExKIvm`5)i%`SfjoNfD`sQ3Rp_GxIzG<4n8GVQEadqq-2Zo(0pYew3+xw+z+4L6!p8!y@GSClX(gl-4_?9_8;jLBhyBtq@;|P|C`)Mn!maelmN}@
q&mZ!PM=TW+yFtXppK~>uT!V<8+%l_>C~yw|Y<{%ASc$m#>%Rc;?d*;K
literal 0
HcmV?d00001
diff --git a/ng2-components/ng2-activiti-processlist/index.ts b/ng2-components/ng2-activiti-processlist/index.ts
index 055737baaa..1ce2699dd1 100644
--- a/ng2-components/ng2-activiti-processlist/index.ts
+++ b/ng2-components/ng2-activiti-processlist/index.ts
@@ -29,7 +29,9 @@ import {
ActivitiProcessInstanceVariables,
ActivitiProcessComments,
ActivitiProcessInstanceDetails,
- ActivitiStartProcessInstance
+ ActivitiStartProcessInstance,
+ ActivitiProcessAttachmentListComponent,
+ ActivitiCreateProcessAttachmentComponent
} from './src/components/index';
import { ActivitiProcessService } from './src/services/activiti-process.service';
@@ -39,6 +41,8 @@ export * from './src/components/activiti-processlist.component';
export * from './src/components/activiti-filters.component';
export * from './src/components/activiti-process-instance-details.component';
export * from './src/components/activiti-start-process.component';
+export * from './src/components/adf-process-attachment-list.component';
+export * from './src/components/adf-create-process-attachment.component';
// models
export * from './src/models/index';
@@ -54,7 +58,9 @@ export const ACTIVITI_PROCESSLIST_DIRECTIVES: [any] = [
ActivitiProcessInstanceTasks,
ActivitiProcessInstanceVariables,
ActivitiProcessComments,
- ActivitiStartProcessInstance
+ ActivitiStartProcessInstance,
+ ActivitiProcessAttachmentListComponent,
+ ActivitiCreateProcessAttachmentComponent
];
export const ACTIVITI_PROCESSLIST_PROVIDERS: [any] = [
diff --git a/ng2-components/ng2-activiti-processlist/karma.conf.js b/ng2-components/ng2-activiti-processlist/karma.conf.js
index 8c0e83bd7e..484bfd5d7d 100644
--- a/ng2-components/ng2-activiti-processlist/karma.conf.js
+++ b/ng2-components/ng2-activiti-processlist/karma.conf.js
@@ -8,16 +8,14 @@ module.exports = function (config) {
files: [
'./node_modules/hammerjs/hammer.js',
+ {pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams
- './node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js',
- './node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
- {pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
@@ -27,7 +25,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false}
],
- webpack: webpackConfig,
+ webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: {
stats: 'errors-only'
diff --git a/ng2-components/ng2-activiti-processlist/package-lock.json b/ng2-components/ng2-activiti-processlist/package-lock.json
new file mode 100644
index 0000000000..187587c938
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/package-lock.json
@@ -0,0 +1,7202 @@
+{
+ "name": "ng2-activiti-processlist",
+ "version": "1.5.0",
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@angular/animations": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.0.3.tgz",
+ "integrity": "sha1-Qrt9DHZxN6rKd30nJE9MBC0CZBs="
+ },
+ "@angular/common": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.0.3.tgz",
+ "integrity": "sha1-F0coletCXygSs6eRYrW0lNJQals="
+ },
+ "@angular/compiler": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.0.3.tgz",
+ "integrity": "sha1-izytM4rFOTKOEKakv6oFcJT3vIk="
+ },
+ "@angular/compiler-cli": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.0.3.tgz",
+ "integrity": "sha1-aR8oC8TWYRqI1lVfQ+VwMqDTQwA="
+ },
+ "@angular/core": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.0.3.tgz",
+ "integrity": "sha1-Yb4h22qld44zFZ/9OMu+uvFhINk="
+ },
+ "@angular/forms": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.0.3.tgz",
+ "integrity": "sha1-+45uCu3ngr9Ycwox0RebMjJxgW4="
+ },
+ "@angular/http": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.0.3.tgz",
+ "integrity": "sha1-77twGiFex3BMAhZ2SEuF7Uc5L0s="
+ },
+ "@angular/material": {
+ "version": "2.0.0-beta.6",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.6.tgz",
+ "integrity": "sha1-g7/fAPVAqMfbkAoee47Sz/Sd+CE="
+ },
+ "@angular/platform-browser": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.0.3.tgz",
+ "integrity": "sha1-FwsY1a9O4Cskiqah8eBYSshBaB4="
+ },
+ "@angular/platform-browser-dynamic": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.0.3.tgz",
+ "integrity": "sha1-X6O5j3JZmbYx19cXTm5D3L9qqaw="
+ },
+ "@angular/router": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.0.3.tgz",
+ "integrity": "sha1-JBhOmxJmxK0BeyvoFXNGSx5MXfo="
+ },
+ "@angular/tsc-wrapped": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.0.3.tgz",
+ "integrity": "sha1-pf6mqH35w0j6pVd8NpjIo2MIJ4E="
+ },
+ "@ngx-translate/core": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-7.0.0.tgz",
+ "integrity": "sha1-W29jvUBCFk1EzYX2hwOvluk5Ln0="
+ },
+ "@types/hammerjs": {
+ "version": "2.0.34",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.34.tgz",
+ "integrity": "sha1-nLrE9BywOUNhQXheG+ULOrEKBKk=",
+ "dev": true
+ },
+ "@types/jasmine": {
+ "version": "2.5.35",
+ "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.35.tgz",
+ "integrity": "sha1-VWZAbchBfTgNbC+VYuw8cewo73g=",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "6.0.45",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.45.tgz",
+ "integrity": "sha1-xIQqnWU9dngx5P9JW2AIzA1XmWY=",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
+ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
+ "dev": true
+ },
+ "acorn": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz",
+ "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
+ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+ "dev": true,
+ "dependencies": {
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ }
+ }
+ },
+ "after": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+ "dev": true
+ },
+ "ajv": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz",
+ "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+ "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
+ "dev": true
+ },
+ "alfresco-js-api": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/alfresco-js-api/-/alfresco-js-api-1.5.0.tgz",
+ "integrity": "sha1-JOiVIFzlfsclgVn1hltG7XeIcOU="
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+ "dev": true
+ },
+ "ammo": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz",
+ "integrity": "sha1-v4CqshFpjqePY+9efxE91dnokX8=",
+ "dev": true,
+ "dependencies": {
+ "boom": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz",
+ "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ }
+ }
+ },
+ "angular2-template-loader": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz",
+ "integrity": "sha1-wNROkP/w+sleiyPwQ6zaf9HFHXw=",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
+ "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=",
+ "dev": true
+ }
+ }
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz",
+ "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=",
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz",
+ "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==",
+ "dev": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz",
+ "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=",
+ "dev": true
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
+ "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arraybuffer.slice": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+ "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz",
+ "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=",
+ "dev": true
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+ "dev": true
+ },
+ "ast-types": {
+ "version": "0.9.6",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz",
+ "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=",
+ "dev": true
+ },
+ "async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz",
+ "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "autoprefixer": {
+ "version": "6.7.7",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
+ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
+ "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
+ "dev": true
+ },
+ "babel-core": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz",
+ "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=",
+ "dev": true
+ },
+ "babel-generator": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz",
+ "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=",
+ "dev": true,
+ "dependencies": {
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ }
+ }
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+ "dev": true
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true
+ },
+ "babel-plugin-transform-cjs-system-wrapper": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.3.0.tgz",
+ "integrity": "sha1-9XWfKb7NNW+qt69SyZzejnutCyE=",
+ "dev": true
+ },
+ "babel-plugin-transform-es2015-modules-systemjs": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
+ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
+ "dev": true
+ },
+ "babel-plugin-transform-global-system-wrapper": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.0.1.tgz",
+ "integrity": "sha1-r7RpzsDgRom5/n6LH9KA/JSm2PI=",
+ "dev": true
+ },
+ "babel-plugin-transform-system-register": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz",
+ "integrity": "sha1-nf9AOQwnY6xRjwsq18XqT2WlviU=",
+ "dev": true
+ },
+ "babel-register": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz",
+ "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=",
+ "dev": true
+ },
+ "babel-runtime": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz",
+ "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=",
+ "dev": true
+ },
+ "babel-template": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz",
+ "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=",
+ "dev": true
+ },
+ "babel-traverse": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz",
+ "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=",
+ "dev": true
+ },
+ "babel-types": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz",
+ "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=",
+ "dev": true
+ },
+ "babylon": {
+ "version": "6.17.4",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz",
+ "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==",
+ "dev": true
+ },
+ "backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base64-arraybuffer": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+ "dev": true
+ },
+ "base64-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
+ "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
+ "dev": true
+ },
+ "base64id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
+ "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true
+ },
+ "beeper": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
+ "dev": true
+ },
+ "better-assert": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+ "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "dev": true
+ },
+ "big.js": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz",
+ "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz",
+ "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=",
+ "dev": true
+ },
+ "blob": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+ "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+ "dev": true
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
+ "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.7",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz",
+ "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==",
+ "dev": true
+ },
+ "body": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
+ "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
+ "dev": true,
+ "dependencies": {
+ "bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
+ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
+ "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "body-parser": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz",
+ "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "dev": true
+ },
+ "boxen": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.1.0.tgz",
+ "integrity": "sha1-sbad1SIwXoB6md7ud329blFnsQI=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
+ "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=",
+ "dev": true
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz",
+ "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=",
+ "dev": true
+ },
+ "browserify-cipher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
+ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
+ "dev": true
+ },
+ "browserify-des": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
+ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
+ "dev": true
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true
+ },
+ "browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+ "dev": true
+ },
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true
+ },
+ "buffer-indexof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.0.tgz",
+ "integrity": "sha1-9U9kfE9OJSKLqmVqLlfkPV8nCYI=",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
+ "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
+ "dev": true
+ },
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
+ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+ "dev": true
+ },
+ "caniuse-db": {
+ "version": "1.0.30000693",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000693.tgz",
+ "integrity": "sha1-hRDnqasErcyiOl3O+jTfnSjBziA=",
+ "dev": true
+ },
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
+ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true
+ }
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz",
+ "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=",
+ "dev": true
+ },
+ "clap": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz",
+ "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=",
+ "dev": true
+ },
+ "clean-css": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.4.tgz",
+ "integrity": "sha1-7siBHbJ0V+AHjYypIfqBty+oK/Q=",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
+ "clone": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
+ "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
+ "dev": true
+ },
+ "clone-deep": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz",
+ "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "coa": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz",
+ "integrity": "sha1-G1Sl4dz3fJkEVdTe6pjFZEFtyJM=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "color": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
+ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
+ "dev": true
+ },
+ "color-name": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz",
+ "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=",
+ "dev": true
+ },
+ "color-string": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+ "dev": true
+ },
+ "colormin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
+ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk="
+ },
+ "commander": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+ "dev": true
+ },
+ "component-bind": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ },
+ "component-inherit": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz",
+ "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=",
+ "dev": true
+ },
+ "compression": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz",
+ "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=",
+ "dev": true,
+ "dependencies": {
+ "bytes": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz",
+ "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "configstore": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.0.tgz",
+ "integrity": "sha1-Rd+QcHPibfoc9LLVL1tgVF6qEdE=",
+ "dev": true
+ },
+ "connect": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz",
+ "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true
+ }
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz",
+ "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "dev": true
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
+ "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=",
+ "dev": true
+ },
+ "continuable-cache": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
+ "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+ "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "dev": true
+ },
+ "cookiejar": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz",
+ "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o="
+ },
+ "copy-webpack-plugin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz",
+ "integrity": "sha1-lyjjg7lDFgUNDHRjlY8rhcCqggA=",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "core-js": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+ "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4="
+ },
+ "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="
+ },
+ "create-ecdh": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
+ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
+ "dev": true
+ },
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+ "dev": true
+ },
+ "create-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
+ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
+ "dev": true
+ },
+ "create-hmac": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
+ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true
+ }
+ }
+ },
+ "cross-spawn-async": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true
+ }
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "dev": true
+ },
+ "crypto-browserify": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz",
+ "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=",
+ "dev": true
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+ "dev": true
+ },
+ "css-loader": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.23.1.tgz",
+ "integrity": "sha1-n6I/K1wJZSNZEK1ezvO4o2OQ/lA=",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true
+ },
+ "css-selector-tokenizer": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz",
+ "integrity": "sha1-E5uv00o1/QwUKEhwSeBpnm9qLCE=",
+ "dev": true
+ },
+ "css-to-string-loader": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/css-to-string-loader/-/css-to-string-loader-0.1.3.tgz",
+ "integrity": "sha1-yTcXXy7Hg5aa7+FKT7oFX3tPlWI=",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+ "dev": true
+ },
+ "cssesc": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
+ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
+ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
+ "dev": true
+ },
+ "csso": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
+ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true
+ },
+ "custom-event": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+ "dev": true
+ },
+ "d": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8="
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "data-uri-to-buffer": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz",
+ "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=",
+ "dev": true
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw="
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "dev": true,
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
+ "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=",
+ "dev": true
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true
+ },
+ "detect-node": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
+ "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
+ "dev": true
+ },
+ "di": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+ "dev": true
+ },
+ "dialog-polyfill": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.4.7.tgz",
+ "integrity": "sha1-6ZldUZ8d80lZcZMZjBhOqUAv2/U="
+ },
+ "diff": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz",
+ "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
+ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
+ "dev": true
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.1.1.tgz",
+ "integrity": "sha1-I2nUUDivBF84mOb6VoYq7T9AKWw=",
+ "dev": true
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "dev": true
+ },
+ "dom-converter": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
+ "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
+ "dev": true,
+ "dependencies": {
+ "utila": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
+ "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
+ "dev": true
+ }
+ }
+ },
+ "dom-serialize": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
+ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
+ "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
+ "dev": true
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true
+ },
+ "dot-prop": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz",
+ "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=",
+ "dev": true
+ },
+ "draggabilly": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/draggabilly/-/draggabilly-2.1.1.tgz",
+ "integrity": "sha1-OjGh+nPkzHHHWkv+qaz7La3gFyI="
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "dev": true,
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz",
+ "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=",
+ "dev": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz",
+ "integrity": "sha1-ZK8Pnv08PGrNV9cfg7Scp+6cS0M=",
+ "dev": true
+ },
+ "element.scrollintoviewifneeded-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/element.scrollintoviewifneeded-polyfill/-/element.scrollintoviewifneeded-polyfill-1.0.1.tgz",
+ "integrity": "sha1-iaAjSB6B59/XIQXEyRcOg7NXRU8="
+ },
+ "elliptic": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz",
+ "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=",
+ "dev": true,
+ "dependencies": {
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "dev": true
+ }
+ }
+ },
+ "engine.io": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz",
+ "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+ "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ }
+ }
+ },
+ "engine.io-client": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz",
+ "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+ "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ },
+ "ws": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
+ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
+ "dev": true
+ }
+ }
+ },
+ "engine.io-parser": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
+ "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+ "dev": true
+ },
+ "enhanced-resolve": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz",
+ "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=",
+ "dev": true
+ },
+ "ent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+ "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+ "dev": true
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
+ "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
+ "dev": true
+ },
+ "error": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
+ "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true
+ },
+ "es5-ext": {
+ "version": "0.10.23",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz",
+ "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg="
+ },
+ "es6-iterator": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz",
+ "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI="
+ },
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc="
+ },
+ "es6-template-strings": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es6-template-strings/-/es6-template-strings-2.0.1.tgz",
+ "integrity": "sha1-sWbGpiVi9Hi7d3X2ypYQOlmbSyw=",
+ "dev": true
+ },
+ "es6-templates": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz",
+ "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+ "dev": true,
+ "dependencies": {
+ "source-map": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "esniff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz",
+ "integrity": "sha1-xmhJIp+RRk3t4uDUAgHtar9l8qw=",
+ "dev": true
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
+ "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=",
+ "dev": true
+ },
+ "ev-emitter": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.0.3.tgz",
+ "integrity": "sha1-7l73S27SjZEbMt3L/JeGf1gJN7w="
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk="
+ },
+ "eventemitter3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+ "dev": true
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz",
+ "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz",
+ "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=",
+ "dev": true
+ },
+ "expand-braces": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
+ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
+ "dev": true,
+ "dependencies": {
+ "braces": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
+ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
+ "dev": true
+ },
+ "expand-range": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
+ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
+ "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
+ "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
+ "dev": true
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true
+ },
+ "express": {
+ "version": "4.15.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz",
+ "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=",
+ "dev": true,
+ "dependencies": {
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ }
+ }
+ },
+ "extract-text-webpack-plugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz",
+ "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=",
+ "dev": true
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
+ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+ "dev": true
+ },
+ "fancy-log": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
+ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz",
+ "integrity": "sha1-XG9FmaumszPuM0Li7ZeGcvEAH40=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fast-safe-stringify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.1.0.tgz",
+ "integrity": "sha1-TKmMUC4Aw4fKGw5xhOlVcYv1Eug=",
+ "dev": true
+ },
+ "fastparse": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
+ "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "dev": true
+ },
+ "file-loader": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.1.tgz",
+ "integrity": "sha1-azKO4SNKcp5OR9Njdd1tNcDh24Q=",
+ "dev": true
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true
+ },
+ "finalhandler": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
+ "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true
+ }
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true
+ }
+ }
+ },
+ "flatten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "fork-ts-checker-webpack-plugin": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.2.3.tgz",
+ "integrity": "sha1-dEk9mqC3yNWiBvlz5cCe7sfnL44=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.2.0.tgz",
+ "integrity": "sha1-ml47kpX5gLJiPPZPojixTOvKcHs="
+ },
+ "formidable": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz",
+ "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak="
+ },
+ "forwarded": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
+ "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=",
+ "dev": true
+ },
+ "fresh": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
+ "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=",
+ "dev": true
+ },
+ "fs-access": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
+ "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz",
+ "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "bundled": true,
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "dev": true
+ },
+ "boom": {
+ "version": "2.10.1",
+ "bundled": true,
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.7",
+ "bundled": true,
+ "dev": true
+ },
+ "buffer-shims": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "extend": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "bundled": true,
+ "dev": true
+ },
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true,
+ "dev": true
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "bundled": true,
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jodid25519": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.27.0",
+ "bundled": true,
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "bundled": true,
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "node-pre-gyp": {
+ "version": "0.6.36",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npmlog": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true,
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "qs": {
+ "version": "6.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.2.9",
+ "bundled": true,
+ "dev": true
+ },
+ "request": {
+ "version": "2.81.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "bundled": true,
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sshpk": {
+ "version": "1.13.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "tar-pack": {
+ "version": "3.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "dev": true
+ },
+ "function-bind": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
+ "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=",
+ "dev": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "dev": true
+ },
+ "gaze": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
+ "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
+ "dev": true
+ },
+ "get-size": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.2.tgz",
+ "integrity": "sha1-VV6pirhzLgwCHp4j4iGa3L45jpg="
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true
+ }
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ }
+ }
+ },
+ "globule": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
+ "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ }
+ }
+ },
+ "glogg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
+ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
+ "dev": true
+ },
+ "good": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/good/-/good-7.1.0.tgz",
+ "integrity": "sha1-ngWtJMWKEbcc9QgXAPN3jbCyLBw=",
+ "dev": true,
+ "dependencies": {
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ }
+ }
+ },
+ "good-console": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/good-console/-/good-console-6.4.0.tgz",
+ "integrity": "sha1-cpTJ2QxMnwWaCC4YBiVJWWbSulk=",
+ "dev": true,
+ "dependencies": {
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ },
+ "joi": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-8.1.1.tgz",
+ "integrity": "sha1-LYtSpdkJ0hftRySFd+7+ixeY9I8=",
+ "dev": true
+ }
+ }
+ },
+ "good-squeeze": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/good-squeeze/-/good-squeeze-5.0.1.tgz",
+ "integrity": "sha1-K/U8KKd8BysYpkaR9uhizWjqCJE=",
+ "dev": true,
+ "dependencies": {
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ }
+ }
+ },
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+ "dev": true
+ },
+ "gulp-util": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz",
+ "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=",
+ "dev": true,
+ "dependencies": {
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "dev": true
+ },
+ "hammerjs": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
+ "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
+ },
+ "handle-thing": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
+ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz",
+ "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "hapi": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/hapi/-/hapi-16.1.0.tgz",
+ "integrity": "sha1-QZ3YY0dYiCHrWgpfSTvOAZgC0zs=",
+ "dev": true,
+ "dependencies": {
+ "accept": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.3.tgz",
+ "integrity": "sha1-qw9b2kxEm76SaupgezUiVi9az4Y=",
+ "dev": true
+ },
+ "ammo": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.3.tgz",
+ "integrity": "sha1-kUu89lsEPtD1ioqdAZbiUOxR5qc=",
+ "dev": true
+ },
+ "b64": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz",
+ "integrity": "sha1-ep1gRmrfe43hFMvfZRpf38yQiU0=",
+ "dev": true
+ },
+ "boom": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.2.0.tgz",
+ "integrity": "sha1-wadBdLEfu6Ij9hYtT9iFGhuCpTY=",
+ "dev": true
+ },
+ "call": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/call/-/call-4.0.0.tgz",
+ "integrity": "sha1-zSk4GpgEahMtsm4mKOcL2DIaHd8=",
+ "dev": true
+ },
+ "catbox": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.3.tgz",
+ "integrity": "sha1-mBft7FqSF0MoKt38nEWs5ShH7rs=",
+ "dev": true
+ },
+ "catbox-memory": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz",
+ "integrity": "sha1-Qz4lWQLK9UIz0ShkKcj03xToItU=",
+ "dev": true
+ },
+ "content": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/content/-/content-3.0.3.tgz",
+ "integrity": "sha1-AA+KATcblcZq/pm+k5D6bLkaqHo=",
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.1.tgz",
+ "integrity": "sha1-hqkgP3NnoOkyS8dVX/D89fgZee4=",
+ "dev": true
+ },
+ "heavy": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.3.tgz",
+ "integrity": "sha1-l2u6EYsBGxX+kEqk8pKhaL/GIy8=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.0.tgz",
+ "integrity": "sha1-SkVXRg9phC7UY6oAYozCbSaDr6c=",
+ "dev": true
+ },
+ "iron": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.4.tgz",
+ "integrity": "sha1-wfjMTJFFQZSriSDZJHuoguUoBho=",
+ "dev": true
+ },
+ "isemail": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz",
+ "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=",
+ "dev": true
+ },
+ "items": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz",
+ "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=",
+ "dev": true
+ },
+ "joi": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-10.1.0.tgz",
+ "integrity": "sha1-jDqHV3wVn/66EppQVPMjj579cVk=",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.25.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.25.0.tgz",
+ "integrity": "sha1-wY29fHOl2/b0SgJNwNFloeexw5I=",
+ "dev": true
+ },
+ "mimos": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz",
+ "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=",
+ "dev": true
+ },
+ "nigel": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz",
+ "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=",
+ "dev": true
+ },
+ "pez": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.4.tgz",
+ "integrity": "sha1-c/gi+mLVmdZcRgb0kNVNNFGRvHw=",
+ "dev": true
+ },
+ "podium": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/podium/-/podium-1.2.5.tgz",
+ "integrity": "sha1-h8VmwvA2W88KHsdgLE0BlIzdKtU=",
+ "dev": true
+ },
+ "shot": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/shot/-/shot-3.4.0.tgz",
+ "integrity": "sha1-5xJe5yV1rlIYNJ6TNjaAjXkNS5I=",
+ "dev": true
+ },
+ "statehood": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/statehood/-/statehood-5.0.1.tgz",
+ "integrity": "sha1-/BPJezd1HBjnBRPSuX6Jasi3MAU=",
+ "dev": true
+ },
+ "subtext": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.3.0.tgz",
+ "integrity": "sha1-36yQSS7DVmn9bgDG5dk4sG18z7s=",
+ "dev": true
+ },
+ "topo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
+ "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
+ "dev": true
+ },
+ "vise": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz",
+ "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=",
+ "dev": true
+ },
+ "wreck": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/wreck/-/wreck-10.0.0.tgz",
+ "integrity": "sha1-mKuIL4XhalJjMlB/EB9aeEEWIng=",
+ "dev": true
+ }
+ }
+ },
+ "happypack": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/happypack/-/happypack-3.0.0.tgz",
+ "integrity": "sha1-PdpueRE+eqZxlWzu6neliX64r8c=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.0.tgz",
+ "integrity": "sha1-J5ZkJyNXOFlWVjP8YnRES+4vjOM=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.16.tgz",
+ "integrity": "sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=",
+ "dev": true
+ }
+ }
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+ "dev": true,
+ "dependencies": {
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "dev": true
+ }
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true
+ },
+ "has-binary": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
+ "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
+ "dev": true,
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ }
+ }
+ },
+ "has-cors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "has-gulplog": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "dev": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true
+ },
+ "hash-base": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
+ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
+ "dev": true
+ },
+ "hash.js": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz",
+ "integrity": "sha512-I2TYCUjYQMmqmRMCp6jKMC5bvdXxGIZ/heITRR/0F1u0OP920ImEj/cXt3WgcTKBnNYGn7enxUzdai3db829JA==",
+ "dev": true
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "dev": true
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "dev": true
+ },
+ "home-or-tmp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz",
+ "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=",
+ "dev": true
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "dev": true
+ },
+ "html-comment-regex": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
+ "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
+ "dev": true
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+ "dev": true
+ },
+ "html-loader": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz",
+ "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=",
+ "dev": true
+ },
+ "html-minifier": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz",
+ "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=",
+ "dev": true
+ },
+ "html-webpack-plugin": {
+ "version": "2.28.0",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz",
+ "integrity": "sha1-LnhjtX5f1I/iYzA+L/yTTDBk0Ak=",
+ "dev": true,
+ "dependencies": {
+ "bluebird": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
+ "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "htmlparser2": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
+ "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
+ "dev": true,
+ "dependencies": {
+ "domutils": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
+ "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
+ "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "dev": true
+ },
+ "http-proxy-middleware": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz",
+ "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "dev": true
+ },
+ "https-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
+ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
+ "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=",
+ "dev": true
+ },
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
+ "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
+ "dev": true
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "in-publish": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
+ "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inert": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/inert/-/inert-4.1.0.tgz",
+ "integrity": "sha1-5o35+wuH2K1ojjQo2q811iO2T10=",
+ "dev": true,
+ "dependencies": {
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
+ "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=",
+ "dev": true
+ }
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ini": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
+ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+ "dev": true
+ },
+ "internal-ip": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz",
+ "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz",
+ "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=",
+ "dev": true
+ },
+ "intl": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.4.tgz",
+ "integrity": "sha1-tN6JO1AQTSBVlnfe7fQVoso0nR4="
+ },
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz",
+ "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
+ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "dev": true
+ },
+ "is-path-inside": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
+ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.3.tgz",
+ "integrity": "sha1-wVvz5LZrYtcu+vKSWEhmPsvGGbY=",
+ "dev": true,
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz",
+ "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=",
+ "dev": true
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "dev": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-svg": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
+ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isbinaryfile": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
+ "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
+ "dev": true
+ },
+ "isemail": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz",
+ "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "istanbul": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true
+ }
+ }
+ },
+ "istanbul-instrumenter-loader": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-0.2.0.tgz",
+ "integrity": "sha1-ZD5OXk6PlGaGOimpd9KDqzcsAZw=",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "items": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz",
+ "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=",
+ "dev": true
+ },
+ "jasmine-ajax": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jasmine-ajax/-/jasmine-ajax-3.3.1.tgz",
+ "integrity": "sha1-+MrZ/Unf1E8895jTb06FfRJcdcU=",
+ "dev": true
+ },
+ "jasmine-core": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.4.1.tgz",
+ "integrity": "sha1-b4OrOg8WlRcizgfSBsdz1XzIOL4=",
+ "dev": true
+ },
+ "joi": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz",
+ "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==",
+ "dev": true,
+ "dependencies": {
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ }
+ }
+ },
+ "js-base64": {
+ "version": "2.1.9",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
+ "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz",
+ "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
+ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
+ "dev": true
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "json-loader": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz",
+ "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.0.tgz",
+ "integrity": "sha1-ABbAscoe/kbUTTdUG838Gdz64Ns=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json3": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
+ "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "karma": {
+ "version": "0.13.22",
+ "resolved": "https://registry.npmjs.org/karma/-/karma-0.13.22.tgz",
+ "integrity": "sha1-B3ULG9Bj1+fnuRvNLmNU2PKqh0Q=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ }
+ }
+ },
+ "karma-chrome-launcher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-1.0.1.tgz",
+ "integrity": "sha1-vlrnxCZPmgouIuPZhL6zJa2SyMs=",
+ "dev": true
+ },
+ "karma-coverage": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz",
+ "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=",
+ "dev": true,
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ }
+ }
+ },
+ "karma-jasmine": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.0.2.tgz",
+ "integrity": "sha1-wLOrMnvyB9tg4X+ifbN8/e9djmw=",
+ "dev": true
+ },
+ "karma-jasmine-ajax": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/karma-jasmine-ajax/-/karma-jasmine-ajax-0.1.13.tgz",
+ "integrity": "sha1-eLuS2Jb+MqJaGACYxHci4dlgW/w=",
+ "dev": true
+ },
+ "karma-jasmine-html-reporter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.0.tgz",
+ "integrity": "sha1-j/K03sm+exX7RhtzHL7z5s54tzU=",
+ "dev": true,
+ "dependencies": {
+ "karma-jasmine": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-0.2.3.tgz",
+ "integrity": "sha1-xNPcETLV3cNdralVRcQs4LbpmZs=",
+ "dev": true
+ }
+ }
+ },
+ "karma-mocha-reporter": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz",
+ "integrity": "sha1-BP3aRaHZaXpzhxx0ciI8WBcBqyA=",
+ "dev": true
+ },
+ "karma-remap-istanbul": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/karma-remap-istanbul/-/karma-remap-istanbul-0.6.0.tgz",
+ "integrity": "sha1-l/O3cAZSVPm0ck8tm+SjouG69vw=",
+ "dev": true,
+ "dependencies": {
+ "remap-istanbul": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.9.5.tgz",
+ "integrity": "sha1-oYYXsfMe7Fp9vud1OCmLd1YGqqg=",
+ "dev": true
+ }
+ }
+ },
+ "karma-sourcemap-loader": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz",
+ "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=",
+ "dev": true
+ },
+ "karma-systemjs": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/karma-systemjs/-/karma-systemjs-0.16.0.tgz",
+ "integrity": "sha1-/iyB+vpkm8j9DuyMxba9dRXB8V0=",
+ "dev": true
+ },
+ "karma-webpack": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.3.tgz",
+ "integrity": "sha1-Oc6/XKJYATmyf5rmm3iBa5yC+uY=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "dev": true
+ }
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true
+ },
+ "livereload-js": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
+ "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true
+ },
+ "loader-runner": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
+ "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ },
+ "lodash._basecopy": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
+ "dev": true
+ },
+ "lodash._basetostring": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
+ "dev": true
+ },
+ "lodash._basevalues": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
+ "dev": true
+ },
+ "lodash._createcompounder": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz",
+ "integrity": "sha1-XdLLVTctbnDg4jkvsjBNZjEJEHU=",
+ "dev": true
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
+ "dev": true
+ },
+ "lodash._isiterateecall": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
+ "dev": true
+ },
+ "lodash._reescape": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
+ "dev": true
+ },
+ "lodash._reevaluate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
+ "dev": true
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz",
+ "integrity": "sha1-kyyLh/ikN3iXxnGXUzKC+Xrqwpg=",
+ "dev": true
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+ "dev": true
+ },
+ "lodash.deburr": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.2.0.tgz",
+ "integrity": "sha1-baj1QzSjZqfPTEx2742Aqhs2XtU=",
+ "dev": true
+ },
+ "lodash.endswith": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz",
+ "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=",
+ "dev": true
+ },
+ "lodash.escape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "dev": true
+ },
+ "lodash.isarguments": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
+ "dev": true
+ },
+ "lodash.isarray": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
+ "dev": true
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
+ "dev": true
+ },
+ "lodash.keys": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+ "dev": true
+ },
+ "lodash.mergewith": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz",
+ "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=",
+ "dev": true
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
+ "dev": true
+ },
+ "lodash.startswith": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz",
+ "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=",
+ "dev": true
+ },
+ "lodash.tail": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
+ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+ "dev": true
+ },
+ "lodash.templatesettings": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "lodash.words": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.2.0.tgz",
+ "integrity": "sha1-TiqGSbwIdFsXxpWxo86P7llmI7M=",
+ "dev": true
+ },
+ "log4js": {
+ "version": "0.6.38",
+ "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz",
+ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
+ "dev": true,
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "dev": true
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
+ "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
+ "dev": true
+ },
+ "macaddress": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
+ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
+ "dev": true
+ },
+ "make-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz",
+ "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=",
+ "dev": true
+ },
+ "make-error": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz",
+ "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "material-design-icons": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-2.2.3.tgz",
+ "integrity": "sha1-toFzZKeAOwUJqAAjBbf+IBsP2p8="
+ },
+ "material-design-lite": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/material-design-lite/-/material-design-lite-1.2.1.tgz",
+ "integrity": "sha1-CeXKqyV1r47iGyYwv/F1xagixmI="
+ },
+ "math-expression-evaluator": {
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
+ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
+ "dev": true
+ },
+ "md-date-time-picker": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/md-date-time-picker/-/md-date-time-picker-2.2.0.tgz",
+ "integrity": "sha1-aIdfznnbbtEiNevEZ6qTSEX04dY="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "dev": true
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true
+ }
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz",
+ "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
+ "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA="
+ },
+ "mime-db": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0="
+ },
+ "minimalistic-assert": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
+ "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mixin-object": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+ "dev": true,
+ "dependencies": {
+ "for-in": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
+ "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
+ "dev": true
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "moment": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.1.tgz",
+ "integrity": "sha1-6XnCop4iiI5g85byIgphGPhc2Uw="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "multicast-dns": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.1.1.tgz",
+ "integrity": "sha1-bn3oalcIcqsXBYrepxYLvsqBTd4=",
+ "dev": true
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "dev": true
+ },
+ "multipipe": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
+ "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=",
+ "dev": true
+ },
+ "ncname": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz",
+ "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "ng2-activiti-form": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/ng2-activiti-form/-/ng2-activiti-form-1.5.0.tgz",
+ "integrity": "sha1-9CYOfWn2L6XiBRHpI8H2HklOHNo=",
+ "dependencies": {
+ "@angular/material": {
+ "version": "2.0.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.1.tgz",
+ "integrity": "sha1-EGoLefsrSKdgagaCxOXQu+AzZKA="
+ },
+ "zone.js": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.4.tgz",
+ "integrity": "sha1-zECuWhyHlgHF67oglrXIDwxMNgI="
+ }
+ }
+ },
+ "ng2-activiti-tasklist": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/ng2-activiti-tasklist/-/ng2-activiti-tasklist-1.5.0.tgz",
+ "integrity": "sha1-dZW7XCHsJS/IotA0EqIPdG4RgXQ=",
+ "dependencies": {
+ "@angular/material": {
+ "version": "2.0.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.1.tgz",
+ "integrity": "sha1-EGoLefsrSKdgagaCxOXQu+AzZKA="
+ }
+ }
+ },
+ "ng2-alfresco-core": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/ng2-alfresco-core/-/ng2-alfresco-core-1.5.0.tgz",
+ "integrity": "sha1-HQP3z6YqCeb4ARP6EbPDjK8uAKE=",
+ "dependencies": {
+ "@angular/material": {
+ "version": "2.0.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.1.tgz",
+ "integrity": "sha1-EGoLefsrSKdgagaCxOXQu+AzZKA="
+ }
+ }
+ },
+ "ng2-alfresco-datatable": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/ng2-alfresco-datatable/-/ng2-alfresco-datatable-1.5.0.tgz",
+ "integrity": "sha1-upxHtWnihEmZZsr0vRNxuNYGuaM=",
+ "dependencies": {
+ "@angular/material": {
+ "version": "2.0.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.1.tgz",
+ "integrity": "sha1-EGoLefsrSKdgagaCxOXQu+AzZKA="
+ }
+ }
+ },
+ "ng2-translate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ng2-translate/-/ng2-translate-5.0.0.tgz",
+ "integrity": "sha1-Ctu1EOtQB6LW3tX10miIwUdgrKU="
+ },
+ "no-case": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz",
+ "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=",
+ "dev": true
+ },
+ "node-dir": {
+ "version": "0.1.17",
+ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+ "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
+ "dev": true
+ },
+ "node-forge": {
+ "version": "0.6.33",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz",
+ "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=",
+ "dev": true
+ },
+ "node-gyp": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
+ "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "node-libs-browser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz",
+ "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=",
+ "dev": true,
+ "dependencies": {
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "node-sass": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz",
+ "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz",
+ "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=",
+ "dev": true
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
+ "dev": true
+ },
+ "npmlog": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz",
+ "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==",
+ "dev": true
+ },
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "dev": true
+ },
+ "null-check": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+ "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+ "dev": true
+ },
+ "null-loader": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz",
+ "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=",
+ "dev": true
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-component": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
+ "dev": true
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true
+ },
+ "obuf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz",
+ "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "dev": true
+ },
+ "oppsy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/oppsy/-/oppsy-1.0.2.tgz",
+ "integrity": "sha1-mAFM1pZ2U6g8//pVQibckAULqtQ=",
+ "dev": true,
+ "dependencies": {
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ }
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ }
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true
+ },
+ "options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+ "dev": true
+ },
+ "original": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
+ "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
+ "dev": true,
+ "dependencies": {
+ "url-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz",
+ "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
+ "dev": true
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz",
+ "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
+ "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
+ "dev": true
+ },
+ "p-map": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz",
+ "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=",
+ "dev": true
+ },
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "dev": true,
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "package-json-merge": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-merge/-/package-json-merge-0.0.1.tgz",
+ "integrity": "sha1-U4W/ZplPS6E92XEl8zTEt74kvhE=",
+ "dev": true
+ },
+ "pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+ "dev": true
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true
+ },
+ "parse-asn1": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
+ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
+ "dev": true
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true
+ }
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true
+ },
+ "parsejson": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
+ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
+ "dev": true
+ },
+ "parseqs": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+ "dev": true
+ },
+ "parseuri": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+ "dev": true
+ },
+ "parseurl": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
+ "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz",
+ "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=",
+ "dev": true
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true
+ },
+ "portfinder": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
+ "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ }
+ }
+ },
+ "postcss": {
+ "version": "5.2.17",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz",
+ "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=",
+ "dev": true
+ },
+ "postcss-calc": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
+ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
+ "dev": true
+ },
+ "postcss-colormin": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
+ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
+ "dev": true
+ },
+ "postcss-convert-values": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
+ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
+ "dev": true
+ },
+ "postcss-discard-comments": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
+ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
+ "dev": true
+ },
+ "postcss-discard-duplicates": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
+ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
+ "dev": true
+ },
+ "postcss-discard-empty": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
+ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
+ "dev": true
+ },
+ "postcss-discard-overridden": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
+ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
+ "dev": true
+ },
+ "postcss-discard-unused": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
+ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
+ "dev": true
+ },
+ "postcss-filter-plugins": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
+ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
+ "dev": true
+ },
+ "postcss-merge-idents": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
+ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
+ "dev": true
+ },
+ "postcss-merge-longhand": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
+ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
+ "dev": true
+ },
+ "postcss-merge-rules": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
+ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
+ "dev": true
+ },
+ "postcss-message-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
+ "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
+ "dev": true
+ },
+ "postcss-minify-font-values": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
+ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
+ "dev": true
+ },
+ "postcss-minify-gradients": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
+ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
+ "dev": true
+ },
+ "postcss-minify-params": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
+ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
+ "dev": true
+ },
+ "postcss-minify-selectors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
+ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
+ "dev": true
+ },
+ "postcss-modules-extract-imports": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
+ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
+ "dev": true,
+ "dependencies": {
+ "postcss": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz",
+ "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
+ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
+ "dev": true,
+ "dependencies": {
+ "css-selector-tokenizer": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
+ "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz",
+ "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
+ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
+ "dev": true,
+ "dependencies": {
+ "css-selector-tokenizer": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
+ "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz",
+ "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-modules-values": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
+ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
+ "dev": true,
+ "dependencies": {
+ "postcss": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz",
+ "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
+ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
+ "dev": true
+ },
+ "postcss-normalize-url": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
+ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
+ "dev": true
+ },
+ "postcss-ordered-values": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
+ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
+ "dev": true
+ },
+ "postcss-reduce-idents": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
+ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
+ "dev": true
+ },
+ "postcss-reduce-initial": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
+ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
+ "dev": true
+ },
+ "postcss-reduce-transforms": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
+ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
+ "dev": true
+ },
+ "postcss-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
+ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+ "dev": true
+ },
+ "postcss-svgo": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
+ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
+ "dev": true
+ },
+ "postcss-unique-selectors": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
+ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
+ "dev": true
+ },
+ "postcss-value-parser": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
+ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
+ "dev": true
+ },
+ "postcss-zindex": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
+ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "dev": true
+ },
+ "private": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz",
+ "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+ },
+ "proxy-addr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz",
+ "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=",
+ "dev": true
+ },
+ "prr": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
+ "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
+ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
+ "dev": true
+ },
+ "pump": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz",
+ "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
+ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+ "dev": true
+ }
+ }
+ },
+ "pumpify": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz",
+ "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=",
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
+ "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+ "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "dev": true,
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true
+ }
+ }
+ },
+ "randombytes": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
+ "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
+ "dev": true
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
+ "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=",
+ "dev": true
+ },
+ "raw-loader": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
+ "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
+ "dev": true
+ },
+ "rc": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz",
+ "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz",
+ "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00="
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true
+ },
+ "recast": {
+ "version": "0.11.23",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
+ "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
+ "dev": true,
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ }
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true
+ },
+ "reduce-css-calc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
+ "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ }
+ }
+ },
+ "reduce-function-call": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
+ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ }
+ }
+ },
+ "reflect-metadata": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz",
+ "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo="
+ },
+ "regenerator-runtime": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+ "dev": true
+ },
+ "regex-cache": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
+ "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
+ "dev": true
+ },
+ "registry-auth-token": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz",
+ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=",
+ "dev": true
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
+ "remap-istanbul": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.6.4.tgz",
+ "integrity": "sha1-rFUe/xqmQVBLTzGNAwPdph47tpU=",
+ "dev": true,
+ "dependencies": {
+ "amdefine": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz",
+ "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "istanbul": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.3.tgz",
+ "integrity": "sha1-W3FO4K5JOsXvIEuZ84crzu9z1To=",
+ "dev": true
+ }
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz",
+ "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=",
+ "dev": true
+ },
+ "renderkid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz",
+ "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=",
+ "dev": true,
+ "dependencies": {
+ "utila": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
+ "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
+ "dev": true
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.81.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+ "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+ "dev": true,
+ "dependencies": {
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "dev": true
+ }
+ }
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
+ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
+ "dev": true
+ },
+ "rollup": {
+ "version": "0.36.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.36.4.tgz",
+ "integrity": "sha1-oiRJTFOGwdc9OPe7hvafXrARo9I=",
+ "dev": true
+ },
+ "rsvp": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.5.0.tgz",
+ "integrity": "sha1-pixXOkrk4d/QaX68YkLnnGgeqjQ=",
+ "dev": true
+ },
+ "run-sequence": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz",
+ "integrity": "sha1-UJWgvr6YczsBQL0I3YDsAw3azes=",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.1.0.tgz",
+ "integrity": "sha1-CqkBi39EC1BfpCvXQrZzi+VQ5yA="
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ },
+ "safe-json-parse": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
+ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=",
+ "dev": true
+ },
+ "sass-graph": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
+ "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+ "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+ "dev": true
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.5.tgz",
+ "integrity": "sha1-qEeRDzZEKqVsWYWHnVTrUZ4koyg=",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
+ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+ "dev": true
+ },
+ "script-loader": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.0.tgz",
+ "integrity": "sha1-aF3H5waeDe56kmdPDrxbD1W6pew=",
+ "dev": true
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "dev": true,
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true
+ }
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "dev": true
+ },
+ "selfsigned": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.9.1.tgz",
+ "integrity": "sha1-zdpEktcNSGVw+HxlVGAjVY4d+lo=",
+ "dev": true
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "send": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz",
+ "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
+ "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=",
+ "dev": true
+ }
+ }
+ },
+ "serve-index": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz",
+ "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=",
+ "dev": true,
+ "dependencies": {
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz",
+ "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=",
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz",
+ "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=",
+ "dev": true
+ },
+ "shallow-clone": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz",
+ "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
+ "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=",
+ "dev": true
+ },
+ "lazy-cache": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
+ "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=",
+ "dev": true
+ }
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "dev": true
+ },
+ "socket.io": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz",
+ "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+ "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
+ "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
+ "dev": true
+ }
+ }
+ },
+ "socket.io-adapter": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
+ "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+ "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ }
+ }
+ },
+ "socket.io-client": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz",
+ "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+ "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ }
+ }
+ },
+ "socket.io-parser": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
+ "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
+ "dev": true,
+ "dependencies": {
+ "component-emitter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
+ "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ }
+ }
+ },
+ "sockjs": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz",
+ "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=",
+ "dev": true,
+ "dependencies": {
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "sockjs-client": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz",
+ "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=",
+ "dev": true,
+ "dependencies": {
+ "faye-websocket": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+ "dev": true
+ }
+ }
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "dev": true
+ },
+ "source-list-map": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
+ "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI="
+ },
+ "source-map-loader": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.1.6.tgz",
+ "integrity": "sha1-wJkD2m1zueU7ftjuUkVZcFHpjpE=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "dev": true
+ }
+ }
+ },
+ "source-map-support": {
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz",
+ "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E="
+ },
+ "sparkles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "spdy": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
+ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+ "dev": true
+ },
+ "spdy-transport": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz",
+ "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=",
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ },
+ "stdout-stream": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
+ "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true
+ },
+ "stream-http": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
+ "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
+ "dev": true
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ=="
+ },
+ "string-template": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
+ "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "style-loader": {
+ "version": "0.13.2",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz",
+ "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=",
+ "dev": true
+ },
+ "superagent": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.4.1.tgz",
+ "integrity": "sha1-S9EnQSJNDs5tn3V/HDvsvn8kwRU="
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true
+ },
+ "svgo": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
+ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
+ "dev": true
+ },
+ "symbol-observable": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz",
+ "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0="
+ },
+ "systemjs": {
+ "version": "0.19.27",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.27.tgz",
+ "integrity": "sha1-8XQNVlzmQ3GsDecHKk0eVHG6e6I="
+ },
+ "systemjs-builder": {
+ "version": "0.15.36",
+ "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.15.36.tgz",
+ "integrity": "sha1-MLAjctQifPN4gPWA/mfLTtt/FCA=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
+ "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz",
+ "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=",
+ "dev": true,
+ "dependencies": {
+ "source-map": {
+ "version": "0.1.32",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
+ "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
+ "dev": true
+ }
+ }
+ },
+ "systemjs": {
+ "version": "0.19.47",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.47.tgz",
+ "integrity": "sha1-yMk5NxgPP1SBx2nNJyB2P7SjHG8=",
+ "dev": true
+ },
+ "traceur": {
+ "version": "0.0.105",
+ "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.105.tgz",
+ "integrity": "sha1-XPne6D1rd4YcPWxE1ThZrterBHk=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true
+ }
+ }
+ },
+ "uglify-js": {
+ "version": "2.7.5",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
+ "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
+ "dev": true
+ }
+ }
+ },
+ "tapable": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz",
+ "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=",
+ "dev": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "dev": true
+ },
+ "term-size": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz",
+ "integrity": "sha1-hzYLljlsq1dgljcUzaDQy+7K2co=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
+ "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "thunky": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz",
+ "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=",
+ "dev": true
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz",
+ "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=",
+ "dev": true
+ },
+ "tiny-lr": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.0.3.tgz",
+ "integrity": "sha1-OGcxFwzlISY6nTN/dp7o8R6I6wQ=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ }
+ }
+ },
+ "tmp": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
+ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+ "dev": true
+ },
+ "to-array": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+ "dev": true
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
+ "to-string-loader": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/to-string-loader/-/to-string-loader-1.1.5.tgz",
+ "integrity": "sha1-e3qheJG3u0lHp6Eb+wO1/enG5pU=",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ }
+ }
+ },
+ "topo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
+ "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
+ "dev": true,
+ "dependencies": {
+ "hoek": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz",
+ "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=",
+ "dev": true
+ }
+ }
+ },
+ "toposort": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz",
+ "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
+ "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
+ "dev": true
+ },
+ "traceur": {
+ "version": "0.0.91",
+ "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.91.tgz",
+ "integrity": "sha1-RfBt4iThDo0wBix2pVgdWmi3ZxQ=",
+ "dev": true,
+ "dependencies": {
+ "commander": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
+ "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=",
+ "dev": true
+ },
+ "glob": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
+ "integrity": "sha1-gPuwjKVA8jiszl0R0em8QedRc9M=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "dev": true
+ },
+ "semver": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz",
+ "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.1.32",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
+ "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz",
+ "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=",
+ "dev": true
+ }
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "ts-loader": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.2.0.tgz",
+ "integrity": "sha512-+NdvTzGoE2pee3U2Arg1DB6VVKxGmog7QEARiQxMh5v5ewDxXMpnfVvMt4YxJsB+XVXtaZGtaWnsCINXT3oXxw==",
+ "dev": true,
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "ts-node": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-1.7.3.tgz",
+ "integrity": "sha1-3uf4qEdRcy08Lkl8rFoC+xF9/uc=",
+ "dev": true
+ },
+ "tsconfig": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz",
+ "integrity": "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=",
+ "dev": true
+ },
+ "tsickle": {
+ "version": "0.21.6",
+ "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz",
+ "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0="
+ },
+ "tslib": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz",
+ "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw="
+ },
+ "tslint": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.1.tgz",
+ "integrity": "sha1-BTVocb7yOkNJBnNABvwYgza6gks=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true
+ }
+ }
+ },
+ "tslint-loader": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/tslint-loader/-/tslint-loader-3.5.3.tgz",
+ "integrity": "sha1-ND90Ei2U81a2iUV9P1n2SmmrYG8=",
+ "dev": true,
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "tsutils": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz",
+ "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.15",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
+ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz",
+ "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.0.19",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.19.tgz",
+ "integrity": "sha512-/MRnHKKJemMVs4iKmiUZY8S0knDRFOJI9Ein/rdn0w9hrK8ELdj+6bjWmHeBjSDPGUWxi/4960A+GAWZbzHvDA==",
+ "dev": true
+ },
+ "ultron": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+ "dev": true
+ },
+ "unidragger": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unidragger/-/unidragger-2.1.0.tgz",
+ "integrity": "sha1-5MI/X6uBiMY353bQs4EMfZieVWE="
+ },
+ "unipointer": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unipointer/-/unipointer-2.1.0.tgz",
+ "integrity": "sha1-sen6KYbBMG2XMwWHukNNKFzP438="
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "uniqid": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
+ "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
+ "dev": true
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+ "dev": true
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "dev": true
+ },
+ "update-notifier": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz",
+ "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=",
+ "dev": true
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "url-parse": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz",
+ "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=",
+ "dev": true,
+ "dependencies": {
+ "querystringify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
+ "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=",
+ "dev": true
+ }
+ }
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true
+ },
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
+ "dev": true
+ },
+ "useragent": {
+ "version": "2.1.13",
+ "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz",
+ "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
+ "dev": true
+ },
+ "v8flags": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true
+ },
+ "vary": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
+ "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=",
+ "dev": true
+ },
+ "vendors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz",
+ "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
+ "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "dev": true
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true
+ },
+ "void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+ "dev": true
+ },
+ "watchpack": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz",
+ "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=",
+ "dev": true
+ },
+ "wbuf": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz",
+ "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=",
+ "dev": true
+ },
+ "webpack": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz",
+ "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=",
+ "dev": true,
+ "dependencies": {
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true
+ },
+ "source-list-map": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz",
+ "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz",
+ "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
+ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
+ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz",
+ "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=",
+ "dev": true
+ },
+ "webpack-dev-server": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.5.0.tgz",
+ "integrity": "sha1-TTanKLA7iyr6SO0wJCiEfOooQK0=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
+ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+ "dev": true
+ },
+ "yargs-parser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
+ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+ "dev": true
+ }
+ }
+ },
+ "webpack-merge": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-2.6.1.tgz",
+ "integrity": "sha1-8dgB0sXTn4P/7J8RkkCz476ZShw=",
+ "dev": true
+ },
+ "webpack-sources": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz",
+ "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==",
+ "dev": true,
+ "dependencies": {
+ "source-list-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
+ "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
+ "dev": true
+ }
+ }
+ },
+ "websocket-driver": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
+ "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
+ "dev": true
+ },
+ "websocket-extensions": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz",
+ "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=",
+ "dev": true
+ },
+ "when": {
+ "version": "3.7.8",
+ "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
+ "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I="
+ },
+ "whet.extend": {
+ "version": "0.9.9",
+ "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
+ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "dev": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "dev": true
+ },
+ "widest-line": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
+ "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz",
+ "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==",
+ "dev": true
+ },
+ "ws": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz",
+ "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=",
+ "dev": true
+ },
+ "wsrv": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/wsrv/-/wsrv-0.1.7.tgz",
+ "integrity": "sha1-B+5KvBrrhDtTm5QXs88mpwCElhM=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz",
+ "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
+ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+ "dev": true
+ },
+ "yargs-parser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
+ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+ "dev": true
+ }
+ }
+ },
+ "wtf-8": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
+ "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+ "dev": true
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
+ },
+ "xml-char-classes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz",
+ "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=",
+ "dev": true
+ },
+ "xmlhttprequest-ssl": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
+ "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "yeast": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+ "dev": true
+ },
+ "yn": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-1.3.0.tgz",
+ "integrity": "sha1-GwgSq7jYBdSJZvjfOF3J2syaGdg=",
+ "dev": true
+ },
+ "zone.js": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.7.6.tgz",
+ "integrity": "sha1-+7w50+AmHQmG8boGMG6zrrDSIAk="
+ }
+ }
+}
diff --git a/ng2-components/ng2-activiti-processlist/package.json b/ng2-components/ng2-activiti-processlist/package.json
index 7914081163..093e329dc0 100644
--- a/ng2-components/ng2-activiti-processlist/package.json
+++ b/ng2-components/ng2-activiti-processlist/package.json
@@ -1,16 +1,17 @@
{
"name": "ng2-activiti-processlist",
"description": "Show active processes from the Activiti Process Services suite",
- "version": "1.5.0",
+ "version": "1.6.0",
"author": "Alfresco Software, Ltd.",
"scripts": {
"clean": "rimraf dist node_modules typings bundles coverage .npmrc",
+ "clean-lock": "rimraf package-lock.json",
"rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail",
- "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component",
+ "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
- "prepublish" : "npm run build"
+ "prepublishOnly": "npm run build"
},
"main": "bundles/ng2-activiti-processlist.js",
"repository": {
@@ -42,18 +43,17 @@
"@angular/platform-browser": "~4.0.0",
"@angular/platform-browser-dynamic": "~4.0.0",
"@angular/router": "~4.0.0",
-
- "@angular/material": "2.0.0-beta.1",
- "alfresco-js-api": "~1.5.0",
+ "@angular/material": "2.0.0-beta.6",
+ "alfresco-js-api": "~1.6.0",
"core-js": "2.4.1",
"hammerjs": "2.0.8",
"md-date-time-picker": "2.2.0",
"moment": "2.15.1",
- "ng2-activiti-form": "1.5.0",
- "ng2-activiti-tasklist": "1.5.0",
- "ng2-alfresco-core": "1.5.0",
- "ng2-alfresco-datatable": "1.5.0",
- "ng2-translate": "5.0.0",
+ "ng2-activiti-form": "1.6.0",
+ "ng2-activiti-tasklist": "1.6.0",
+ "ng2-alfresco-core": "1.6.0",
+ "ng2-alfresco-datatable": "1.6.0",
+ "@ngx-translate/core": "^7.0.0",
"reflect-metadata": "0.1.10",
"rxjs": "5.1.0",
"systemjs": "0.19.27",
@@ -71,6 +71,8 @@
"cssnano": "^3.8.1",
"extract-text-webpack-plugin": "^2.0.0-rc.3",
"file-loader": "0.11.1",
+ "fork-ts-checker-webpack-plugin": "^0.2.3",
+ "happypack": "3.0.0",
"html-loader": "^0.4.4",
"html-webpack-plugin": "^2.28.0",
"istanbul-instrumenter-loader": "0.2.0",
@@ -89,12 +91,14 @@
"karma-webpack": "^2.0.2",
"loader-utils": "^1.1.0",
"merge-stream": "^1.0.1",
+ "node-sass": "^4.5.3",
"null-loader": "^0.1.1",
"package-json-merge": "0.0.1",
"raw-loader": "^0.5.1",
"remap-istanbul": "^0.6.3",
- "rimraf": "^2.5.4",
+ "rimraf": "^2.6.1",
"run-sequence": "^1.2.2",
+ "sass-loader": "^6.0.5",
"script-loader": "0.7.0",
"source-map-loader": "^0.1.6",
"style-loader": "^0.13.1",
@@ -105,7 +109,7 @@
"ts-node": "^1.7.0",
"tslint": "^4.4.2",
"tslint-loader": "^3.3.0",
- "typescript": "^2.1.6",
+ "typescript": "^2.3.4",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.3.0",
"webpack-merge": "2.6.1",
diff --git a/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.model.mock.ts b/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.model.mock.ts
index 08c6d83361..531545a8a2 100644
--- a/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.model.mock.ts
+++ b/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.model.mock.ts
@@ -51,6 +51,19 @@ export let exampleProcess = new ProcessInstance({
}
});
+export let processEnded = new ProcessInstance({
+ id: '123',
+ name: 'Process 123',
+ started: '2016-11-10T03:37:30.010+0000',
+ startedBy: {
+ id: 1001,
+ firstName: 'Bob',
+ lastName: 'Jones',
+ email: 'bob@app.activiti.com'
+ },
+ ended: '2016-11-11T03:37:30.010+0000'
+});
+
export let exampleProcessNoName = new ProcessInstance({
id: '123',
name: null,
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts
index 8a63ebb574..31b70f77fa 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts
@@ -29,8 +29,14 @@ describe('ActivitiFilters', () => {
let logService: LogServiceMock;
let fakeGlobalFilter = [];
- fakeGlobalFilter.push(new FilterProcessRepresentationModel({name: 'FakeInvolvedTasks', filter: { state: 'open', assignment: 'fake-involved'}}));
- fakeGlobalFilter.push(new FilterProcessRepresentationModel({name: 'FakeMyTasks', filter: { state: 'open', assignment: 'fake-assignee'}}));
+ fakeGlobalFilter.push(new FilterProcessRepresentationModel({
+ name: 'FakeInvolvedTasks',
+ filter: { state: 'open', assignment: 'fake-involved' }
+ }));
+ fakeGlobalFilter.push(new FilterProcessRepresentationModel({
+ name: 'FakeMyTasks',
+ filter: { state: 'open', assignment: 'fake-assignee' }
+ }));
let fakeGlobalFilterPromise = new Promise(function (resolve, reject) {
resolve(fakeGlobalFilter);
@@ -71,7 +77,7 @@ describe('ActivitiFilters', () => {
it('should return the filter task list, filtered By Name', (done) => {
let fakeDeployedApplicationsPromise = new Promise(function (resolve, reject) {
- resolve({});
+ resolve({ id: 1 });
});
spyOn(activitiService, 'getDeployedApplications').and.returnValue(Observable.fromPromise(fakeDeployedApplicationsPromise));
@@ -121,7 +127,12 @@ describe('ActivitiFilters', () => {
});
it('should emit an event when a filter is selected', (done) => {
- let currentFilter = new FilterProcessRepresentationModel({filter: { state: 'open', assignment: 'fake-involved'}});
+ let currentFilter = new FilterProcessRepresentationModel({
+ filter: {
+ state: 'open',
+ assignment: 'fake-involved'
+ }
+ });
filterList.filterClick.subscribe((filter: FilterProcessRepresentationModel) => {
expect(filter).toBeDefined();
@@ -164,7 +175,10 @@ describe('ActivitiFilters', () => {
});
it('should return the current filter after one is selected', () => {
- let filter = new FilterProcessRepresentationModel({name: 'FakeMyTasks', filter: { state: 'open', assignment: 'fake-assignee'}});
+ let filter = new FilterProcessRepresentationModel({
+ name: 'FakeMyTasks',
+ filter: { state: 'open', assignment: 'fake-assignee' }
+ });
expect(filterList.currentFilter).toBeUndefined();
filterList.selectFilter(filter);
expect(filterList.getCurrentFilter()).toBe(filter);
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts
index e9d183b91a..946682fbe3 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts
@@ -18,7 +18,7 @@
import { Component, Output, EventEmitter, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';
import { Observable, Observer } from 'rxjs/Rx';
import { AlfrescoTranslationService, LogService } from 'ng2-alfresco-core';
-import { FilterProcessRepresentationModel } from './../models/filter-process.model';
+import { FilterProcessRepresentationModel, FilterParamsModel } from './../models/filter-process.model';
import { ActivitiProcessService } from './../services/activiti-process.service';
declare let componentHandler: any;
@@ -30,6 +30,9 @@ declare let componentHandler: any;
})
export class ActivitiProcessFilters implements OnInit, OnChanges {
+ @Input()
+ filterParam: FilterParamsModel;
+
@Output()
filterClick: EventEmitter = new EventEmitter();
@@ -61,7 +64,7 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
this.filter$ = new Observable(observer => this.filterObserver = observer).share();
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
}
@@ -88,7 +91,7 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
* Return the filter list filtered by appId
* @param appId - optional
*/
- getFiltersByAppId(appId?: number) {
+ getFiltersByAppId(appId?: string) {
this.activiti.getProcessFilters(appId).subscribe(
(res: FilterProcessRepresentationModel[]) => {
if (res.length === 0 && this.isFilterListEmpty()) {
@@ -99,7 +102,7 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
this.filterObserver.next(filter);
});
- this.selectFirstFilter();
+ this.selectTaskFilter(this.filterParam);
this.onSuccess.emit(resDefault);
},
(errDefault: any) => {
@@ -112,7 +115,7 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
this.filterObserver.next(filter);
});
- this.selectFirstFilter();
+ this.selectTaskFilter(this.filterParam);
this.onSuccess.emit(res);
}
},
@@ -129,8 +132,8 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
getFiltersByAppName(appName: string) {
this.activiti.getDeployedApplications(appName).subscribe(
application => {
- this.getFiltersByAppId(application.id);
- this.selectFirstFilter();
+ this.getFiltersByAppId(application.id.toString());
+ this.selectTaskFilter(this.filterParam);
},
(err) => {
this.onError.emit(err);
@@ -149,11 +152,26 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
/**
* Select the first filter of a list if present
*/
- public selectFirstFilter() {
+ public selectTaskFilter(filterParam: FilterParamsModel) {
+ if (filterParam) {
+ this.filters.filter((taskFilter: FilterProcessRepresentationModel, index) => {
+ if (filterParam.name && filterParam.name.toLowerCase() === taskFilter.name.toLowerCase() ||
+ filterParam.id === taskFilter.id || filterParam.index === index) {
+ this.currentFilter = taskFilter;
+ }
+ });
+ }
+ if (this.isCurrentFilterEmpty()) {
+ this.selectDefaultTaskFilter();
+ }
+ }
+
+ /**
+ * Select as default task filter the first in the list
+ */
+ public selectDefaultTaskFilter() {
if (!this.isFilterListEmpty()) {
this.currentFilter = this.filters[0];
- } else {
- this.currentFilter = null;
}
}
@@ -178,6 +196,10 @@ export class ActivitiProcessFilters implements OnInit, OnChanges {
*/
private resetFilter() {
this.filters = [];
- this.currentFilter = null;
+ this.currentFilter = undefined;
+ }
+
+ private isCurrentFilterEmpty(): boolean {
+ return this.currentFilter === undefined || null ? true : false;
}
}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-comments.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-comments.component.ts
index 17449f34c3..85e97405ee 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-comments.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-comments.component.ts
@@ -59,7 +59,7 @@ export class ActivitiProcessComments implements OnChanges {
private activitiProcess: ActivitiProcessService) {
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
this.comment$ = new Observable(observer => this.commentObserver = observer).share();
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-details.component.html b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-details.component.html
index 18ca467cf2..dc3535307e 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-details.component.html
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-details.component.html
@@ -1,7 +1,10 @@
{{ 'DETAILS.MESSAGES.NONE'|translate }}
{{ getProcessNameOrDescription('medium') }}
-
+
+
= new EventEmitter();
+
/**
* Constructor
* @param translate Translation service
@@ -68,7 +71,7 @@ export class ActivitiProcessInstanceDetails implements OnChanges {
private logService: LogService) {
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
}
@@ -136,4 +139,9 @@ export class ActivitiProcessInstanceDetails implements OnChanges {
this.logService.error(`ProcessListInstanceHeader: error parsing date ${value} to format ${format}`);
}
}
+
+ onShowProcessDiagram(event: any) {
+ this.showProcessDiagram.emit(event);
+ }
+
}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.html b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.html
index 864ff26f1b..cee39f13a2 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.html
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.html
@@ -15,5 +15,8 @@
{{ 'DETAILS.LABELS.ENDED' | translate }} :
+
+ {{ 'DETAILS.BUTTON.SHOW_DIAGRAM' | translate }}
+
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.spec.ts
index 08407533d8..2ee89d61ef 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.spec.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.spec.ts
@@ -20,7 +20,7 @@ import { By } from '@angular/platform-browser';
import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';
import { ActivitiProcessInstanceHeader } from './activiti-process-instance-header.component';
import { TranslationMock } from './../assets/translation.service.mock';
-import { exampleProcess } from './../assets/activiti-process.model.mock';
+import { exampleProcess, processEnded } from './../assets/activiti-process.model.mock';
import { ProcessInstance } from './../models/process-instance.model';
import { ActivitiProcessComments } from './activiti-process-comments.component';
import { ActivitiProcessService } from './../services/activiti-process.service';
@@ -30,6 +30,7 @@ describe('ActivitiProcessInstanceHeader', () => {
let componentHandler: any;
let component: ActivitiProcessInstanceHeader;
let fixture: ComponentFixture;
+ let element: HTMLElement;
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -51,6 +52,7 @@ describe('ActivitiProcessInstanceHeader', () => {
fixture = TestBed.createComponent(ActivitiProcessInstanceHeader);
component = fixture.componentInstance;
+ element = fixture.nativeElement;
component.processInstance = new ProcessInstance(exampleProcess);
@@ -98,4 +100,34 @@ describe('ActivitiProcessInstanceHeader', () => {
expect(formValueEl.nativeElement.innerText).toBe('Nov 10, 2016, 3:37:30 AM');
});
+ it('should render the button show diagram as default', () => {
+ fixture.detectChanges();
+ let formValueEl = fixture.debugElement.query(By.css('[data-automation-id="header-show-diagram"]'));
+ expect(formValueEl).not.toBeNull();
+ });
+
+ it('should render the button show diagram enabled as default', () => {
+ fixture.detectChanges();
+ let showButton: HTMLButtonElement = element.querySelector('#show-diagram-button');
+ expect(showButton).toBeDefined();
+ expect(showButton.disabled).toBeFalsy();
+ });
+
+ it('should render the button show diagram disabled', () => {
+ component.processInstance = new ProcessInstance(processEnded);
+ fixture.detectChanges();
+ fixture.whenStable().then(() => {
+ let showButton: HTMLButtonElement = element.querySelector('#show-diagram-button');
+ expect(showButton).toBeDefined();
+ expect(showButton.disabled).toBeTruthy();
+ });
+ });
+
+ it('should NOT render the button show diagram is the property showDiagram is false', () => {
+ component.showDiagram = false;
+ fixture.detectChanges();
+ let formValueEl = fixture.debugElement.query(By.css('[data-automation-id="header-show-pippo"]'));
+ expect(formValueEl).toBeNull();
+ });
+
});
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.ts
index d1877a47ec..8f7ce0b23c 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-header.component.ts
@@ -29,17 +29,23 @@ declare let componentHandler: any;
})
export class ActivitiProcessInstanceHeader {
+ @Input()
+ showDiagram: boolean = true;
+
@Input()
processInstance: ProcessInstance;
@Output()
onError: EventEmitter = new EventEmitter();
+ @Output()
+ showProcessDiagram: EventEmitter = new EventEmitter();
+
constructor(private translate: AlfrescoTranslationService,
private logService: LogService) {
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
}
@@ -64,4 +70,16 @@ export class ActivitiProcessInstanceHeader {
isRunning(): boolean {
return this.processInstance && !this.processInstance.ended;
}
+
+ isDiagramDisabled(): boolean {
+ return !this.isRunning() ? true : undefined;
+ }
+
+ showDiagramEvent() {
+ this.showProcessDiagram.emit({value: this.processInstance.id});
+ }
+
+ isShowDiagram(): boolean {
+ return this.showDiagram;
+ }
}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts
index c5e9d12de6..adfa62a7d0 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts
@@ -70,7 +70,7 @@ export class ActivitiProcessInstanceTasks implements OnInit, OnChanges {
private activitiProcess: ActivitiProcessService,
private logService: LogService) {
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
this.task$ = new Observable(observer => this.taskObserver = observer).share();
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-variables.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-variables.component.ts
index ed8f578e20..dad7269fbf 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-variables.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-variables.component.ts
@@ -70,7 +70,7 @@ export class ActivitiProcessInstanceVariables implements OnInit, OnChanges {
private activitiProcess: ActivitiProcessService) {
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts
index fbc0ab7704..7ce260bc08 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts
@@ -71,7 +71,7 @@ export class ActivitiProcessInstanceListComponent implements OnChanges, AfterCon
constructor(private processService: ActivitiProcessService,
private translate: AlfrescoTranslationService) {
if (translate !== null) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts
index ffd43c1e3a..3121e72ffb 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts
@@ -50,7 +50,7 @@ describe('ActivitiStartProcessInstance', () => {
ActivitiStartProcessInstance
],
providers: [
- { provide: AlfrescoTranslationService, useClass: TranslationMock },
+ {provide: AlfrescoTranslationService, useClass: TranslationMock},
ActivitiProcessService,
FormService
]
@@ -80,7 +80,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should call service to fetch process definitions', () => {
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
expect(getDefinitionsSpy).toHaveBeenCalled();
@@ -88,7 +88,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should call service to fetch process definitions with appId when provided', () => {
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
expect(getDefinitionsSpy).toHaveBeenCalledWith('123');
@@ -96,7 +96,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should display the correct number of processes in the select list', () => {
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
let selectElement = debugElement.query(By.css('select'));
@@ -105,7 +105,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should display the correct process def details', async(() => {
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
fixture.whenStable().then(() => {
@@ -118,7 +118,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should indicate an error to the user if process defs cannot be loaded', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.throw({}));
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
fixture.whenStable().then(() => {
@@ -131,7 +131,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should show no process available message when no process definition is loaded', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of([]));
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
fixture.whenStable().then(() => {
@@ -158,12 +158,12 @@ describe('ActivitiStartProcessInstance', () => {
}));
it('should reload processes when appId input changed', () => {
- component.ngOnChanges({ appId: change });
+ component.ngOnChanges({appId: change});
expect(getDefinitionsSpy).toHaveBeenCalledWith('456');
});
it('should reload processes when appId input changed to null', () => {
- component.ngOnChanges({ appId: nullChange });
+ component.ngOnChanges({appId: nullChange});
expect(getDefinitionsSpy).toHaveBeenCalledWith(null);
});
@@ -179,7 +179,7 @@ describe('ActivitiStartProcessInstance', () => {
beforeEach(() => {
component.name = 'My new process';
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
});
it('should call service to start process if required fields provided', async(() => {
@@ -207,11 +207,11 @@ describe('ActivitiStartProcessInstance', () => {
}));
it('should call service to start process with the variables setted', async(() => {
- let inputProcessVariable = [];
+ let inputProcessVariable: RestVariable[] = [];
- let variable: any = {};
+ let variable: RestVariable = {};
variable.name = 'nodeId';
- variable.value ='id';
+ variable.value = 'id';
inputProcessVariable.push(variable);
@@ -234,7 +234,7 @@ describe('ActivitiStartProcessInstance', () => {
it('should throw error event when process cannot be started', async(() => {
let errorSpy = spyOn(component.error, 'error');
- let error = { message: 'My error' };
+ let error = {message: 'My error'};
startProcessSpy = startProcessSpy.and.returnValue(Observable.throw(error));
component.onProcessDefChange('my:process1');
component.startProcess();
@@ -266,7 +266,7 @@ describe('ActivitiStartProcessInstance', () => {
beforeEach(async(() => {
component.name = 'My new process';
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
fixture.detectChanges();
component.onProcessDefChange('my:process1');
fixture.whenStable();
@@ -298,7 +298,7 @@ describe('ActivitiStartProcessInstance', () => {
beforeEach(() => {
getDefinitionsSpy.and.returnValue(Observable.of(fakeProcessDefWithForm));
let change = new SimpleChange(null, '123', true);
- component.ngOnChanges({ 'appId': change });
+ component.ngOnChanges({'appId': change});
component.onProcessDefChange('my:process1');
fixture.detectChanges();
fixture.whenStable();
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts
index b9a051ce6e..ca729cb39e 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts
@@ -37,7 +37,7 @@ export class ActivitiStartProcessInstance implements OnChanges {
appId: string;
@Input()
- variables: RestVariable;
+ variables: RestVariable[];
@Output()
start: EventEmitter = new EventEmitter();
@@ -60,7 +60,7 @@ export class ActivitiStartProcessInstance implements OnChanges {
private activitiProcess: ActivitiProcessService) {
if (translate) {
- translate.addTranslationFolder('ng2-activiti-processlist', 'node_modules/ng2-activiti-processlist/src');
+ translate.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
}
}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.css b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.css
new file mode 100644
index 0000000000..7371ee4215
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.css
@@ -0,0 +1,19 @@
+.upload-attachment-container {
+ border: 1px solid rgb(224, 224, 224);
+ background: #fff;
+ text-align: left;
+ border-top: none;
+ padding: 10px;
+ text-align: center;
+}
+
+.drag-area {
+ border: 1px solid #eee;
+ padding: 100px 10px;
+ margin-bottom: 10px;
+}
+
+.upload-attachment-container button {
+ color: rgb(253, 145, 0);
+ opacity: 0.64;
+}
\ No newline at end of file
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.html b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.html
new file mode 100644
index 0000000000..e9ce0c521d
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.html
@@ -0,0 +1,17 @@
+
+
+ {{ 'DETAILS.BUTTON.DRAG-ATTACHMENT' | translate }}
+
+
+ {{ 'DETAILS.BUTTON.UPLOAD-ATTACHMENT' | translate }}
+
+
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.spec.ts
new file mode 100644
index 0000000000..36b1241ac6
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.spec.ts
@@ -0,0 +1,160 @@
+/*!
+ * @license
+ * Copyright 2016 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.
+ */
+
+import { SimpleChange } from '@angular/core';
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
+import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';
+import { ActivitiContentService } from 'ng2-activiti-form';
+import { ActivitiCreateProcessAttachmentComponent } from './adf-create-process-attachment.component';
+
+declare let jasmine: any;
+
+describe('Activiti Process Create Attachment', () => {
+
+ let componentHandler: any;
+ let service: ActivitiContentService;
+ let component: ActivitiCreateProcessAttachmentComponent;
+ let fixture: ComponentFixture;
+ let element: HTMLElement;
+
+ let file = new File([new Blob()], 'Test');
+ let fileObj = { entry: null, file: file, relativeFolder: '/' };
+ let customEvent = { detail: { files: [fileObj] } };
+
+ let fakeUploadResponse = {
+ id: 9999,
+ name: 'BANANA.jpeg',
+ created: '2017-06-12T12:52:11.109Z',
+ createdBy: { id: 2, firstName: 'fake-user', lastName: 'fake-user', email: 'fake-user' },
+ relatedContent: false,
+ contentAvailable: true,
+ link: false,
+ mimeType: 'image/jpeg',
+ simpleType: 'image',
+ previewStatus: 'queued',
+ thumbnailStatus: 'queued'
+ };
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ CoreModule.forRoot()
+ ],
+ declarations: [
+ ActivitiCreateProcessAttachmentComponent
+ ],
+ providers: [
+ { provide: AlfrescoTranslationService },
+ ActivitiContentService
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ActivitiCreateProcessAttachmentComponent);
+ component = fixture.componentInstance;
+ service = fixture.debugElement.injector.get(ActivitiContentService);
+ element = fixture.nativeElement;
+
+ componentHandler = jasmine.createSpyObj('componentHandler', [
+ 'upgradeAllRegistered',
+ 'upgradeElement'
+ ]);
+ window['componentHandler'] = componentHandler;
+
+ component.processInstanceId = '9999';
+ fixture.detectChanges();
+ });
+
+ beforeEach(() => {
+ jasmine.Ajax.install();
+ });
+
+ afterEach(() => {
+ jasmine.Ajax.uninstall();
+ });
+
+ it('should update the processInstanceId when it is changed', () => {
+ component.processInstanceId = null;
+
+ let change = new SimpleChange(null, '123', true);
+ component.ngOnChanges({ 'processInstanceId': change });
+
+ expect(component.processInstanceId).toBe('123');
+ });
+
+ it('should emit content created event when the file is uploaded', async(() => {
+ component.contentCreated.subscribe((res) => {
+ expect(res).toBeDefined();
+ expect(res).not.toBeNull();
+ expect(res.id).toBe(9999);
+ });
+
+ component.onFileUpload(customEvent);
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeUploadResponse)
+ });
+ }));
+
+ it('should allow user to drag&drop files', async(() => {
+ let dragArea: HTMLElement = element.querySelector('#add_new_process_content_area');
+ expect(dragArea).toBeDefined();
+ expect(dragArea).not.toBeNull();
+
+ component.contentCreated.subscribe((res) => {
+ expect(res).toBeDefined();
+ expect(res).not.toBeNull();
+ expect(res.id).toBe(9999);
+ });
+
+ let dropEvent = new CustomEvent('upload-files', customEvent);
+ dragArea.dispatchEvent(dropEvent);
+ fixture.detectChanges();
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeUploadResponse)
+ });
+ }));
+
+ it('should allow user to upload files via button', async(() => {
+ let buttonUpload: HTMLElement = element.querySelector('#add_new_process_content_button');
+ expect(buttonUpload).toBeDefined();
+ expect(buttonUpload).not.toBeNull();
+
+ component.contentCreated.subscribe((res) => {
+ expect(res).toBeDefined();
+ expect(res).not.toBeNull();
+ expect(res.id).toBe(9999);
+ });
+
+ let dropEvent = new CustomEvent('upload-files', customEvent);
+ buttonUpload.dispatchEvent(dropEvent);
+ fixture.detectChanges();
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeUploadResponse)
+ });
+ }));
+
+});
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.ts b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.ts
new file mode 100644
index 0000000000..b0806da704
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-create-process-attachment.component.ts
@@ -0,0 +1,69 @@
+/*!
+ * @license
+ * Copyright 2016 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.
+ */
+
+import { Component, OnChanges, Input, SimpleChanges, Output, EventEmitter } from '@angular/core';
+import { AlfrescoTranslationService } from 'ng2-alfresco-core';
+import { ActivitiContentService } from 'ng2-activiti-form';
+
+@Component({
+ selector: 'adf-create-process-attachment',
+ styleUrls: ['./adf-create-process-attachment.component.css'],
+ templateUrl: './adf-create-process-attachment.component.html'
+})
+export class ActivitiCreateProcessAttachmentComponent implements OnChanges {
+
+ @Input()
+ processInstanceId: string;
+
+ @Output()
+ creationError: EventEmitter = new EventEmitter();
+
+ @Output()
+ contentCreated: EventEmitter = new EventEmitter();
+
+ constructor(private translateService: AlfrescoTranslationService,
+ private activitiContentService: ActivitiContentService) {
+
+ if (translateService) {
+ translateService.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist/src');
+ }
+ }
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (changes['processInstanceId'] && changes['processInstanceId'].currentValue) {
+ this.processInstanceId = changes['processInstanceId'].currentValue;
+ }
+ }
+
+ onFileUpload(event: any) {
+ let filesList: File[] = event.detail.files.map(obj => obj.file);
+
+ for (let fileInfoObj of filesList) {
+ let file: File = fileInfoObj;
+ let opts = {
+ isRelatedContent: true
+ };
+ this.activitiContentService.createProcessRelatedContent(this.processInstanceId, file, opts).subscribe(
+ (res) => {
+ this.contentCreated.emit(res);
+ },
+ (err) => {
+ this.creationError.emit(err);
+ });
+ }
+ }
+}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.css b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.css
new file mode 100644
index 0000000000..170e76fd6c
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.css
@@ -0,0 +1,17 @@
+alfresco-datatable >>> .column-header {
+ color: #232323;
+ font-size: 15px;
+}
+
+alfresco-datatable >>> .data-cell {
+ cursor: pointer !important;
+}
+
+.no-attachment-message {
+ border: 1px solid rgb(224, 224, 224);
+ background: #fff;
+ text-align: left;
+ border-top: none;
+ padding: 10px;
+ text-align: center;
+}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.html b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.html
new file mode 100644
index 0000000000..f9001080a7
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.html
@@ -0,0 +1,15 @@
+
+ No Attachments Found
+
+
+
+
+
+
+
+
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.spec.ts
new file mode 100644
index 0000000000..191165be6e
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.spec.ts
@@ -0,0 +1,222 @@
+/*!
+ * @license
+ * Copyright 2016 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.
+ */
+
+import { SimpleChange } from '@angular/core';
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { Observable } from 'rxjs/Rx';
+
+import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';
+import { ActivitiContentService } from 'ng2-activiti-form';
+import { DataTableModule } from 'ng2-alfresco-datatable';
+
+import { ActivitiProcessAttachmentListComponent } from './adf-process-attachment-list.component';
+import { TranslationMock } from './../assets/translation.service.mock';
+
+describe('Activiti Process Instance Attachment List', () => {
+
+ let componentHandler: any;
+ let service: ActivitiContentService;
+ let component: ActivitiProcessAttachmentListComponent;
+ let fixture: ComponentFixture;
+ let getProcessRelatedContentSpy: jasmine.Spy;
+ let deleteContentSpy: jasmine.Spy;
+ let getFileRawContentSpy: jasmine.Spy;
+ let mockAttachment: any;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ CoreModule.forRoot(),
+ DataTableModule.forRoot()
+ ],
+ declarations: [
+ ActivitiProcessAttachmentListComponent
+ ],
+ providers: [
+ { provide: AlfrescoTranslationService, useClass: TranslationMock },
+ ActivitiContentService
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+
+ fixture = TestBed.createComponent(ActivitiProcessAttachmentListComponent);
+ component = fixture.componentInstance;
+ service = fixture.debugElement.injector.get(ActivitiContentService);
+
+ mockAttachment = {
+ 'size': 2,
+ 'total': 2,
+ 'start': 0,
+ 'data': [{
+ 'id': 4001,
+ 'name': 'Invoice01.pdf',
+ 'created': '2017-05-12T12:50:05.522+0000',
+ 'createdBy': {
+ 'id': 1,
+ 'firstName': 'Apps',
+ 'lastName': 'Administrator',
+ 'email': 'admin@app.activiti.com',
+ 'company': 'Alfresco.com',
+ 'pictureId': 3003
+ },
+ 'relatedContent': true,
+ 'contentAvailable': true,
+ 'link': false,
+ 'mimeType': 'application/pdf',
+ 'simpleType': 'pdf',
+ 'previewStatus': 'created',
+ 'thumbnailStatus': 'created'
+ },
+ {
+ 'id': 4002,
+ 'name': 'Invoice02.pdf',
+ 'created': '2017-05-12T12:50:05.522+0000',
+ 'createdBy': {
+ 'id': 1,
+ 'firstName': 'Apps',
+ 'lastName': 'Administrator',
+ 'email': 'admin@app.activiti.com',
+ 'company': 'Alfresco.com',
+ 'pictureId': 3003
+ },
+ 'relatedContent': true,
+ 'contentAvailable': true,
+ 'link': false,
+ 'mimeType': 'application/pdf',
+ 'simpleType': 'pdf',
+ 'previewStatus': 'created',
+ 'thumbnailStatus': 'created'
+ }]
+ };
+
+ getProcessRelatedContentSpy = spyOn(service, 'getProcessRelatedContent').and.returnValue(Observable.of(mockAttachment));
+
+ deleteContentSpy = spyOn(service, 'deleteRelatedContent').and.returnValue(Observable.of({successCode: true}));
+
+ let blobObj = new Blob();
+ getFileRawContentSpy = spyOn(service, 'getFileRawContent').and.returnValue(Observable.of(
+ blobObj
+ ));
+
+ componentHandler = jasmine.createSpyObj('componentHandler', [
+ 'upgradeAllRegistered',
+ 'upgradeElement'
+ ]);
+ window['componentHandler'] = componentHandler;
+ });
+
+ it('should load attachments when processInstanceId specified', () => {
+ let change = new SimpleChange(null, '123', true);
+ component.ngOnChanges({ 'processInstanceId': change });
+ expect(getProcessRelatedContentSpy).toHaveBeenCalled();
+ });
+
+ it('should emit an error when an error occurs loading attachments', () => {
+ let emitSpy = spyOn(component.error, 'emit');
+ getProcessRelatedContentSpy.and.returnValue(Observable.throw({}));
+ let change = new SimpleChange(null, '123', true);
+ component.ngOnChanges({ 'processInstanceId': change });
+ expect(emitSpy).toHaveBeenCalled();
+ });
+
+ it('should emit a success event when the attachments are loaded', () => {
+ let change = new SimpleChange(null, '123', true);
+ component.success.subscribe((attachments) => {
+ expect(attachments[0].name).toEqual(mockAttachment.data[0].name);
+ expect(attachments[0].id).toEqual(mockAttachment.data[0].id);
+ });
+
+ component.ngOnChanges({'taskId': change});
+ });
+
+ it('should not attach when no processInstanceId is specified', () => {
+ fixture.detectChanges();
+ expect(getProcessRelatedContentSpy).not.toHaveBeenCalled();
+ });
+
+ it('should display attachments when the process has attachments', async(() => {
+ let change = new SimpleChange(null, '123', true);
+ component.ngOnChanges({ 'processInstanceId': change });
+
+ fixture.whenStable().then(() => {
+ fixture.detectChanges();
+ expect(fixture.debugElement.queryAll(By.css('alfresco-datatable tbody tr')).length).toBe(2);
+ });
+ }));
+
+ it('should not display attachments when the process has no attachments', async(() => {
+ component.processInstanceId = '123';
+ getProcessRelatedContentSpy.and.returnValue(Observable.of({
+ 'size': 0,
+ 'total': 0,
+ 'start': 0,
+ 'data': []
+ }));
+ fixture.detectChanges();
+ fixture.whenStable().then(() => {
+ fixture.detectChanges();
+ expect(fixture.debugElement.queryAll(By.css('alfresco-datatable tbody tr')).length).toBe(0);
+ });
+ }));
+
+ describe('change detection', () => {
+
+ let change = new SimpleChange('123', '456', true);
+ let nullChange = new SimpleChange('123', null, true);
+
+ beforeEach(async(() => {
+ component.processInstanceId = '123';
+ fixture.detectChanges();
+ fixture.whenStable().then(() => {
+ getProcessRelatedContentSpy.calls.reset();
+ });
+ }));
+
+ it('should fetch new attachments when processInstanceId changed', () => {
+ component.ngOnChanges({ 'processInstanceId': change });
+ expect(getProcessRelatedContentSpy).toHaveBeenCalledWith('456');
+ });
+
+ it('should NOT fetch new attachments when empty changeset made', () => {
+ component.ngOnChanges({});
+ expect(getProcessRelatedContentSpy).not.toHaveBeenCalled();
+ });
+
+ it('should NOT fetch new attachments when processInstanceId changed to null', () => {
+ component.ngOnChanges({ 'processInstanceId': nullChange });
+ expect(getProcessRelatedContentSpy).not.toHaveBeenCalled();
+ });
+ });
+
+ describe('Delete attachments', () => {
+
+ beforeEach(async(() => {
+ component.processInstanceId = '123';
+ fixture.detectChanges();
+ fixture.whenStable();
+ }));
+
+ it('should display a dialog to the user when the Add button clicked', () => {
+ expect(true).toBe(true);
+ });
+
+ });
+
+});
diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts
new file mode 100644
index 0000000000..0c8f1d4cba
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts
@@ -0,0 +1,166 @@
+/*!
+ * @license
+ * Copyright 2016 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.
+ */
+
+import { Component, OnChanges, Input, SimpleChanges, Output, EventEmitter } from '@angular/core';
+import { AlfrescoTranslationService, ContentService } from 'ng2-alfresco-core';
+import { ActivitiContentService } from 'ng2-activiti-form';
+
+@Component({
+ selector: 'adf-process-attachment-list',
+ styleUrls: ['./adf-process-attachment-list.component.css'],
+ templateUrl: './adf-process-attachment-list.component.html'
+})
+export class ActivitiProcessAttachmentListComponent implements OnChanges {
+
+ @Input()
+ processInstanceId: string;
+
+ @Output()
+ attachmentClick = new EventEmitter();
+
+ @Output()
+ success = new EventEmitter();
+
+ @Output()
+ error: EventEmitter = new EventEmitter();
+
+ attachments: any[] = [];
+
+ constructor(private translateService: AlfrescoTranslationService,
+ private activitiContentService: ActivitiContentService,
+ private contentService: ContentService) {
+
+ if (translateService) {
+ translateService.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist');
+ }
+ }
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (changes['processInstanceId'] && changes['processInstanceId'].currentValue) {
+ this.loadAttachmentsByProcessInstanceId(changes['processInstanceId'].currentValue);
+ }
+ }
+
+ reset () {
+ this.attachments = [];
+ }
+
+ reload(): void {
+ this.loadAttachmentsByProcessInstanceId(this.processInstanceId);
+ }
+
+ private loadAttachmentsByProcessInstanceId(processInstanceId: string) {
+ if (processInstanceId) {
+ this.reset();
+ this.activitiContentService.getProcessRelatedContent(processInstanceId).subscribe(
+ (res: any) => {
+ res.data.forEach(content => {
+ this.attachments.push({
+ id: content.id,
+ name: content.name,
+ created: content.created,
+ createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,
+ icon: this.activitiContentService.getMimeTypeIcon(content.mimeType)
+ });
+ });
+ this.success.emit(this.attachments);
+ },
+ (err) => {
+ this.error.emit(err);
+ });
+ }
+ }
+
+ private deleteAttachmentById(contentId: string) {
+ if (contentId) {
+ this.activitiContentService.deleteRelatedContent(contentId).subscribe(
+ (res: any) => {
+ this.attachments = this.attachments.filter(content => {
+ return content.id !== contentId;
+ });
+ },
+ (err) => {
+ this.error.emit(err);
+ });
+ }
+ }
+
+ isEmpty(): boolean {
+ return this.attachments && this.attachments.length === 0;
+ }
+
+ onShowRowActionsMenu(event: any) {
+ let viewAction = {
+ title: 'View',
+ name: 'view'
+ };
+
+ let removeAction = {
+ title: 'Remove',
+ name: 'remove'
+ };
+
+ let downloadAction = {
+ title: 'Download',
+ name: 'download'
+ };
+
+ event.value.actions = [
+ viewAction,
+ removeAction,
+ downloadAction
+ ];
+ }
+
+ onExecuteRowAction(event: any) {
+ let args = event.value;
+ let action = args.action;
+ if (action.name === 'view') {
+ this.emitDocumentContent(args.row.obj);
+ } else if (action.name === 'remove') {
+ this.deleteAttachmentById(args.row.obj.id);
+ } else if (action.name === 'download') {
+ this.downloadContent(args.row.obj);
+ }
+ }
+
+ openContent(event: any): void {
+ let content = event.value.obj;
+ this.emitDocumentContent(content);
+ }
+
+ emitDocumentContent(content: any) {
+ this.activitiContentService.getFileRawContent(content.id).subscribe(
+ (blob: Blob) => {
+ content.contentBlob = blob;
+ this.attachmentClick.emit(content);
+ },
+ (err) => {
+ this.error.emit(err);
+ }
+ );
+ }
+
+ downloadContent(content: any): void {
+ this.activitiContentService.getFileRawContent(content.id).subscribe(
+ (blob: Blob) => this.contentService.downloadBlob(blob, content.name),
+ (err) => {
+ this.error.emit(err);
+ }
+ );
+ }
+}
diff --git a/ng2-components/ng2-activiti-processlist/src/components/index.ts b/ng2-components/ng2-activiti-processlist/src/components/index.ts
index f25e4eff86..da3601a1fa 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/index.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/index.ts
@@ -23,3 +23,5 @@ export * from './activiti-process-instance-variables.component';
export * from './activiti-process-comments.component';
export * from './activiti-process-instance-details.component';
export * from './activiti-start-process.component';
+export * from './adf-process-attachment-list.component';
+export * from './adf-create-process-attachment.component';
diff --git a/ng2-components/ng2-activiti-processlist/src/i18n/en.json b/ng2-components/ng2-activiti-processlist/src/i18n/en.json
index b76a6b5dd2..d08053d444 100644
--- a/ng2-components/ng2-activiti-processlist/src/i18n/en.json
+++ b/ng2-components/ng2-activiti-processlist/src/i18n/en.json
@@ -24,7 +24,10 @@
"TASK_SUBTITLE": "Assigned to {{user}}, created {{created}}"
},
"BUTTON": {
- "CANCEL": "Cancel Process"
+ "CANCEL": "Cancel Process",
+ "SHOW_DIAGRAM": "Show Diagram",
+ "DRAG-ATTACHMENT": "Drop Files Here...",
+ "UPLOAD-ATTACHMENT": "Upload Attachment"
},
"MESSAGES": {
"NONE": "No process details found."
diff --git a/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts b/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts
index af4d9b8fb0..e14e98578c 100644
--- a/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts
+++ b/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts
@@ -46,6 +46,25 @@ export class FilterProcessRepresentationModel {
}
}
+/**
+ *
+ * This object represent the parameters to filter a filter.
+ *
+ *
+ * @returns {FilterParamsModel} .
+ */
+export class FilterParamsModel {
+ id: string;
+ name: string;
+ index: number;
+
+ constructor(obj?: any) {
+ this.id = obj && obj.id || null;
+ this.name = obj && obj.name || null;
+ this.index = obj && obj.index;
+ }
+}
+
/**
*
* This object represent the parameters of a process filter.
diff --git a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts
index e701144dcc..ea74498be7 100644
--- a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts
+++ b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts
@@ -595,12 +595,12 @@ describe('ActivitiProcessService', () => {
it('should call the API without an appId defined by default', () => {
service.getProcessFilters(null);
- expect(getFilters).toHaveBeenCalledWith({});
+ expect(getFilters).toHaveBeenCalled();
});
it('should call the API with the correct appId when specified', () => {
- service.getProcessFilters(226);
- expect(getFilters).toHaveBeenCalledWith({appId: 226});
+ service.getProcessFilters('226');
+ expect(getFilters).toHaveBeenCalledWith({appId: '226'});
});
it('should return the task filter by id', (done) => {
@@ -638,7 +638,7 @@ describe('ActivitiProcessService', () => {
}));
it('should return the default filters', (done) => {
- service.createDefaultFilters(1234).subscribe(
+ service.createDefaultFilters('1234').subscribe(
(res: FilterProcessRepresentationModel []) => {
expect(res).toBeDefined();
expect(res.length).toEqual(3);
diff --git a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts
index 9bfdb3bf5e..274f7ca9b1 100644
--- a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts
+++ b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts
@@ -68,11 +68,8 @@ export class ActivitiProcessService {
}).catch(err => this.handleError(err));
}
- getProcessFilters(appId: number): Observable {
- let filterOpts = appId ? {
- appId: appId
- } : {};
- return Observable.fromPromise(this.callApiGetUserProcessInstanceFilters(filterOpts))
+ getProcessFilters(appId: string): Observable {
+ return Observable.fromPromise(this.callApiProcessFilters(appId))
.map((response: any) => {
let filters: FilterProcessRepresentationModel[] = [];
response.data.forEach((filter: FilterProcessRepresentationModel) => {
@@ -99,13 +96,14 @@ export class ActivitiProcessService {
/**
* Retrieve the process filter by name
- * @param processName - string - The name of the filter
+ * @param filterName - string - The name of the filter
+ * @param appId - string - optional - The id of app
* @returns {Observable}
*/
- getProcessFilterByName(processName: string, appId?: string): Observable {
- return Observable.fromPromise(this.callApiGetUserProcessInstanceFilters(appId))
+ getProcessFilterByName(filterName: string, appId?: string): Observable {
+ return Observable.fromPromise(this.callApiProcessFilters(appId))
.map((response: any) => {
- return response.data.find(filter => filter.name === processName);
+ return response.data.find(filter => filter.name === filterName);
}).catch(err => this.handleError(err));
}
@@ -114,7 +112,7 @@ export class ActivitiProcessService {
* @param appId
* @returns {FilterProcessRepresentationModel[]}
*/
- public createDefaultFilters(appId: number): Observable {
+ public createDefaultFilters(appId: string): Observable {
let runnintFilter = this.getRunningFilterInstance(appId);
let runnintObservable = this.addFilter(runnintFilter);
@@ -150,13 +148,13 @@ export class ActivitiProcessService {
});
}
- private getRunningFilterInstance(appId: number): FilterProcessRepresentationModel {
+ private getRunningFilterInstance(appId: string): FilterProcessRepresentationModel {
return new FilterProcessRepresentationModel({
'name': 'Running',
'appId': appId,
'recent': true,
'icon': 'glyphicon-random',
- 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'}
+ 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' }
});
}
@@ -165,13 +163,13 @@ export class ActivitiProcessService {
* @param appId
* @returns {FilterProcessRepresentationModel}
*/
- private getCompletedFilterInstance(appId: number): FilterProcessRepresentationModel {
+ private getCompletedFilterInstance(appId: string): FilterProcessRepresentationModel {
return new FilterProcessRepresentationModel({
'name': 'Completed',
'appId': appId,
'recent': false,
'icon': 'glyphicon-ok-sign',
- 'filter': {'sort': 'created-desc', 'name': '', 'state': 'completed'}
+ 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'completed' }
});
}
@@ -180,13 +178,13 @@ export class ActivitiProcessService {
* @param appId
* @returns {FilterProcessRepresentationModel}
*/
- private getAllFilterInstance(appId: number): FilterProcessRepresentationModel {
+ private getAllFilterInstance(appId: string): FilterProcessRepresentationModel {
return new FilterProcessRepresentationModel({
'name': 'All',
'appId': appId,
'recent': true,
'icon': 'glyphicon-th',
- 'filter': {'sort': 'created-desc', 'name': '', 'state': 'all'}
+ 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'all' }
});
}
@@ -210,15 +208,15 @@ export class ActivitiProcessService {
getProcessTasks(id: string, state?: string): Observable {
let taskOpts = state ? {
- processInstanceId: id,
- state: state
- } : {
- processInstanceId: id
- };
+ processInstanceId: id,
+ state: state
+ } : {
+ processInstanceId: id
+ };
return Observable.fromPromise(this.apiService.getInstance().activiti.taskApi.listTasks(taskOpts))
.map(this.extractData)
.map(tasks => tasks.map((task: any) => {
- task.created = moment(task.created, 'YYYY-MM-DD').format();
+ task.created = moment(task.created, 'YYYY-MM-DD').format();
return task;
}))
.catch(err => this.handleError(err));
@@ -255,8 +253,8 @@ export class ActivitiProcessService {
*/
addProcessInstanceComment(id: string, message: string): Observable {
return Observable.fromPromise(
- this.apiService.getInstance().activiti.commentsApi.addProcessInstanceComment({message: message}, id)
- )
+ this.apiService.getInstance().activiti.commentsApi.addProcessInstanceComment({ message: message }, id)
+ )
.map((response: Comment) => {
return new Comment(response.id, response.message, response.created, response.createdBy);
}).catch(err => this.handleError(err));
@@ -265,20 +263,20 @@ export class ActivitiProcessService {
getProcessDefinitions(appId?: string): Observable {
let opts = appId ? {
- latest: true,
- appDefinitionId: appId
- } : {
- latest: true
- };
+ latest: true,
+ appDefinitionId: appId
+ } : {
+ latest: true
+ };
return Observable.fromPromise(
this.apiService.getInstance().activiti.processApi.getProcessDefinitions(opts)
- )
+ )
.map(this.extractData)
.map(processDefs => processDefs.map((pd) => new ProcessDefinitionRepresentation(pd)))
.catch(err => this.handleError(err));
}
- startProcess(processDefinitionId: string, name: string, outcome?: string, startFormValues?: any, variables?: RestVariable): Observable {
+ startProcess(processDefinitionId: string, name: string, outcome?: string, startFormValues?: any, variables?: RestVariable[]): Observable {
let startRequest: any = {
name: name,
processDefinitionId: processDefinitionId
@@ -294,7 +292,7 @@ export class ActivitiProcessService {
}
return Observable.fromPromise(
this.apiService.getInstance().activiti.processApi.startNewProcessInstance(startRequest)
- )
+ )
.map((pd) => new ProcessInstance(pd))
.catch(err => this.handleError(err));
}
@@ -302,14 +300,14 @@ export class ActivitiProcessService {
cancelProcess(processInstanceId: string): Observable {
return Observable.fromPromise(
this.apiService.getInstance().activiti.processApi.deleteProcessInstance(processInstanceId)
- )
+ )
.catch(err => this.handleError(err));
}
getProcessInstanceVariables(processDefinitionId: string): Observable {
return Observable.fromPromise(
this.apiService.getInstance().activiti.processInstanceVariablesApi.getProcessInstanceVariables(processDefinitionId)
- )
+ )
.map((processVars: any[]) => processVars.map((pd) => new ProcessInstanceVariable(pd)))
.catch(err => this.handleError(err));
}
@@ -317,21 +315,17 @@ export class ActivitiProcessService {
createOrUpdateProcessInstanceVariables(processDefinitionId: string, variables: ProcessInstanceVariable[]): Observable {
return Observable.fromPromise(
this.apiService.getInstance().activiti.processInstanceVariablesApi.createOrUpdateProcessInstanceVariables(processDefinitionId, variables)
- )
+ )
.catch(err => this.handleError(err));
}
deleteProcessInstanceVariable(processDefinitionId: string, variableName: string): Observable {
return Observable.fromPromise(
this.apiService.getInstance().activiti.processInstanceVariablesApi.deleteProcessInstanceVariable(processDefinitionId, variableName)
- )
+ )
.catch(err => this.handleError(err));
}
- private callApiGetUserProcessInstanceFilters(filterOpts) {
- return this.apiService.getInstance().activiti.userFiltersApi.getUserProcessInstanceFilters(filterOpts);
- }
-
private callApiAddFilter(filter: FilterProcessRepresentationModel) {
return this.apiService.getInstance().activiti.userFiltersApi.createUserProcessInstanceFilter(filter);
}
diff --git a/ng2-components/ng2-activiti-processlist/tsconfig.json b/ng2-components/ng2-activiti-processlist/tsconfig.json
index 42e2a54cc8..b5b9140c06 100644
--- a/ng2-components/ng2-activiti-processlist/tsconfig.json
+++ b/ng2-components/ng2-activiti-processlist/tsconfig.json
@@ -35,7 +35,9 @@
"ng2-alfresco-viewer": ["../ng2-alfresco-viewer/"],
"ng2-alfresco-webscript": ["../ng2-alfresco-webscript/"],
"ng2-alfresco-userinfo": ["../ng2-alfresco-userinfo"],
- "alfresco-js-api": ["../node_modules/alfresco-js-api/"]
+ "alfresco-js-api": ["./node_modules/alfresco-js-api/"],
+ "@angular/*": ["./node_modules/@angular/*"],
+ "rxjs/*": ["./node_modules/rxjs/*"]
},
"lib": [
"es2015",
diff --git a/ng2-components/ng2-activiti-form/config/assets/tslint.json b/ng2-components/ng2-activiti-processlist/tslint.json
similarity index 100%
rename from ng2-components/ng2-activiti-form/config/assets/tslint.json
rename to ng2-components/ng2-activiti-processlist/tslint.json
diff --git a/ng2-components/ng2-activiti-processlist/webpack.build.js b/ng2-components/ng2-activiti-processlist/webpack.build.js
index e4e4a4e69f..b97d267dca 100644
--- a/ng2-components/ng2-activiti-processlist/webpack.build.js
+++ b/ng2-components/ng2-activiti-processlist/webpack.build.js
@@ -1,17 +1 @@
-const webpack = require('webpack');
-const webpackMerge = require('webpack-merge');
-const commonConfig = require('./config/webpack.common.js');
-
-module.exports = webpackMerge(commonConfig, {
-
- output: {
- filename: './bundles/[name].js',
- library: '[name]',
- libraryTarget: 'umd',
- chunkFilename: '[id].chunk.js'
- },
-
- entry: {
- "ng2-activiti-processlist": "./index.ts"
- }
-});
+module.exports = require('./config/webpack.build.js');
diff --git a/ng2-components/ng2-activiti-processlist/webpack.coverage.js b/ng2-components/ng2-activiti-processlist/webpack.coverage.js
new file mode 100644
index 0000000000..efa49b2755
--- /dev/null
+++ b/ng2-components/ng2-activiti-processlist/webpack.coverage.js
@@ -0,0 +1 @@
+module.exports = require('./config/webpack.coverage.js');
diff --git a/ng2-components/ng2-activiti-processlist/webpack.test.js b/ng2-components/ng2-activiti-processlist/webpack.test.js
index b6f4929fa4..85484e61b0 100644
--- a/ng2-components/ng2-activiti-processlist/webpack.test.js
+++ b/ng2-components/ng2-activiti-processlist/webpack.test.js
@@ -1,8 +1 @@
-const webpack = require('webpack');
-const webpackMerge = require('webpack-merge');
-const testConfig = require('./config/webpack.test.js');
-
-module.exports = webpackMerge(testConfig, {
-
-
-});
+module.exports = require('./config/webpack.test.js');
diff --git a/ng2-components/ng2-activiti-tasklist/.gitignore b/ng2-components/ng2-activiti-tasklist/.gitignore
index 8dd503835e..b87321ec78 100644
--- a/ng2-components/ng2-activiti-tasklist/.gitignore
+++ b/ng2-components/ng2-activiti-tasklist/.gitignore
@@ -8,7 +8,6 @@ dist
src/**/*.js
src/**/*.js.map
src/**/*.d.ts
-demo/**/*.js
demo/**/*.js.map
demo/**/*.d.ts
index.js
@@ -18,3 +17,4 @@ index.js.map
/package/
/bundles/
index.d.ts
+/.happypack
diff --git a/ng2-components/ng2-activiti-tasklist/.npmignore b/ng2-components/ng2-activiti-tasklist/.npmignore
index cb0b8b2890..a30cc5773b 100644
--- a/ng2-components/ng2-activiti-tasklist/.npmignore
+++ b/ng2-components/ng2-activiti-tasklist/.npmignore
@@ -4,6 +4,7 @@ npm-debug.log
coverage/
demo/
+dist/
node_modules
typings/
fonts/
@@ -15,3 +16,4 @@ fonts/
/karma.conf.js
/gulpfile.ts
/.npmignore
+/.happypack
diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md
index aae994f3f8..5c5aaed318 100644
--- a/ng2-components/ng2-activiti-tasklist/README.md
+++ b/ng2-components/ng2-activiti-tasklist/README.md
@@ -1,35 +1,52 @@
-# Activiti Task List Component for Angular 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+# APS Task List Component
+
+
+
+
+
+- [Prerequisites](#prerequisites)
+- [Install](#install)
+- [Activiti Task List](#activiti-task-list)
+ * [DataColumn Properties](#datacolumn-properties)
+ * [Events](#events)
+ * [Properties](#properties)
+- [Activiti Task Details](#activiti-task-details)
+ * [Properties](#properties-1)
+ * [Events](#events-1)
+ * [Custom 'empty Activiti Task Details' template](#custom-empty-activiti-task-details-template)
+- [Activiti Apps Component](#activiti-apps-component)
+ * [Properties](#properties-2)
+ * [Events](#events-2)
+ * [How filter the activiti apps](#how-filter-the-activiti-apps)
+- [Activiti Filter](#activiti-filter)
+ * [Properties](#properties-3)
+ * [Events](#events-3)
+ * [How filter the activiti task filters](#how-filter-the-activiti-task-filters)
+ * [FilterParamsModel](#filterparamsmodel)
+ * [How to create an accordion menu with the task filter](#how-to-create-an-accordion-menu-with-the-task-filter)
+- [Activiti Checklist Component](#activiti-checklist-component)
+ * [Properties](#properties-4)
+- [Task Attachment List Component](#task-attachment-list-component)
+ * [Properties](#properties-5)
+ * [Events](#events-4)
+- [Create Task Attachment Component](#create-task-attachment-component)
+ * [Properties](#properties-6)
+ + [Events](#events-5)
+- [Activiti Task Header](#activiti-task-header)
+ * [Properties](#properties-7)
+ * [Events](#events-6)
+- [TaskDetailsModel](#taskdetailsmodel)
+- [Task People Component](#task-people-component)
+ * [Properties](#properties-8)
+ + [Events](#events-7)
+- [Build from sources](#build-from-sources)
+- [NPM scripts](#npm-scripts)
+- [Demo](#demo)
+- [License](#license)
+
+
+
+
Displays lists of process instances both active and completed, using any defined process filter, and
render details of any chosen instance.
@@ -39,140 +56,24 @@ render details of any chosen instance.
Before you start using this development framework, make sure you have installed all required software and done all the
necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md).
+> If you plan using this component with projects generated by Angular CLI, please refer to the following article: [Using ADF with Angular CLI](https://github.com/Alfresco/alfresco-ng2-components/wiki/Angular-CLI)
+
## Install
-Follow the 3 steps below:
+```sh
+npm install ng2-activiti-tasklist
+```
-1. Npm
-
- ```sh
- npm install ng2-activiti-tasklist --save
- ```
-
-2. Html
-
- Include these dependencies in your index.html page:
-
- ```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ```
-
-3. SystemJs
-
- Add the following components to your systemjs.config.js file:
-
- - ng2-translate
- - alfresco-js-api
- - ng2-alfresco-core
- - ng2-activiti-form
- - ng2-alfresco-datatable
- - ng2-activiti-tasklist
-
- Please refer to the following example file: [systemjs.config.js](demo/systemjs.config.js) .
-
-
-## Basic usage example Activiti Task List
+## Activiti Task List
This component renders a list containing all the tasks matched by the parameters specified.
```html
-
-```
-
-Usage example of this component :
-
-**main.ts**
-
-```ts
-import { NgModule, Component } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { ActivitiTaskListModule } from 'ng2-activiti-tasklist';
-import { CoreModule, AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core';
-import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable';
-
-@Component({
- selector: 'alfresco-app-demo',
- template: `
-
-
- `
-})
-class MyDemoApp {
-
- dataTasks: ObjectDataTableAdapter;
- appId: string = '1';
- assignment: string = 'assignee';
- state: string = 'open';
-
- constructor(private authService: AlfrescoAuthenticationService,
- private settingsService: AlfrescoSettingsService) {
- settingsService.bpmHost = 'http://localhost:9999';
-
- this.authService.login('admin', 'admin').subscribe(
- ticket => console.log(ticket),
- error => console.log(error)
- );
-
- this.dataTasks = new ObjectDataTableAdapter([], [
- {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true},
- {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true}
- ]);
- this.dataTasks.setSorting(new DataSorting('started', 'desc'));
- }
-}
-
-@NgModule({
- imports: [
- BrowserModule,
- CoreModule.forRoot(),
- ActivitiTaskListModule.forRoot()
- ],
- declarations: [MyDemoApp],
- bootstrap: [MyDemoApp]
-})
-export class AppModule {}
-
-platformBrowserDynamic().bootstrapModule(AppModule);
+
+
```
You can also use HTML-based schema declaration like shown below:
@@ -205,22 +106,21 @@ Here's the list of available properties you can define for a Data Column definit
| Name | Description |
| --- | --- |
-| `onSuccess` | The event is emitted when the task list is loaded |
-| `rowClick` | The event is emitted when the task in the list is clicked |
+| onSuccess | Raised when the task list is loaded |
+| rowClick | Raised when the task in the list is clicked |
### Properties
-
| Name | Type | Default | Description |
| --- | --- | --- | --- |
-|`appId`| { string } || The id of the app. |
-|`processDefinitionKey`| { string } || The processDefinitionKey of the process. |
-|`assignment`| { string } || The assignment of the process. Possible values are: assignee : where the current user is the assignee candidate: where the current user is a task candidate group_x: where the task is assigned to a group where the current user is a member of. no value: where the current user is involved |
-|`state`| { string } || Define state of the processes. Possible values are: completed, active |
-|`hasIcon` | boolean | true | Show/Hide the icon on the left . |
-|`landingTaskId`| { string } | | Define which task id should be selected after the reloading. If the task id doesn't exist or nothing is passed it will select the first task |
-|`sort`| { string } ||Define the sort of the processes. Possible values are : created-desc, created-asc, due-desc, due-asc |
-| `data` | { DataTableAdapter }| (optional)|JSON object that represent the number and the type of the columns that you want show
+| appId | string || The id of the app. |
+| processDefinitionKey | string || The processDefinitionKey of the process. |
+| assignment | string || The assignment of the process. Possible values are: assignee : where the current user is the assignee candidate: where the current user is a task candidate group_x: where the task is assigned to a group where the current user is a member of. no value: where the current user is involved |
+| state | string || Define state of the processes. Possible values are: `completed`, `active` |
+| hasIcon | boolean | true | Toggle the icon on the left . |
+| landingTaskId | string | | Define which task id should be selected after the reloading. If the task id doesn't exist or nothing is passed it will select the first task |
+| sort | string | | Define the sort of the processes. Possible values are : `created-desc`, `created-asc`, `due-desc`, `due-asc` |
+| data | DataTableAdapter | | JSON object that represent the number and the type of the columns that you want show |
Example:
@@ -233,42 +133,44 @@ Example:
]
```
-## Basic usage example Activiti Task Details
+## Activiti Task Details
The component shows the details of the task id passed in input
```html
-
+
+
```
-#### Properties
+### Properties
| Name | Type | Default | Description |
| --- | --- | --- | --- |
-| `taskId` | string | | (**required**) The id of the task details that we are asking for. |
-| `showNextTask` | boolean | true | Automatically render the next one, when the task is completed. |
-| `showFormTitle` | boolean | true | Toggle rendering of the form title. |
-| `readOnlyForm` | boolean | false | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. |
-| `showFormRefreshButton` | true | optional | Toggle rendering of the `Refresh` button. |
-| `showFormSaveButton` | true | optional | Toggle rendering of the `Save` outcome button. |
-| `showFormCompleteButton` | true | optional | Toggle rendering of the Form `Complete` outcome button |
-| `peopleIconImageUrl` | string | | Define a custom people icon image |
-| `showHeader` | boolean | true | Toggle task details Header component |
-| `showHeaderContent` | boolean | true | Toggle collapsed/expanded state of the Header component |
-| `showInvolvePeople` | boolean | true | Toggle `Involve People` feature for Header component |
-| `showComments` | boolean | true | Toggle `Comments` feature for Header component |
-| `showChecklist` | boolean | true | Toggle `Checklist` feature for Header component |
+| taskId | string | | (**required**) The id of the task details that we are asking for. |
+| showNextTask | boolean | true | Automatically render the next one, when the task is completed. |
+| showFormTitle | boolean | true | Toggle rendering of the form title. |
+| readOnlyForm | boolean | false | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. |
+| showFormRefreshButton | boolean | true | Toggle rendering of the `Refresh` button. |
+| showFormSaveButton | boolean | true| Toggle rendering of the `Save` outcome button. |
+| showFormCompleteButton | boolean | true | Toggle rendering of the Form `Complete` outcome button |
+| peopleIconImageUrl | string | | Define a custom people icon image |
+| showHeader | boolean | true | Toggle task details Header component |
+| showHeaderContent | boolean | true | Toggle collapsed/expanded state of the Header component |
+| showInvolvePeople | boolean | true | Toggle `Involve People` feature for Header component |
+| showComments | boolean | true | Toggle `Comments` feature for Header component |
+| showChecklist | boolean | true | Toggle `Checklist` feature for Header component |
-#### Events
+### Events
| Name | Description |
| --- | --- |
-| `formLoaded` | Invoked when form is loaded or reloaded. |
-| `formSaved` | Invoked when form is submitted with `Save` or custom outcomes. |
-| `formCompleted` | Invoked when form is submitted with `Complete` outcome. |
-| `taskCreated` | Invoked when a checklist task is created. |
-| `executeOutcome` | Invoked when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` |
-| `onError` | Invoked at any error |
+| formLoaded | Raised when form is loaded or reloaded. |
+| formSaved | Raised when form is submitted with `Save` or custom outcomes. |
+| formCompleted | Raised when form is submitted with `Complete` outcome. |
+| taskCreated | Raised when a checklist task is created. |
+| executeOutcome | Raised when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` |
+| onError | Raised at any error |
### Custom 'empty Activiti Task Details' template
@@ -293,40 +195,47 @@ This can be changed by adding the following custom html template:
Note that can put any HTML content as part of the template, includuing other Angualr components.
-## Basic usage example Activiti Apps
+## Activiti Apps Component
The component shows all the available apps.
```html
-
+
+
```
-#### Events
+### Properties
+
+| Name | Type | Description |
+| --- | --- | --- |
+| layoutType | string | (**required**) Define the layout of the apps. There are two possible values: GRID or LIST. |
+| filtersAppId | Object | Provide a way to filter the apps to show. |
+
+### Events
| Name | Description |
| --- | --- |
-| `appClick` | Invoked when an app is clicked |
-
-#### Options
-
-| Name | Type | Required | Description |
-| --- | --- | --- | --- |
-| `layoutType` | {string} | required | Define the layout of the apps. There are two possible values: GRID or LIST. |
-| `filtersAppId` | {Object} | | Provide a way to filter the apps to show. |
-
+| appClick | Raised when an app entry is clicked |
### How filter the activiti apps
If you want show some specific apps you can specify them through the filtersAppId parameters
```html
-
+
+
```
In this specific case only the Tasks app, the app with deploymentId 15037 and the app with "my app name" will be showed

You can use inside the filter one of the following property
+
```json
{
"defaultAppId": "string",
@@ -338,7 +247,8 @@ You can use inside the filter one of the following property
}
```
-## Basic usage example Activiti Filter
+
+## Activiti Filter
The component shows all the available filters.
@@ -346,15 +256,50 @@ The component shows all the available filters.
```
-#### Events
+### Properties
+
+| Name | Type | Description |
+| --- | --- | --- |
+| filterParam | [FilterParamsModel](#filterparamsmodel) | The params to filter the task filter. If there is no match the default one (first filter of the list) is selected |
+| appId | string | Display filters available to the current user for the application with the specified ID. |
+| `appName` | string | Display filters available to the current user for the application with the specified name. |
+| `hasIcon` | boolean | Toggle to show or not the filter's icon. |
+
+If both `appId` and `appName` are specified then `appName` will take precedence and `appId` will be ignored.
+
+### Events
| Name | Description |
| --- | --- |
-| `filterClick` | The event is emitted when the filter in the list is clicked |
+| filterClick | Raised when the filter in the list is clicked |
+| onSuccess | Raised when the list is loaded |
+| onError | Raised if there is an error during the loading |
-#### Options
+### How filter the activiti task filters
-No options
+ ```html
+
+
+```
+
+You can use inside the filterParam one of the following property.
+
+### FilterParamsModel
+
+```json
+{
+ "id": "number",
+ "name": "string",
+ "index": "number"
+}
+```
+
+| Name | Type | Description |
+| --- | --- | --- |
+| id | string | The id of the task filter |
+| name | string | The name of the task filter, lowercase is checked |
+| index | string | The zero-based position of the filter in the array. |
### How to create an accordion menu with the task filter
@@ -377,76 +322,152 @@ The AccordionComponent is exposed by the alfresco-core.

-## Basic usage example Activiti Checklist
+## Activiti Checklist Component
The component shows the checklist task functionality.
```html
-
+
```
-#### Options
+### Properties
-| Name | Type | Required | Description |
-| --- | --- | --- | --- |
-| `taskId` | {string} | required | The id of the parent task which sub tasks are attached on. |
-| `readOnlyForm` | {boolean} | optional | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. |
-| `assignee` | {string} | required | The assignee id where the subtasks are assigned to. |
+| Name | Type | Description |
+| --- | --- | --- |
+| taskId | string | (**required**) The id of the parent task which sub tasks are attached on. |
+| readOnlyForm | boolean | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. |
+| assignee | string | (**required**) The assignee id where the subtasks are assigned to. |
-## Basic usage example Activiti Checklist
+## Task Attachment List Component
-The component shows all the available filters.
+This component displays attached documents on a specified task
```html
-
+
+
```
+
+
+### Properties
+
+| Name | Type | Description |
+| --- | --- | --- |
+| taskId | string | (**required**): The ID of the task to display |
+
+### Events
+
+| Name | Description |
+| --- | --- |
+| attachmentClick | Raised when the attachment double clicked or selected view option from context menu by the user from within the component and return a Blob obj of the object clicker|
+| success | Raised when the attachment list fetch all the attach and return a list of attachments |
+| error | Raised when the attachment list is not able to fetch the attachments for example network error |
+
+## Create Task Attachment Component
+
+This component displays Upload Component(Drag and Click) to upload the attachment to a specified task
+
+```html
+
+
+```
+
+
+
+### Properties
+
+| Name | Type | Description |
+| --- | --- | --- |
+| taskId | string | (**required**): The numeric ID of the task to display |
+
+#### Events
+
+| Name | Description |
+| --- | --- |
+| error | Raised when the error occured while creating/uploading the attachment by the user from within the component |
+| success | Raised when the attachement created/uploaded successfully from within the component |
+
+## Activiti Task Header
+
+The component shows all the information related to a task.
+The purpose of the component is populate the local variable called `properties` (array of CardViewModel), with all the information that we want display.
+
+```html
+
+
+```
+
+### Properties
+
+| Name | Type | Default | Description |
+| --- | --- | --- | --- |
+| taskDetails | [TaskDetailsModel](#taskdetailsmodel) | | (**required**) The task details related to the task. |
+| formName | string | | The name of the form. |
+
+
+
+### Events
+
+| Name | Description |
+| --- | --- |
+| claim | Raised when the task is claimed. |
+
+## TaskDetailsModel
+```json
+{
+ "id": "string",
+ "assignee": "User",
+ "dueDate": "data",
+ "endDate": "string",
+ "description": "string"
+}
+```
+## Task People Component
+
+This component displays involved users to a specified task
+
+```html
+
+
+```
+
+
+
+### Properties
+
+| Name | Type | Description |
+| --- | --- | --- |
+| people | User[] | The array of User object to display |
+| taskId | string | The numeric ID of the task |
+| readOnly | boolean | The boolean flag |
+
+#### Events
+
+No Events
## Build from sources
-Alternatively you can build component from sources with the following commands:
-
+You can build component from sources with the following commands:
```sh
npm install
npm run build
```
-### Build the files and keep watching for changes
-
-```sh
-$ npm run build:w
-```
-
-## Running unit tests
-
-```sh
-npm test
-```
-
-### Running unit tests in browser
-
-```sh
-npm test-browser
-```
-
-This task rebuilds all the code, runs tslint, license checks and other quality check tools
-before performing unit testing.
-
-### Code coverage
-
-```sh
-npm run coverage
-```
-
-## Demo
-
-If you want have a demo of how the component works, please check the demo folder :
-
-```sh
-cd demo
-npm install
-npm start
-```
+> The `build` task rebuilds all the code, runs tslint, license checks
+> and other quality check tools before performing unit testing.
## NPM scripts
@@ -457,6 +478,16 @@ npm start
| npm run test-browser | Run unit tests in the browser
| npm run coverage | Run unit tests and display code coverage report |
+## Demo
+
+Please check the demo folder for a demo project
+
+```sh
+cd demo
+npm install
+npm start
+```
+
## License
[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE)
diff --git a/ng2-components/ng2-activiti-tasklist/config/webpack.build.js b/ng2-components/ng2-activiti-tasklist/config/webpack.build.js
new file mode 100644
index 0000000000..88ec554ad0
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/config/webpack.build.js
@@ -0,0 +1,35 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const commonConfig = require('./webpack.common.js');
+
+module.exports = webpackMerge(commonConfig, {
+
+ devtool: 'cheap-module-source-map',
+
+ externals: [
+ /^\@angular\//,
+ /^rxjs\//,
+ 'moment',
+ 'raphael',
+ 'ng2-charts',
+ 'alfresco-js-api',
+ 'ng2-alfresco-core',
+ 'ng2-alfresco-datatable',
+ 'ng2-activiti-analytics',
+ 'ng2-activiti-diagrams',
+ 'ng2-activiti-form',
+ "ng2-activiti-tasklist",
+ 'ng2-alfresco-documentlist'
+ ],
+
+ output: {
+ filename: './bundles/[name].js',
+ library: '[name]',
+ libraryTarget: 'umd',
+ chunkFilename: '[id].chunk.js'
+ },
+
+ entry: {
+ "ng2-activiti-tasklist": "./index.ts"
+ }
+});
diff --git a/ng2-components/ng2-activiti-tasklist/config/webpack.common.js b/ng2-components/ng2-activiti-tasklist/config/webpack.common.js
index 52a680e87e..42e5b73ffe 100644
--- a/ng2-components/ng2-activiti-tasklist/config/webpack.common.js
+++ b/ng2-components/ng2-activiti-tasklist/config/webpack.common.js
@@ -2,6 +2,11 @@ const webpack = require('webpack');
const helpers = require('./helpers');
const fs = require('fs');
const path = require('path');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+var HappyPack = require('happypack');
+const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
+
+const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = {
@@ -12,22 +17,16 @@ module.exports = {
}
},
- // require those dependencies but don't bundle them
- externals: [
- /^\@angular\//,
- /^rxjs\//,
- 'moment',
- 'raphael',
- 'ng2-charts',
- 'alfresco-js-api',
- 'ng2-alfresco-core',
- 'ng2-alfresco-datatable',
- 'ng2-activiti-analytics',
- 'ng2-activiti-diagrams',
- 'ng2-activiti-form',
- "ng2-activiti-tasklist",
- 'ng2-alfresco-documentlist'
- ],
+ resolve: {
+ alias: {
+ "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts'),
+ "ng2-alfresco-datatable": helpers.root('../ng2-alfresco-datatable/index.ts'),
+ "ng2-activiti-form": helpers.root('../ng2-activiti-form/index.ts')
+ },
+ extensions: ['.ts', '.js'],
+ symlinks: false,
+ modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
+ },
module: {
rules: [
@@ -37,25 +36,19 @@ module.exports = {
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
- {
- enforce: 'pre',
- test: /\.ts$/,
- use: 'source-map-loader',
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
{
enforce: 'pre',
test: /\.ts$/,
loader: 'tslint-loader',
options: {
emitErrors: true,
- configFile: path.resolve(__dirname, './assets/tslint.json')
+ failOnHint: true
},
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
- use: ['ts-loader', 'angular2-template-loader'],
+ loader: ['happypack/loader?id=ts', 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
@@ -67,7 +60,13 @@ module.exports = {
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },{
+ },
+ {
+ test: /\.component.scss$/,
+ use: ['to-string-loader', 'raw-loader', 'sass-loader'],
+ exclude: [/node_modules/, /bundles/, /dist/, /demo/]
+ },
+ {
enforce: 'pre',
test: /\.ts$/,
loader: 'license-check',
@@ -95,15 +94,29 @@ module.exports = {
]
},
- resolve: {
- extensions: ['.ts', '.js'],
- symlinks: false,
- modules: [
- '../ng2-components', 'node_modules'
- ]
- },
-
plugins: [
+ new ForkTsCheckerWebpackPlugin(),
+ new HappyPack({
+ id: 'ts',
+ threads: 8,
+ loaders: [
+ {
+ path: 'ts-loader',
+ query: {
+ happyPackMode: true,
+ "compilerOptions": {
+ "paths": {}
+ }
+ }
+ }
+ ]
+ }),
+
+ new CopyWebpackPlugin([{
+ from: `src/i18n/`,
+ to: `bundles/assets/${path.basename(helpers.root(''))}/i18n/`
+ }]),
+
new webpack.NoEmitOnErrorsPlugin(),
new webpack.BannerPlugin(fs.readFileSync(path.resolve(__dirname, './assets/license_header_add.txt'), 'utf8')),
@@ -112,11 +125,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
- )
+ ),
+ new webpack.DefinePlugin({
+ 'process.env': {
+ 'ENV': JSON.stringify(ENV)
+ }
+ }),
+ new webpack.LoaderOptionsPlugin({
+ htmlLoader: {
+ minimize: false // workaround for ng2
+ }
+ })
],
- devtool: 'cheap-module-source-map',
-
node: {
fs: 'empty',
module: false
diff --git a/ng2-components/ng2-activiti-tasklist/config/webpack.coverage.js b/ng2-components/ng2-activiti-tasklist/config/webpack.coverage.js
new file mode 100644
index 0000000000..03ae287665
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/config/webpack.coverage.js
@@ -0,0 +1,22 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const testConfig = require('./webpack.test.js');
+const helpers = require('./helpers');
+
+module.exports = webpackMerge(testConfig, {
+
+ module: {
+ rules: [
+ {
+ enforce: 'post',
+ test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
+ include: [helpers.root('src')],
+ loader: 'istanbul-instrumenter-loader',
+ exclude: [
+ /node_modules/,
+ /test/
+ ]
+ }
+ ]
+ }
+});
diff --git a/ng2-components/ng2-activiti-tasklist/config/webpack.test.js b/ng2-components/ng2-activiti-tasklist/config/webpack.test.js
index 486fed8c15..38e396d56e 100644
--- a/ng2-components/ng2-activiti-tasklist/config/webpack.test.js
+++ b/ng2-components/ng2-activiti-tasklist/config/webpack.test.js
@@ -1,85 +1,19 @@
-const webpack = require('webpack');
const helpers = require('./helpers');
+const webpackMerge = require('webpack-merge');
+const commonConfig = require('./webpack.common.js');
-const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
-
-module.exports = {
+module.exports = webpackMerge(commonConfig, {
devtool: 'inline-source-map',
resolve: {
+ alias: {
+ "ng2-alfresco-form": helpers.root('../ng2-alfresco-form/index.ts'),
+ "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts'),
+ "ng2-alfresco-datatable": helpers.root('../ng2-alfresco-datatable/index.ts')
+ },
extensions: ['.ts', '.js'],
symlinks: false,
- modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
- },
-
- module: {
- rules: [
- {
- enforce: 'pre',
- test: /\.js$/,
- loader: 'source-map-loader',
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.ts$/,
- loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.html$/,
- loader: 'html-loader',
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.css$/,
- loader: ['to-string-loader', 'css-loader'],
- exclude: [/node_modules/, /bundles/, /dist/, /demo/]
- },
- {
- test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
- loader: 'file-loader',
- query: {
- name: '[path][name].[ext]',
- outputPath: (url)=> {
- return url.replace('src', 'dist');
- }
- }
- },
- {
- enforce: 'post',
- test: /\.ts$/,
- loader: 'istanbul-instrumenter-loader',
- exclude: [
- /node_modules/,
- /test/
- ]
- }
- ]
- },
-
- plugins: [
- new webpack.NoEmitOnErrorsPlugin(),
-
- new webpack.ContextReplacementPlugin(
- /angular(\\|\/)core(\\|\/)@angular/,
- helpers.root('./src'),
- {}
- ),
- new webpack.DefinePlugin({
- 'process.env': {
- 'ENV': JSON.stringify(ENV)
- }
- }),
- new webpack.LoaderOptionsPlugin({
- htmlLoader: {
- minimize: false // workaround for ng2
- }
- })
- ],
-
- node: {
- fs: 'empty',
- module: false
+ modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
}
-};
+});
diff --git a/ng2-components/ng2-activiti-tasklist/demo/config/helpers.js b/ng2-components/ng2-activiti-tasklist/demo/config/helpers.js
new file mode 100644
index 0000000000..a11fa771d6
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/config/helpers.js
@@ -0,0 +1,10 @@
+var path = require('path');
+
+var _root = path.resolve(__dirname, '..');
+
+function root(args) {
+ args = Array.prototype.slice.call(arguments, 0);
+ return path.join.apply(path, [_root].concat(args));
+}
+
+exports.root = root;
diff --git a/ng2-components/ng2-activiti-tasklist/demo/config/webpack.common.js b/ng2-components/ng2-activiti-tasklist/demo/config/webpack.common.js
new file mode 100644
index 0000000000..807cf6f51b
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/config/webpack.common.js
@@ -0,0 +1,127 @@
+const webpack = require('webpack');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const ExtractTextPlugin = require("extract-text-webpack-plugin");
+const helpers = require('./helpers');
+const path = require('path');
+
+const alfrescoLibs = [
+ 'ng2-activiti-tasklist',
+ 'ng2-alfresco-datatable'
+];
+
+module.exports = {
+ entry: {
+ 'polyfills': './src/polyfills.ts',
+ 'vendor': './src/vendor.ts',
+ 'dist': './src/main.ts'
+ },
+
+ module: {
+ rules: [
+ {
+ enforce: 'pre',
+ test: /\.js$/,
+ include: [helpers.root('src'), helpers.root('../ng2-components')],
+ loader: 'source-map-loader',
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ test: /\.ts$/,
+ include: [helpers.root('src'), helpers.root('..')],
+ loader: [
+ 'ts-loader',
+ 'angular2-template-loader'
+ ],
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ enforce: 'pre',
+ test: /\.ts$/,
+ loader: 'tslint-loader',
+ include: [helpers.root('src')],
+ options: {
+ emitErrors: true
+ },
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ enforce: 'pre',
+ test: /\.ts$/,
+ use: 'source-map-loader',
+ exclude: [ /public/, /resources/, /dist/]
+ },
+ {
+ test: /\.html$/,
+ loader: 'html-loader',
+ exclude: [ /node_modules/, /public/, /resources/, /dist/]
+ },
+ {
+ test: /\.css$/,
+ exclude: [helpers.root('src'), helpers.root('../ng2-components')],
+ loader: ExtractTextPlugin.extract({
+ fallback: 'style-loader',
+ use: 'css-loader?sourceMap'
+ })
+ },
+ {
+ test: /\.css$/,
+ include: [helpers.root('src'), helpers.root('../ng2-components')],
+ loader: 'raw-loader'
+ },
+ {
+ test: /\.component.scss$/,
+ use: ['to-string-loader', 'raw-loader', 'sass-loader']
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
+ loader: 'file-loader?name=assets/[name].[hash].[ext]'
+ }
+ ]
+ },
+
+ plugins: [
+ // Workaround for angular/angular#11580
+ new webpack.ContextReplacementPlugin(
+ // The (\\|\/) piece accounts for path separators in *nix and Windows
+ /angular(\\|\/)core(\\|\/)@angular/,
+ helpers.root('./src'), // location of your src
+ {} // a map of your routes
+ ),
+ new HtmlWebpackPlugin({
+ template: './index.html'
+ }),
+
+ new CopyWebpackPlugin([
+ ... alfrescoLibs.map(lib => {
+ return {
+ context: `../ng2-components/${lib}/bundles/assets/` ,
+ from: '**/*',
+ to: `assets/`
+ }
+ }),
+ {
+ context: 'resources/i18n',
+ from: '**/*.json',
+ to: 'resources/i18n'
+ }
+ ]),
+
+ new webpack.optimize.CommonsChunkPlugin({
+ name: ['src', 'vendor', 'polyfills']
+ })
+ ],
+
+ devServer: {
+ contentBase: helpers.root('dist'),
+ compress: true,
+ port: 3000,
+ historyApiFallback: true,
+ host: '0.0.0.0',
+ inline: true
+ },
+
+ node: {
+ fs: 'empty'
+ }
+};
diff --git a/ng2-components/ng2-activiti-tasklist/demo/config/webpack.dev.js b/ng2-components/ng2-activiti-tasklist/demo/config/webpack.dev.js
new file mode 100644
index 0000000000..e5a81b1a66
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/config/webpack.dev.js
@@ -0,0 +1,37 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const commonConfig = require('./webpack.common.js');
+const helpers = require('./helpers');
+const path = require('path');
+
+module.exports = webpackMerge(commonConfig, {
+
+ devtool: 'cheap-module-eval-source-map',
+
+ output: {
+ path: helpers.root('dist'),
+ filename: '[name].js',
+ chunkFilename: '[id].chunk.js'
+ },
+
+ resolve: {
+ alias: {
+ "ng2-alfresco-core$": path.resolve(__dirname, '../../ng2-alfresco-core/index.ts'),
+ "ng2-alfresco-datatable$": path.resolve(__dirname, '../../ng2-alfresco-datatable/index.ts'),
+ "ng2-activiti-tasklist$": path.resolve(__dirname, '../../ng2-activiti-tasklist/index.ts')
+ },
+ extensions: ['.ts', '.js'],
+ modules: [path.resolve(__dirname, '../node_modules')]
+ },
+
+ plugins: [
+ new webpack.NoEmitOnErrorsPlugin(),
+ new ExtractTextPlugin('[name].[hash].css'),
+ new webpack.LoaderOptionsPlugin({
+ htmlLoader: {
+ minimize: false // workaround for ng2
+ }
+ })
+ ]
+});
diff --git a/ng2-components/ng2-activiti-tasklist/demo/config/webpack.prod.js b/ng2-components/ng2-activiti-tasklist/demo/config/webpack.prod.js
new file mode 100644
index 0000000000..f3bf52c1dd
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/config/webpack.prod.js
@@ -0,0 +1,65 @@
+const webpack = require('webpack');
+const webpackMerge = require('webpack-merge');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const commonConfig = require('./webpack.common.js');
+const helpers = require('./helpers');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+
+const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
+
+const alfrescoLibs = [
+ 'ng2-activiti-tasklist'
+];
+
+module.exports = webpackMerge(commonConfig, {
+
+ devtool: 'source-map',
+
+ output: {
+ path: helpers.root('dist'),
+ publicPath: '/',
+ filename: '[name].[hash].js',
+ chunkFilename: '[id].[hash].chunk.js'
+ },
+
+ resolve: {
+ extensions: ['.ts', '.js'],
+ modules: [helpers.root('node_modules')]
+ },
+
+ plugins: [
+ new CopyWebpackPlugin([
+ ... alfrescoLibs.map(lib => {
+ return {
+ context: `node_modules/${lib}/bundles/assets/` ,
+ from: '**/*',
+ to: `assets/`
+ }
+ })
+ ]),
+ new webpack.NoEmitOnErrorsPlugin(),
+ new webpack.optimize.UglifyJsPlugin({ // https://github.com/angular/angular/issues/10618
+ mangle: {
+ keep_fnames: true
+ },
+ compress: {
+ warnings: false
+ },
+ output: {
+ comments: false
+ },
+ sourceMap: true
+ }),
+ new ExtractTextPlugin('[name].[hash].css'),
+ new webpack.DefinePlugin({
+ 'process.env': {
+ 'ENV': JSON.stringify(ENV)
+ }
+ }),
+ new webpack.LoaderOptionsPlugin({
+ htmlLoader: {
+ minimize: false // workaround for ng2
+ }
+ })
+ ]
+});
diff --git a/ng2-components/ng2-activiti-tasklist/demo/index.html b/ng2-components/ng2-activiti-tasklist/demo/index.html
index eff28149d9..94acaac38b 100644
--- a/ng2-components/ng2-activiti-tasklist/demo/index.html
+++ b/ng2-components/ng2-activiti-tasklist/demo/index.html
@@ -6,47 +6,8 @@
Alfresco Angular 2 Activiti Tasks - Demo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
diff --git a/ng2-components/ng2-activiti-tasklist/demo/package.json b/ng2-components/ng2-activiti-tasklist/demo/package.json
index 81f721541c..f9f3a18bf4 100644
--- a/ng2-components/ng2-activiti-tasklist/demo/package.json
+++ b/ng2-components/ng2-activiti-tasklist/demo/package.json
@@ -3,19 +3,16 @@
"description": "Alfresco Angular2 Task List Component - Demo",
"version": "0.1.0",
"author": "Alfresco Software, Ltd.",
- "main": "index.js",
"scripts": {
- "clean": "npm run clean-build && rimraf dist node_modules typings dist",
- "clean-build" : "rimraf 'src/{,**/}**.js' 'src/{,**/}**.js.map' 'src/{,**/}**.d.ts'",
- "postinstall": "npm run build",
- "start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ",
- "server": "wsrv -o -s -l",
- "build": "npm run tslint && npm run clean-build && npm run tsc",
- "build:w": "npm run tslint && rimraf dist && npm run tsc:w",
- "travis": "npm link ng2-alfresco-core ng2-alfresco-datatable ng2-activiti-form ng2-activiti-tasklist",
- "tsc": "tsc",
- "tsc:w": "tsc -w",
- "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts -e '{,**/}**.d.ts'"
+ "build": "rimraf dist && npm run webpack -- --config config/webpack.prod.js --progress --profile --bail",
+ "build:dev": "rimraf dist && npm run webpack -- --config config/webpack.dev.js --progress --profile --bail",
+ "start:dist": "wsrv -s dist/ -p 3000 -a 0.0.0.0",
+ "start": "npm run webpack-dev-server -- --config config/webpack.prod.js --progress --content-base app/",
+ "start:dev": "npm run webpack-dev-server -- --config config/webpack.dev.js --progress --content-base app/",
+ "clean": "npm run clean-build && rimraf dist node_modules typings dist",
+ "clean-build": "rimraf 'app/{,**/}**.js' 'app/{,**/}**.js.map' 'app/{,**/}**.d.ts'",
+ "webpack-dev-server": "node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
+ "webpack": "webpack"
},
"license": "Apache-2.0",
"dependencies": {
@@ -30,11 +27,11 @@
"@angular/router": "~4.0.0",
"@angular/material": "2.0.0-beta.1",
- "alfresco-js-api": "~1.5.0",
+ "alfresco-js-api": "~1.6.0",
"core-js": "2.4.1",
"hammerjs": "2.0.8",
- "ng2-alfresco-core": "1.5.0",
- "ng2-translate": "5.0.0",
+ "ng2-alfresco-core": "1.6.0",
+ "@ngx-translate/core": "^7.0.0",
"reflect-metadata": "0.1.10",
"rxjs": "5.1.0",
"systemjs": "0.19.27",
@@ -47,33 +44,67 @@
"material-design-lite": "1.2.1",
"moment": "2.15.1",
"md-date-time-picker": "2.2.0",
- "ng2-alfresco-datatable": "1.5.0",
- "ng2-activiti-tasklist": "1.5.0"
+ "ng2-alfresco-datatable": "1.6.0",
+ "ng2-activiti-tasklist": "1.6.0"
},
"devDependencies": {
- "@types/jasmine": "^2.2.33",
- "@types/node": "^6.0.42",
- "concurrently": "^2.2.0",
- "license-check": "1.1.5",
- "rimraf": "2.5.2",
- "tslint": "3.15.1",
- "typescript": "^2.0.2",
- "wsrv": "^0.1.5"
+ "@types/hammerjs": "^2.0.34",
+ "@types/jasmine": "2.5.35",
+ "@types/node": "6.0.45",
+ "angular2-template-loader": "^0.6.2",
+ "autoprefixer": "^6.5.4",
+ "copy-webpack-plugin": "^4.0.1",
+ "css-loader": "^0.23.1",
+ "css-to-string-loader": "^0.1.2",
+ "cssnano": "^3.8.1",
+ "extract-text-webpack-plugin": "^2.0.0-rc.3",
+ "file-loader": "0.11.1",
+ "html-loader": "^0.4.4",
+ "html-webpack-plugin": "^2.28.0",
+ "istanbul-instrumenter-loader": "0.2.0",
+ "jasmine-ajax": "^3.2.0",
+ "jasmine-core": "2.4.1",
+ "karma": "^0.13.22",
+ "karma-chrome-launcher": "~1.0.1",
+ "karma-coverage": "^1.1.1",
+ "karma-jasmine": "~1.0.2",
+ "karma-jasmine-ajax": "^0.1.13",
+ "karma-jasmine-html-reporter": "0.2.0",
+ "karma-mocha-reporter": "^2.2.2",
+ "karma-remap-istanbul": "^0.6.0",
+ "karma-sourcemap-loader": "^0.3.7",
+ "karma-systemjs": "^0.16.0",
+ "karma-webpack": "^2.0.2",
+ "loader-utils": "^1.1.0",
+ "merge-stream": "^1.0.1",
+ "null-loader": "^0.1.1",
+ "package-json-merge": "0.0.1",
+ "raw-loader": "^0.5.1",
+ "remap-istanbul": "^0.6.3",
+ "rimraf": "^2.5.4",
+ "run-sequence": "^1.2.2",
+ "script-loader": "0.7.0",
+ "source-map-loader": "^0.1.6",
+ "style-loader": "^0.13.1",
+ "systemjs-builder": "^0.15.34",
+ "to-string-loader": "^1.1.4",
+ "traceur": "^0.0.91",
+ "ts-loader": "^2.0.0",
+ "ts-node": "^1.7.0",
+ "tslint": "^4.4.2",
+ "tslint-loader": "^3.3.0",
+ "typescript": "^2.1.6",
+ "webpack": "^2.2.1",
+ "webpack-dev-server": "^2.3.0",
+ "webpack-merge": "2.6.1",
+ "wsrv": "^0.1.7",
+ "node-sass": "^3.13.1",
+ "sass-loader": "6.0.2"
},
"keywords": [
"angular2",
"typescript"
],
- "license-check-config": {
- "src": [
- "**/*.js",
- "**/*.ts",
- "!/**/coverage/**/*",
- "!/**/demo/**/*",
- "!/**/node_modules/**/*",
- "!/**/typings/**/*",
- "!*.js"
- ],
"contributors": [
{
"name": "Maurizio Vitale",
@@ -83,10 +114,5 @@
"name": "Eugenio Romano",
"email": "eugenio.romano@alfresco.com"
}
- ],
- "path": "assets/license_header.txt",
- "blocking": true,
- "logInfo": false,
- "logError": true
- }
+ ]
}
diff --git a/ng2-components/ng2-activiti-tasklist/demo/src/polyfills.ts b/ng2-components/ng2-activiti-tasklist/demo/src/polyfills.ts
new file mode 100644
index 0000000000..541adc72dc
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/src/polyfills.ts
@@ -0,0 +1,17 @@
+import 'core-js/es6';
+import 'core-js/es7/reflect';
+import 'intl';
+
+require('zone.js/dist/zone'); // IE 8-11
+require('element.scrollintoviewifneeded-polyfill'); // IE/FF
+
+if (process.env.ENV === 'production') {
+ // Production
+
+} else {
+ // Development
+
+ Error['stackTraceLimit'] = Infinity;
+
+ require('zone.js/dist/long-stack-trace-zone');
+}
diff --git a/ng2-components/ng2-activiti-tasklist/demo/src/vendor.ts b/ng2-components/ng2-activiti-tasklist/demo/src/vendor.ts
new file mode 100644
index 0000000000..f1c936d5e0
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/src/vendor.ts
@@ -0,0 +1,26 @@
+// Angular
+import '@angular/platform-browser';
+import '@angular/platform-browser-dynamic';
+import '@angular/core';
+import '@angular/common';
+import '@angular/http';
+import '@angular/router';
+
+// RxJS
+import 'rxjs';
+
+// hammerjs
+import 'hammerjs';
+
+// Alfresco
+import 'alfresco-js-api';
+import 'ng2-activiti-tasklist';
+
+// Google Material Design Lite
+import 'material-design-lite/material.js';
+import 'material-design-lite/dist/material.orange-blue.min.css';
+import 'material-design-icons/iconfont/material-icons.css';
+
+// Polyfill(s) for dialogs
+require('script-loader!dialog-polyfill/dialog-polyfill');
+import 'dialog-polyfill/dialog-polyfill.css';
diff --git a/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js b/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js
deleted file mode 100644
index bf04333fc7..0000000000
--- a/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * System configuration for Angular 2 samples
- * Adjust as necessary for your application needs.
- */
-(function (global) {
- System.config({
- paths: {
- // paths serve as alias
- 'npm:': 'node_modules/'
- },
- // map tells the System loader where to look for things
- map: {
- // our app is within the app folder
- app: 'src',
- // angular bundles
- '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
- '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
- '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
- '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
- '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
- '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
- '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
- '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
- '@angular/material': 'npm:@angular/material/bundles/material.umd.js',
- '@angular/animations': 'npm:@angular/animations/bundles/animations.umd.min.js',
- '@angular/animations/browser':'npm:@angular/animations/bundles/animations-browser.umd.js',
- '@angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js',
-
- // other libraries
- 'moment' : 'npm:moment/min/moment.min.js',
- 'rxjs': 'npm:rxjs',
- 'ng2-translate': 'npm:ng2-translate',
- 'alfresco-js-api': 'npm:alfresco-js-api/dist',
- 'ng2-alfresco-core': 'npm:ng2-alfresco-core',
- 'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable',
- 'ng2-activiti-form': 'npm:ng2-activiti-form',
- 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist'
- },
- // packages tells the System loader how to load when no filename and/or no extension
- packages: {
- app: {
- main: './main.js',
- defaultExtension: 'js'
- },
- rxjs: {
- defaultExtension: 'js'
- },
- 'moment': { defaultExtension: 'js' },
- 'ng2-translate': { defaultExtension: 'js' },
- 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'},
- 'ng2-alfresco-core': { main: './bundles/ng2-alfresco-core.js', defaultExtension: 'js'},
- 'ng2-alfresco-datatable': { main: './bundles/ng2-alfresco-datatable.js', defaultExtension: 'js'},
- 'ng2-activiti-form': { main: './bundles/ng2-activiti-form.js', defaultExtension: 'js'},
- 'ng2-activiti-tasklist': { main: './bundles/ng2-activiti-tasklist.js', defaultExtension: 'js'}
- }
- });
-})(this);
diff --git a/ng2-components/ng2-activiti-tasklist/demo/tsconfig.json b/ng2-components/ng2-activiti-tasklist/demo/tsconfig.json
index 524fcfda8e..9dd374392e 100644
--- a/ng2-components/ng2-activiti-tasklist/demo/tsconfig.json
+++ b/ng2-components/ng2-activiti-tasklist/demo/tsconfig.json
@@ -1,5 +1,6 @@
{
"compilerOptions": {
+ "baseUrl": ".",
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
@@ -16,6 +17,7 @@
"noFallthroughCasesInSwitch": true,
"removeComments": true,
"declaration": true,
+ "outDir": "./dist",
"lib": [
"es2015",
"dom"
@@ -23,7 +25,9 @@
"suppressImplicitAnyIndexErrors": true
},
"exclude": [
- "node_modules"
+ "demo",
+ "node_modules",
+ "dist"
],
"angularCompilerOptions": {
"strictMetadataEmit": false,
diff --git a/ng2-components/ng2-activiti-tasklist/demo/tslint.json b/ng2-components/ng2-activiti-tasklist/demo/tslint.json
index 36e753c92c..f5ca6283b5 100644
--- a/ng2-components/ng2-activiti-tasklist/demo/tslint.json
+++ b/ng2-components/ng2-activiti-tasklist/demo/tslint.json
@@ -1,124 +1,118 @@
{
- "rules": {
- "align": [
- true,
- "parameters",
- "arguments",
- "statements"
- ],
- "ban": false,
- "class-name": true,
- "comment-format": [
- true,
- "check-space",
- "check-lowercase"
- ],
- "curly": true,
- "eofline": true,
- "forin": true,
- "indent": [
- true,
- "spaces"
- ],
- "interface-name": false,
- "jsdoc-format": true,
- "label-position": true,
- "label-undefined": true,
- "max-line-length": [
- true,
- 180
- ],
- "member-ordering": [
- true,
- "public-before-private",
- "static-before-instance",
- "variables-before-functions"
- ],
- "no-any": false,
- "no-arg": true,
- "no-bitwise": false,
- "no-conditional-assignment": true,
- "no-consecutive-blank-lines": true,
- "no-console": [
- true,
- "debug",
- "info",
- "time",
- "timeEnd",
- "trace"
- ],
- "no-construct": true,
- "no-constructor-vars": false,
- "no-debugger": true,
- "no-duplicate-key": true,
- "no-duplicate-variable": true,
- "no-empty": false,
- "no-eval": true,
- "no-inferrable-types": false,
- "no-internal-module": true,
- "no-require-imports": false,
- "no-shadowed-variable": true,
- "no-switch-case-fall-through": true,
- "no-trailing-whitespace": true,
- "no-unreachable": true,
- "no-unused-expression": true,
- "no-unused-variable": true,
- "no-use-before-declare": true,
- "no-var-keyword": true,
- "no-var-requires": true,
- "object-literal-sort-keys": false,
- "one-line": [
- true,
- "check-open-brace",
- "check-catch",
- "check-else",
- "check-whitespace"
- ],
- "quotemark": [
- true,
- "single",
- "avoid-escape"
- ],
- "radix": true,
- "semicolon": true,
- "switch-default": true,
- "trailing-comma": [
- true,
- {
- "multiline": "never",
- "singleline": "never"
- }
- ],
- "triple-equals": [
- true,
- "allow-null-check"
- ],
- "typedef": false,
- "typedef-whitespace": [
- true,
- {
- "call-signature": "nospace",
- "index-signature": "nospace",
- "parameter": "nospace",
- "property-declaration": "nospace",
- "variable-declaration": "nospace"
- }
- ],
- "use-strict": false,
- "variable-name": [
- true,
- "check-format",
- "allow-leading-underscore",
- "ban-keywords"
- ],
- "whitespace": [
- true,
- "check-branch",
- "check-operator",
- "check-separator",
- "check-type",
- "check-module",
- "check-decl"
- ]
- }
+ "rules": {
+ "align": [
+ true,
+ "parameters",
+ "statements"
+ ],
+ "ban": false,
+ "class-name": true,
+ "comment-format": [
+ true,
+ "check-space"
+ ],
+ "curly": true,
+ "eofline": true,
+ "forin": true,
+ "indent": [
+ true,
+ "spaces"
+ ],
+ "interface-name": false,
+ "jsdoc-format": true,
+ "label-position": true,
+ "max-line-length": [
+ true,
+ 180
+ ],
+ "member-ordering": [
+ true,
+ "static-before-instance",
+ "variables-before-functions"
+ ],
+ "no-any": false,
+ "no-arg": true,
+ "no-bitwise": false,
+ "no-conditional-assignment": true,
+ "no-consecutive-blank-lines": true,
+ "no-console": [
+ true,
+ "debug",
+ "info",
+ "time",
+ "timeEnd",
+ "trace"
+ ],
+ "no-construct": true,
+ "no-constructor-vars": false,
+ "no-debugger": true,
+ "no-duplicate-variable": true,
+ "no-empty": false,
+ "no-eval": true,
+ "no-inferrable-types": false,
+ "no-internal-module": true,
+ "no-require-imports": false,
+ "no-shadowed-variable": true,
+ "no-switch-case-fall-through": true,
+ "no-trailing-whitespace": true,
+ "no-unused-expression": true,
+ "no-unused-variable": true,
+ "no-use-before-declare": true,
+ "no-var-keyword": true,
+ "no-var-requires": false,
+ "object-literal-sort-keys": false,
+ "one-line": [
+ true,
+ "check-open-brace",
+ "check-catch",
+ "check-else",
+ "check-whitespace"
+ ],
+ "quotemark": [
+ true,
+ "single",
+ "avoid-escape"
+ ],
+ "radix": true,
+ "semicolon": true,
+ "switch-default": true,
+ "trailing-comma": [
+ true,
+ {
+ "multiline": "never",
+ "singleline": "never"
+ }
+ ],
+ "triple-equals": [
+ true,
+ "allow-null-check"
+ ],
+ "typedef": false,
+ "typedef-whitespace": [
+ true,
+ {
+ "call-signature": "nospace",
+ "index-signature": "nospace",
+ "parameter": "nospace",
+ "property-declaration": "nospace",
+ "variable-declaration": "nospace"
+ }
+ ],
+ "use-strict": false,
+ "variable-name": [
+ true,
+ "check-format",
+ "allow-leading-underscore",
+ "ban-keywords"
+ ],
+ "whitespace": [
+ true,
+ "check-branch",
+ "check-operator",
+ "check-separator",
+ "check-type",
+ "check-module",
+ "check-decl"
+ ]
+ }
}
diff --git a/ng2-components/ng2-activiti-tasklist/demo/webpack.config.js b/ng2-components/ng2-activiti-tasklist/demo/webpack.config.js
new file mode 100644
index 0000000000..26df33c5f6
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/demo/webpack.config.js
@@ -0,0 +1 @@
+module.exports = require('./config/webpack.dev.js');
diff --git a/ng2-components/ng2-activiti-tasklist/docs/assets/activiti_people.png b/ng2-components/ng2-activiti-tasklist/docs/assets/activiti_people.png
new file mode 100644
index 0000000000000000000000000000000000000000..42c7c41728f2591e3c30d5a254a6b3fdedb560b3
GIT binary patch
literal 14826
zcmch;WmK2Z*Y|mmBGMo&B~sF@AWDdoh;#`^OLun&2uOFMfPjEBD2;R~AYIZ8q99VU
z`QK~ZGtZh?&$?$`%ueqWPCDGWXFWw>tzGi8q@=2blEXqZh~on~
zIt~`)O6=1*42RS6avo`$faQRH?i@+s+g`_W^BK`X^Lws)UP66)$L-`|Swm}wC+8RT
zS&y-D3XRG&*-66(Oe-h1?K3kNO}PCCB76Lz5;MPtkAt}wO(0>;q$xgObu>XvnIW!#xHrySTwKVg5z+r%4i67U^DF1!
z_Ye*3p{t#~RbNCOl!#PseSQCB-DLs?GP6qpZU(6$E7Y~s&y8mL|sCjK!l6PX7LNGvz$ke`RA+T2z!O;>sD-mGD-r>EzMmsnCCu7V})++O%>o&CFtieKOJ9=iWpzBoU9c>a52adDAg
zx6QOtOQSnt!9SpPh>?w36n`6*V{
zpE@ID)6q7S0!3UrJWMVMYHCsEO;z+Q0d2Qa!{(C#+aQUT`uh5hA3uKjbRhT!*^d$(
zvL6o=e{PNyCvoX>vaw;aQyjmwv~B$JW3<-&Xj?0)>#*$xS5UT(5eXStnSS#Hp|*P~
zQ+=1s2T^T4T%@A1()aRop0D`X!7Rl}e+pk%SlG$Q32As>@8Z_th6){o3-4M64?IW5HN0#8XFr&cpNSF#FdnkAWF}l(-Vay
za_QqCVp)5=33oFxGVJZ`VIT^QzuSUuu#?Ii2YhGh6$!H4ZjyX!!HP5t~Z++?-zX
z{N+;A!~B8*`MmEfIfUpjad9dyUSy=EezuzAEgQG2))o;FIq~w5mhSwp3Aa968#+Ed
zHZwEh()>jCsUasPr?Jud{NEoQ9v(C_G-qdLZ*On7^$jvk>S_P15089(eN9YEV98(~
zfkmRxTBYWfsBaAqM{BaL9=Ht*3|Nkr?tm$kmFa&nXx*8vJv}`YvYz7qmL?!9?Dl7K
ztf{H#p5v;UXy)?-3QEeN4PEH6SPGD1ey3iU3hQEB^2EW7ZhJ7>C-|uuk;~GBA_V%`M
zqK2v}$<3<|n5_DLKEF=R;^X7rzJ2@V%^RUPH=|MR-Y{Zja3bA{cAD%zCM(T^tR_Br
z{MlSU<$sEgi;LnnvVr4;$NDCh<;~C<{D+!`#@=KlGZRyOO-*9^Vz+U{)_9rk$x4!y
zpa>IF=ZZshO-<9k&0>FC4^f(s_Ex8OYP=8`#$RrtA$YeeUcCbAf`={0^7(aoe(&Br
zcX#(|c+_>yTcqLyG*Mkk2WS7roADyvo_ICAdlL0yY>Y#vhW+l{yLE#?HZvaz3*C3?
z*Dx_L#ZH#v{QXh#N9