@@ -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 10cd6a98c4d..684c609d369 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 5ded9b60331..8aab05dac7b 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 ff5c7bb73b4..d8ce2081b0c 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 b2887bbe083..7931a49de10 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 118f3daf752..edcb4f4f08b 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 d6ce5d8d785..4ed1925a8c5 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 e6882a18bde..06919386d7a 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 e0d0b983d49..54f18a3db26 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 dafc83f9c17..4231dcebc9d 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 e2c229c4cc2..c43e209c616 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 83aedefe774..2e677061fd9 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 59a77b19cd7..bb97d0b59ed 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 2c63ca5268f..2af652eb0de 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 799829fde4a..439e9a3d781 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 172e9b0d57b..c95723bd768 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 214304e06f8..65ab9cfd93a 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 0b2046438dc..d90a5971085 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 490f764680f..18a98278868 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';
-
-declare var componentHandler: any;
+import { FormService } from './../../services/form.service';
+
+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 194c510cb25..9950b68eef7 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 b4f606b49fa..6cdddbefd14 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;
-
- beforeEach(() => {
- injector = ReflectiveInjector.resolveAndCreate([
- AlfrescoSettingsService,
- AlfrescoApiService,
- AlfrescoAuthenticationService,
- EcmModelService,
- StorageService,
- FormService,
- LogService
- ]);
- });
+ let service: FormService;
+ let apiService: AlfrescoApiService;
+ let logService: LogService;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ CoreModule
+ ],
+ providers: [
+ EcmModelService,
+ FormService
+ ]
+ }).compileComponents();
+ }));
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 4a789cd5f31..61ff29f94e1 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 42e2a54cc86..b5b9140c06a 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 44d7d150722..b97d267dca8 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 00000000000..efa49b2755a
--- /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 b6f4929fa4f..85484e61b07 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 8dd503835e2..b87321ec782 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 cb0b8b2890e..a30cc5773bb 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 7c9581e2c40..92afb508c57 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Displays lists of process instances both active and completed, using any defined process filter, and
-render details of any chosen instance.
+# Activiti Process List Component
+
+
+
+
+
+- [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).
-## Install
-
-Follow the 3 steps below:
-
-1. Npm
-
- ```sh
- npm install ng2-activiti-processlist --save
- ```
-
-2. Html
-
- Include these dependencies in your index.html page:
-
- ```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+> 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)
-
-
-
-
-
-
-
-
-
-
- ```
-
-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
-
-This component renders a list containing all the process instances matched by the parameters specified.
+## Install
-```html
-
+```sh
+npm install ng2-activiti-processlist
```
-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 {
-}
+## Activiti Process Instance List
-platformBrowserDynamic().bootstrapModule(AppModule);
+This component renders a list containing all the process instances matched by the parameters specified.
+**app.component.html**
+```html
+
+
```
-#### 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 | Description |
-| --- | --- |
-| `processInstanceId` | (required): The numeric ID of the process instance to display |
-
-#### Events
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (required): The numeric ID of the process instance to display |
+### 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 |
+| 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 |
-### 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
-
-
-| Name | Description |
-| --- | --- |
-| `processInstance` | (required): Full details of the process instance to display information about |
+### Properties
-#### Events
+| 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 |
| --- | --- |
-| `processCancelled` | Emitted when the Cancel Process button shown by the component is clicked |
+| showProcessDiagram | Raised when the show diagram button 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 | 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 |
+| 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
+### Events
| Name | Description |
| --- | --- |
-| `taskFormCompletedEmitter` | Emitted when the form associated with an active task is completed from within the component |
+| taskFormCompletedEmitter | Raised 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 | Description |
-| --- | --- |
-| `processInstanceId` | (required): The numeric ID of the process instance to display comments for |
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (**required**): The numeric ID of the process instance to display comments for |
-#### Events
+## Process Attachment List component
-No events are emitted by this component
+This component displays attached documents on a specified process instance
-## Build from sources
+```html
+
+
+```
+![process-attachment-list-sample](docs/assets/process-attachment-list.png)
-Alternatively you can build component from sources with the following commands:
+### Properties
+| Name | Type | Description |
+| --- | --- | -- |
+| processInstanceId | string | (**required**): The ID of the process instance to display |
-```sh
-npm install
-npm run build
-```
+### Events
-### Build the files and keep watching for changes
+| 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 |
-```sh
-$ npm run build:w
-```
+## Create Process Attachment component
-## Running unit tests
+This component displays Upload Component(Drag and Click) to upload the attachment to a specified process instance
-```sh
-npm test
+```html
+
+
```
-### Running unit tests in browser
+![process-create-attachment](docs/assets/process-create-attachment.png)
-```sh
-npm test-browser
-```
+### Properties
-This task rebuilds all the code, runs tslint, license checks and other quality check tools
-before performing unit testing.
+| Name | Type | Description |
+| --- | --- | --- |
+| processInstanceId | string | (**required**): The ID of the process instance to display |
-### Code coverage
+### Events
-```sh
-npm run coverage
-```
+| 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 |
-## Demo
+## Build from sources
-If you want have a demo of how the component works, please check the demo folder :
+You can build component from sources with the following commands:
```sh
-cd demo
npm install
-npm start
+npm run build
```
+> The `build` task rebuilds all the code, runs tslint, license checks
+> and other quality check tools before performing unit testing.
+
## NPM scripts
| Command | Description |
@@ -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 00000000000..52052a022dd
--- /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 52a680e87e4..92bc275d799 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 00000000000..03ae2876656
--- /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 486fed8c159..b85f2f73fde 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 00000000000..a11fa771d6c
--- /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 00000000000..681f8543d0f
--- /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 00000000000..51f2e1232ba
--- /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 00000000000..81fbc96579d
--- /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 fe525218aa5..d52218c9f4b 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 00000000000..0f2d6fc5f31
--- /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 b65aecae941..b30b9cb62bf 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 00000000000..541adc72dc1
--- /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 00000000000..5296ead28fe
--- /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 fb4d4b00b76..00000000000
--- 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 524fcfda8eb..9dd374392e7 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 36e753c92cf..f5ca6283b53 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 00000000000..26df33c5f6c
--- /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 055737baaa5..1ce2699dd1e 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 8c0e83bd7e1..484bfd5d7dc 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 00000000000..187587c9389
--- /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 79140811632..093e329dc04 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 08c6d83361f..531545a8a2b 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 8a63ebb5743..31b70f77faf 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 e9d183b91aa..946682fbe3c 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 17449f34c36..85e97405eee 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 18ca467cf24..dc3535307ee 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 864ff26f1be..cee39f13a2a 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 08407533d88..2ee89d61ef2 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 d1877a47ec6..8f7ce0b23c8 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 c5e9d12de68..adfa62a7d08 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 ed8f578e20f..dad7269fbf7 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 fbc0ab77047..7ce260bc085 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 ffd43c1e3a4..3121e72ffb7 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 b9a051ce6e0..ca729cb39e4 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 00000000000..7371ee42158
--- /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 00000000000..e9ce0c521d6
--- /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 00000000000..36b1241ac63
--- /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 00000000000..b0806da7040
--- /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 00000000000..170e76fd6c0
--- /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 00000000000..f9001080a7c
--- /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 00000000000..191165be6ec
--- /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 00000000000..0c8f1d4cbae
--- /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 f25e4eff867..da3601a1fa8 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 b76a6b5dd21..d08053d4446 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 af4d9b8fb01..e14e98578cc 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 e701144dccf..ea74498be70 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 9bfdb3bf5e3..274f7ca9b15 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 42e2a54cc86..b5b9140c06a 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 e4e4a4e69f3..b97d267dca8 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 00000000000..efa49b2755a
--- /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 b6f4929fa4f..85484e61b07 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 8dd503835e2..b87321ec782 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 cb0b8b2890e..a30cc5773bb 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 aae994f3f86..5c5aaed3180 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).
-## Install
-
-Follow the 3 steps below:
-
-1. Npm
-
- ```sh
- npm install ng2-activiti-tasklist --save
- ```
-
-2. Html
-
- Include these dependencies in your index.html page:
-
- ```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+> 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)
- ```
-
-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) .
+## Install
+```sh
+npm install ng2-activiti-tasklist
+```
-## 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
-
-| Name | Description |
-| --- | --- |
-| `appClick` | Invoked when an app is clicked |
+### Properties
-#### Options
+| 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. |
-| 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. |
+### Events
+| Name | Description |
+| --- | --- |
+| 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
![how-filter-apps](docs/assets/how-filter-apps.png)
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 |
+
+### How filter the activiti task filters
-#### Options
+ ```html
+
+
+```
+
+You can use inside the filterParam one of the following property.
-No options
+### 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,77 +322,153 @@ The AccordionComponent is exposed by the alfresco-core.
![how-create-accordion-menu](docs/assets/how-to-create-accordion-menu.png)
-## 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
-
+
+
```
+![task-attachment-list-sample](docs/assets/task-attachment-list.png)
-## Build from sources
+### Properties
-Alternatively you can build component from sources with the following commands:
+| Name | Type | Description |
+| --- | --- | --- |
+| taskId | string | (**required**): The ID of the task to display |
+### Events
-```sh
-npm install
-npm run build
+| 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
+
+
```
-### Build the files and keep watching for changes
+![task-create-attachment](docs/assets/task-create-attachment.png)
-```sh
-$ npm run build:w
+### 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
+
+
```
-## Running unit tests
+### Properties
-```sh
-npm test
+| Name | Type | Default | Description |
+| --- | --- | --- | --- |
+| taskDetails | [TaskDetailsModel](#taskdetailsmodel) | | (**required**) The task details related to the task. |
+| formName | string | | The name of the form. |
+
+![adf-task-header](docs/assets/adf-task-header.png)
+
+### 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
-### Running unit tests in browser
+This component displays involved users to a specified task
-```sh
-npm test-browser
+```html
+
+
```
-This task rebuilds all the code, runs tslint, license checks and other quality check tools
-before performing unit testing.
+![activiti-people](docs/assets/activiti_people.png)
-### Code coverage
+### Properties
-```sh
-npm run coverage
-```
+| 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 |
-## Demo
+#### Events
+
+No Events
-If you want have a demo of how the component works, please check the demo folder :
+## Build from sources
+
+You can build component from sources with the following commands:
```sh
-cd demo
npm install
-npm start
+npm run build
```
+> The `build` task rebuilds all the code, runs tslint, license checks
+> and other quality check tools before performing unit testing.
+
## NPM scripts
| Command | Description |
@@ -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 00000000000..88ec554ad05
--- /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 52a680e87e4..42e5b73ffe1 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 00000000000..03ae2876656
--- /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 486fed8c159..38e396d56e2 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 00000000000..a11fa771d6c
--- /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 00000000000..807cf6f51bf
--- /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 00000000000..e5a81b1a66a
--- /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 00000000000..f3bf52c1ddf
--- /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 eff28149d94..94acaac38b5 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 81f721541c9..f9f3a18bf4b 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 00000000000..541adc72dc1
--- /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 00000000000..f1c936d5e00
--- /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 bf04333fc73..00000000000
--- 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 524fcfda8eb..9dd374392e7 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 36e753c92cf..f5ca6283b53 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 00000000000..26df33c5f6c
--- /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