diff --git a/CHANGELOG.md b/CHANGELOG.md index 71348f3e0..4ee23a890 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# 1.4.19 + +### **Minor Breaking Change** + +* **path resolving for nested form arrays from `1.4.17` has been removed in favor of a more global approach due to impasses** + +### **Features** + +* `parent` property added for `DynamicFormControlModel` via new interface `DynamicFormControlPath` +* `getPath()` method added to `DynamicFormService` (see [#414](https://github.com/udos86/ng2-dynamic-forms/issues/414)) + + # 1.4.18 ### **Minor Breaking Change** diff --git a/example/styles.css b/example/styles.css index 1cde62708..680fdb2cb 100644 --- a/example/styles.css +++ b/example/styles.css @@ -1,3 +1,5 @@ +@import '../node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css'; + * { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 100%; diff --git a/example/systemjs.config.js b/example/systemjs.config.js index 8b37d8f35..2a8bca79c 100644 --- a/example/systemjs.config.js +++ b/example/systemjs.config.js @@ -60,6 +60,7 @@ "primeng": "npm:primeng", "rxjs": "npm:rxjs", "text-mask-core": "npm:text-mask-core", + "tslib": "npm:tslib/tslib.js" }; var packages = { diff --git a/karma-test-shim.js b/karma-test-shim.js index 83e1809a7..14d0063d3 100644 --- a/karma-test-shim.js +++ b/karma-test-shim.js @@ -74,7 +74,8 @@ System.config({ "ionic-angular": "npm:ionic-angular/bundles/ionic.umd.js", "primeng": "npm:primeng", "rxjs": "npm:rxjs", - "text-mask-core": "npm:text-mask-core" + "text-mask-core": "npm:text-mask-core", + "tslib": "npm:tslib/tslib.js" }, packages: { diff --git a/karma.conf.js b/karma.conf.js index 6a366a580..fab9f8192 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -71,6 +71,8 @@ module.exports = function (config) { {pattern: "node_modules/primeng/**/*.js", included: false, watched: false}, {pattern: "node_modules/primeng/**/*.js.map", included: false, watched: false}, + {pattern: "node_modules/tslib/**/*.js", included: false, watched: false}, + {pattern: "dist/@ng2-dynamic-forms/**/*.js", included: false, watched: false}, {pattern: "dist/@ng2-dynamic-forms/**/*.js.map", included: false, watched: false}, diff --git a/modules/core/src/model/dynamic-form-control.model.ts b/modules/core/src/model/dynamic-form-control.model.ts index 7c0d25228..5e45aecea 100644 --- a/modules/core/src/model/dynamic-form-control.model.ts +++ b/modules/core/src/model/dynamic-form-control.model.ts @@ -28,6 +28,26 @@ export interface ClsConfig { grid?: Cls; } +export function createEmptyClsConfig(): Cls { + + return { + container: "", + control: "", + errors: "", + group: "", + hint: "", + host: "", + label: "" + }; +} + +export interface DynamicFormControlPath { + + id?: string; + index?: number; + parent: DynamicFormControlPath; +} + export interface DynamicFormControlModelConfig { disabled?: boolean; @@ -37,7 +57,7 @@ export interface DynamicFormControlModelConfig { relation?: DynamicFormControlRelationGroup[]; } -export abstract class DynamicFormControlModel { +export abstract class DynamicFormControlModel implements DynamicFormControlPath { @serializable() cls: any = {}; @serializable("disabled") _disabled: boolean; @@ -46,6 +66,7 @@ export abstract class DynamicFormControlModel { @serializable() id: string; @serializable() label: string | null; @serializable() name: string; + parent: DynamicFormControlPath | null = null; @serializable() relation: DynamicFormControlRelationGroup[]; abstract readonly type: string; @@ -56,8 +77,8 @@ export abstract class DynamicFormControlModel { throw new Error("string id must be specified for DynamicFormControlModel"); } - this.cls.element = Utils.merge(cls.element, {container: "", control: "", errors: "", group: "", hint: "", host: "", label: ""}); - this.cls.grid = Utils.merge(cls.grid, {container: "", control: "", errors: "", group: "", hint: "", host: "", label: ""}); + this.cls.element = Utils.merge(cls.element, createEmptyClsConfig()); + this.cls.grid = Utils.merge(cls.grid, createEmptyClsConfig()); this._disabled = Utils.isBoolean(config.disabled) ? config.disabled : false; this.errorMessages = config.errorMessages || null; @@ -70,14 +91,14 @@ export abstract class DynamicFormControlModel { this.disabledUpdates.subscribe((value: boolean) => this.disabled = value); } - set disabled(value: boolean) { - this._disabled = value; - } - get disabled(): boolean { return this._disabled; } + set disabled(value: boolean) { + this._disabled = value; + } + get hasErrorMessages(): boolean { return Utils.isDefined(this.errorMessages); } diff --git a/modules/core/src/model/form-array/dynamic-form-array.model.spec.ts b/modules/core/src/model/form-array/dynamic-form-array.model.spec.ts index 694d137e9..4a01b4ab0 100644 --- a/modules/core/src/model/form-array/dynamic-form-array.model.spec.ts +++ b/modules/core/src/model/form-array/dynamic-form-array.model.spec.ts @@ -53,18 +53,6 @@ describe("DynamicFormArrayModel test suite", () => { expect(model.get(1) instanceof DynamicFormArrayGroupModel).toBe(true); }); - it("should resolve array group path", () => { - - let parent = model.get(0), - groupModel = (parent.get(1) as DynamicFormArrayModel).get(0); - - expect(groupModel.path).toEqual(["nestedFormArray", "0"]); - - groupModel.parent = parent; - - expect(groupModel.path).toEqual([parent.context.id, parent.index.toString(), "nestedFormArray", "0"]); - }); - it("should add another form array group", () => { model.addGroup(); diff --git a/modules/core/src/model/form-array/dynamic-form-array.model.ts b/modules/core/src/model/form-array/dynamic-form-array.model.ts index 1208d4712..42d1f5f25 100644 --- a/modules/core/src/model/form-array/dynamic-form-array.model.ts +++ b/modules/core/src/model/form-array/dynamic-form-array.model.ts @@ -1,20 +1,19 @@ import { DynamicFormControlModel, DynamicFormControlModelConfig, + DynamicFormControlPath, DynamicValidatorsMap, - ClsConfig + ClsConfig, } from "../dynamic-form-control.model"; import { serializable, serialize } from "../../decorator/serializable.decorator"; import { Utils } from "../../utils/core.utils"; -export class DynamicFormArrayGroupModel { +export class DynamicFormArrayGroupModel implements DynamicFormControlPath { context: DynamicFormArrayModel; @serializable() group: DynamicFormControlModel[]; @serializable() index: number | null; - private _parent: DynamicFormArrayGroupModel | null = null; - constructor(context: DynamicFormArrayModel, group: DynamicFormControlModel[] = [], index: number = null) { this.context = context; @@ -22,26 +21,8 @@ export class DynamicFormArrayGroupModel { this.index = index; } - get parent(): DynamicFormArrayGroupModel { - return this._parent; - } - - set parent(parent: DynamicFormArrayGroupModel) { - this._parent = parent; - } - - get path(): string[] { - - let path: string[] = [], - groupModel: DynamicFormArrayGroupModel = this; - - while (groupModel) { - - path.unshift(groupModel.context.id, groupModel.index.toString()); - groupModel = groupModel.parent; - } - - return path; + get parent(): DynamicFormArrayModel { + return this.context; } get(index: number): DynamicFormControlModel { diff --git a/modules/core/src/model/form-group/dynamic-form-group.model.spec.ts b/modules/core/src/model/form-group/dynamic-form-group.model.spec.ts index 1d8307faa..d882772c8 100644 --- a/modules/core/src/model/form-group/dynamic-form-group.model.spec.ts +++ b/modules/core/src/model/form-group/dynamic-form-group.model.spec.ts @@ -27,12 +27,6 @@ describe("DynamicFormGroupModel test suite", () => { expect(model.validator).toBeDefined(); }); - it("should throw when no group array is specified", () => { - - expect(() => new DynamicFormGroupModel({id: "test"})) - .toThrow(new Error("group array must be specified for DynamicFormGroupModel")); - }); - it("should get the correct DynamicFormControlModel of group", () => { expect(model.get(0) === model.group[0]).toBe(true); diff --git a/modules/core/src/model/form-group/dynamic-form-group.model.ts b/modules/core/src/model/form-group/dynamic-form-group.model.ts index c202a2be0..b8b66f03c 100644 --- a/modules/core/src/model/form-group/dynamic-form-group.model.ts +++ b/modules/core/src/model/form-group/dynamic-form-group.model.ts @@ -34,10 +34,6 @@ export class DynamicFormGroupModel extends DynamicFormControlModel implements Dy super(config, cls); - if (!Array.isArray(config.group)) { - throw new Error("group array must be specified for DynamicFormGroupModel"); - } - this.asyncValidator = config.asyncValidator || null; this.group = Array.isArray(config.group) ? config.group : []; this.legend = config.legend || null; diff --git a/modules/core/src/service/dynamic-form.service.spec.ts b/modules/core/src/service/dynamic-form.service.spec.ts index 051095760..b7253777d 100644 --- a/modules/core/src/service/dynamic-form.service.spec.ts +++ b/modules/core/src/service/dynamic-form.service.spec.ts @@ -40,6 +40,7 @@ describe("DynamicFormService test suite", () => { return new Promise(resolve => setTimeout(() => resolve(true), 0)); } + beforeEach(() => { TestBed.configureTestingModule({ @@ -126,7 +127,11 @@ describe("DynamicFormService test suite", () => { groupFactory: () => { return [ new DynamicInputModel({id: "testFormArrayGroupInput"}), - new DynamicFormArrayModel({id: "testNestedFormArray", groupFactory: () => []}) + new DynamicFormArrayModel({ + id: "testNestedFormArray", groupFactory: () => [ + new DynamicInputModel({id: "testNestedFormArrayGroupInput"}) + ] + }) ]; } } @@ -156,9 +161,11 @@ describe("DynamicFormService test suite", () => { ]; }); + beforeEach(inject([DynamicFormService], (formService: DynamicFormService) => service = formService)); - it("should create create a form group correctly", () => { + + it("should create create a form group", () => { let formGroup = service.createFormGroup(testModel); @@ -178,7 +185,7 @@ describe("DynamicFormService test suite", () => { }); - it("should parse dynamic form JSON correctly", () => { + it("should parse dynamic form JSON", () => { let json = JSON.stringify(testModel), formModel = service.fromJSON(json); @@ -210,7 +217,7 @@ describe("DynamicFormService test suite", () => { }); - it("should find a dynamic form control model by id correctly", () => { + it("should find a dynamic form control model by id", () => { expect(service.findById("testCheckbox", testModel) instanceof DynamicFormControlModel).toBe(true); expect(service.findById("testCheckboxGroup", testModel) instanceof DynamicFormControlModel).toBe(true); @@ -228,7 +235,7 @@ describe("DynamicFormService test suite", () => { }); - it("should find a nested dynamic form control model by id correctly", () => { + it("should find a nested dynamic form control model by id", () => { expect(service.findById("testCheckboxGroup1", testModel) instanceof DynamicFormControlModel).toBe(true); expect(service.findById("testCheckboxGroup2", testModel) instanceof DynamicFormControlModel).toBe(true); @@ -236,6 +243,18 @@ describe("DynamicFormService test suite", () => { }); + it("should resolve array group path", () => { + + service.createFormGroup(testModel); + + let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, + nestedModel = (model.get(0).get(1) as DynamicFormArrayModel).get(0); + + expect(service.getPath(model)).toEqual(["testFormArray"]); + expect(service.getPath(nestedModel)).toEqual(["testFormArray", "0", "testNestedFormArray", "0"]); + }); + + it("should add a form control to an existing form group", () => { let formGroup = service.createFormGroup(testModel), @@ -268,9 +287,11 @@ describe("DynamicFormService test suite", () => { expect(formGroup.controls[newModel1.id]).toBeTruthy(); expect(testModel[4] === newModel1).toBe(true); + expect(service.getPath(testModel[4])).toEqual(["newInput1"]); expect((formGroup.controls["testFormGroup"] as FormGroup).controls[newModel2.id]).toBeTruthy(); expect(nestedFormGroupModel.get(0) === newModel2).toBe(true); + expect(service.getPath(nestedFormGroupModel.get(0))).toEqual(["testFormGroup", "newInput2"]); }); @@ -322,7 +343,7 @@ describe("DynamicFormService test suite", () => { }); - it("should create a form array correctly", () => { + it("should create a form array", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray; @@ -336,7 +357,7 @@ describe("DynamicFormService test suite", () => { }); - it("should add a form array group correctly", () => { + it("should add a form array group", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray = service.createFormArray(model); @@ -347,7 +368,7 @@ describe("DynamicFormService test suite", () => { }); - it("should insert a form array group correctly", () => { + it("should insert a form array group", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray = service.createFormArray(model); @@ -358,7 +379,7 @@ describe("DynamicFormService test suite", () => { }); - it("should move up a form array group correctly", () => { + it("should move up a form array group", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray = service.createFormArray(model), @@ -383,7 +404,7 @@ describe("DynamicFormService test suite", () => { }); - it("should move down a form array group correctly", () => { + it("should move down a form array group", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray = service.createFormArray(model), @@ -418,7 +439,7 @@ describe("DynamicFormService test suite", () => { }); - it("should remove a form array group correctly", () => { + it("should remove a form array group", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray = service.createFormArray(model); @@ -429,7 +450,7 @@ describe("DynamicFormService test suite", () => { }); - it("should clear a form array correctly", () => { + it("should clear a form array", () => { let model = service.findById("testFormArray", testModel) as DynamicFormArrayModel, formArray = service.createFormArray(model); diff --git a/modules/core/src/service/dynamic-form.service.ts b/modules/core/src/service/dynamic-form.service.ts index fbbf1ced8..0a208c374 100644 --- a/modules/core/src/service/dynamic-form.service.ts +++ b/modules/core/src/service/dynamic-form.service.ts @@ -1,6 +1,10 @@ import { Injectable } from "@angular/core"; import { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators } from "@angular/forms"; -import { DynamicFormControlModel, DynamicValidatorsMap } from "../model/dynamic-form-control.model"; +import { + DynamicFormControlModel, + DynamicFormControlPath, + DynamicValidatorsMap +} from "../model/dynamic-form-control.model"; import { DynamicFormValueControlModel, DynamicFormControlValue } from "../model/dynamic-form-value-control.model"; import { DynamicFormArrayModel, @@ -51,20 +55,16 @@ export class DynamicFormService { }; } - createFormArray(model: DynamicFormArrayModel, parent: any = null): FormArray { + createFormArray(model: DynamicFormArrayModel): FormArray { let formArray = []; for (let index = 0; index < model.size; index++) { - let arrayGroupModel = model.get(index), + let groupModel = model.get(index), extra = this.createExtra(model.groupValidator, model.groupAsyncValidator); - if (parent instanceof DynamicFormArrayGroupModel) { - arrayGroupModel.parent = parent; - } - - formArray.push(this.createFormGroup(arrayGroupModel.group, extra, arrayGroupModel)); + formArray.push(this.createFormGroup(groupModel.group, extra, groupModel)); } return this.formBuilder.array( @@ -77,24 +77,26 @@ export class DynamicFormService { createFormGroup(groupModel: DynamicFormControlModel[], extra: { [key: string]: any } | null = null, - parent: any = null): FormGroup { + parent: DynamicFormControlPath = null): FormGroup { let formGroup: { [id: string]: AbstractControl; } = {}; groupModel.forEach(model => { + model.parent = parent; + if (model.type === DYNAMIC_FORM_CONTROL_TYPE_ARRAY) { let formArrayModel = model as DynamicFormArrayModel; - formGroup[model.id] = this.createFormArray(formArrayModel, parent); + formGroup[model.id] = this.createFormArray(formArrayModel); } else if (model.type === DYNAMIC_FORM_CONTROL_TYPE_GROUP || model.type === DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP) { let formGroupModel = model as DynamicFormGroupModel, extra = this.createExtra(formGroupModel.validator, formGroupModel.asyncValidator); - formGroup[model.id] = this.createFormGroup(formGroupModel.group, extra); + formGroup[model.id] = this.createFormGroup(formGroupModel.group, extra, formGroupModel); } else { @@ -115,6 +117,28 @@ export class DynamicFormService { } + getPathSegment(model: DynamicFormControlPath): string { + + return model instanceof DynamicFormArrayGroupModel ? + model.index.toString() : (model as DynamicFormControlModel).id; + } + + + getPath(model: DynamicFormControlModel | DynamicFormArrayGroupModel): string[] { + + let path = [this.getPathSegment(model)], + parent = model.parent; + + while (parent) { + + path.unshift(this.getPathSegment(parent)); + parent = parent.parent; + } + + return path; + } + + addFormGroupControl(formGroup: FormGroup, groupModel: DynamicFormControlModel[] | DynamicFormGroupModel, ...controlModels: DynamicFormControlModel[]): void { @@ -152,7 +176,8 @@ export class DynamicFormService { groupModel: DynamicFormControlModel[] | DynamicFormGroupModel, ...controlModels: DynamicFormControlModel[]): void { - let controls = this.createFormGroup(controlModels).controls; + let parent = groupModel instanceof DynamicFormGroupModel ? groupModel : null, + controls = this.createFormGroup(controlModels, null, parent).controls; Object.keys(controls).forEach((controlName, idx) => { diff --git a/package-lock.json b/package-lock.json index 900639f21..33e937449 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@angular/animations": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.2.6.tgz", - "integrity": "sha1-nZyAoRmwwDaTy9I7uvcosVMf/8c=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.3.0.tgz", + "integrity": "sha1-VvNLhGSTeSAqw1mSm4LrC5FenHI=", "requires": { "tslib": "1.7.1" } @@ -21,63 +21,52 @@ } }, "@angular/common": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.6.tgz", - "integrity": "sha1-IQrOS9JON1+LQbpS/rNLGKiH1do=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.3.0.tgz", + "integrity": "sha1-E6VKaSndUvlymxauRG+tWP4WMFM=", "requires": { "tslib": "1.7.1" } }, "@angular/compiler": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.6.tgz", - "integrity": "sha1-ZndW1JXKDUXSBhJooQ1Sr4Ofr/Q=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.3.0.tgz", + "integrity": "sha1-VVA78nofBi9xuUlTk/MxGQOo/EM=", "requires": { "tslib": "1.7.1" } }, "@angular/compiler-cli": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.2.6.tgz", - "integrity": "sha1-iiE1Ipnz69Hj8XWBBUFkVmyjBr4=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.3.0.tgz", + "integrity": "sha1-83WAlzD16IPP4hGumRIQ8csanx4=", "dev": true, "requires": { - "@angular/tsc-wrapped": "4.2.6", + "@angular/tsc-wrapped": "4.3.0", "minimist": "1.2.0", "reflect-metadata": "0.1.10" - }, - "dependencies": { - "@angular/tsc-wrapped": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.2.6.tgz", - "integrity": "sha1-YORLWzjzNA7hTFSlinoHEzxk6Jg=", - "dev": true, - "requires": { - "tsickle": "0.21.6" - } - } } }, "@angular/core": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.6.tgz", - "integrity": "sha1-DByP8BV/B29KfAtyHKFCPxu+Fk4=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.3.0.tgz", + "integrity": "sha1-vSJJw94SJKfGU2xKunKNZWUykzQ=", "requires": { "tslib": "1.7.1" } }, "@angular/forms": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.2.6.tgz", - "integrity": "sha1-nTI5lgjkYDu/GXQXqluU6ApGfrA=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.3.0.tgz", + "integrity": "sha1-fQx6hUc36aMKX9lmX41PVqG5G9g=", "requires": { "tslib": "1.7.1" } }, "@angular/http": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.6.tgz", - "integrity": "sha1-SZ4roLvB89cbdt6+wDTJWMrxE04=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.3.0.tgz", + "integrity": "sha1-37czEKhApq2AUKxR8OVcSYTbCSY=", "requires": { "tslib": "1.7.1" } @@ -91,29 +80,38 @@ } }, "@angular/platform-browser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.6.tgz", - "integrity": "sha1-oTH/WSIl/mSWvKLJr/YSpNvd9Dc=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.3.0.tgz", + "integrity": "sha1-AjiUiRhRhcO+zwY1k0YQDlR5x+E=", "requires": { "tslib": "1.7.1" } }, "@angular/platform-browser-dynamic": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.6.tgz", - "integrity": "sha1-TmyK0s1c/BeIBBf3fyo0E895HCY=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.3.0.tgz", + "integrity": "sha1-VR+xiFGyfujz5LDuJarRC9ezEuM=", "requires": { "tslib": "1.7.1" } }, "@angular/router": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.2.6.tgz", - "integrity": "sha1-ppGdm2HEX/wV++5ZM5jj/VMtq0Y=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.3.0.tgz", + "integrity": "sha1-cbQo8YXrkWGh3hTcGUkhndzf/a4=", "requires": { "tslib": "1.7.1" } }, + "@angular/tsc-wrapped": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.0.tgz", + "integrity": "sha1-/i5TdrbirRsTnt3iOp27QpnfYmQ=", + "dev": true, + "requires": { + "tsickle": "0.21.6" + } + }, "@gulp-sourcemaps/identity-map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz", @@ -146,9 +144,9 @@ } }, "@ng-bootstrap/ng-bootstrap": { - "version": "1.0.0-alpha.27", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-1.0.0-alpha.27.tgz", - "integrity": "sha1-8gfi0BreYmlvTZBCQ/VPycsadUE=" + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-1.0.0-alpha.28.tgz", + "integrity": "sha1-MKZQO/f5T50xh1kfsyZ7WcwM2q0=" }, "@progress/kendo-angular-dateinputs": { "version": "1.0.5", @@ -171,13 +169,14 @@ } }, "@progress/kendo-angular-inputs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@progress/kendo-angular-inputs/-/kendo-angular-inputs-1.0.6.tgz", - "integrity": "sha1-eaJWVC19Mle+rzdNlzAsmnttnPQ=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@progress/kendo-angular-inputs/-/kendo-angular-inputs-1.0.7.tgz", + "integrity": "sha1-W5L0ymMWFMJI6X+TSwPNwXvL8No=", "requires": { "@progress/kendo-angular-resize-sensor": "1.0.4", "@telerik/kendo-draggable": "1.5.1", - "@telerik/kendo-inputs-common": "2.2.1" + "@telerik/kendo-inputs-common": "2.2.1", + "tslib": "1.7.1" } }, "@progress/kendo-angular-intl": { @@ -232,9 +231,9 @@ "integrity": "sha1-g7J3wV5s/k5mbU2gol5YPtpDccI=" }, "@progress/kendo-theme-default": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@progress/kendo-theme-default/-/kendo-theme-default-2.38.0.tgz", - "integrity": "sha1-IYUKKzURbplv9o85auyb6aYVRU8=" + "version": "2.38.2", + "resolved": "https://registry.npmjs.org/@progress/kendo-theme-default/-/kendo-theme-default-2.38.2.tgz", + "integrity": "sha1-tBfd+u1vqrktlSs3U8FWENUiP+I=" }, "@telerik/kendo-draggable": { "version": "1.5.1", @@ -262,7 +261,7 @@ "integrity": "sha512-o2qkg/J2LWK+sr007+KFBBOrxzxpr9kiP0gMFC75gQJXhUn/E3pQA0kSVdxrQ3lf+rOwsRnuH0wnR5MNTotEKg==", "dev": true, "requires": { - "@types/node": "8.0.10" + "@types/node": "8.0.13" } }, "@types/hammerjs": { @@ -308,9 +307,9 @@ "dev": true }, "@types/node": { - "version": "8.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.10.tgz", - "integrity": "sha512-ATKQAMGah+e3qNBVdJoCIJk3+RWBkPYtmlluGewO1+t/JmkXEoLnt/WDgHynfGvJyQWTKMq+N1az1E/5YASYGg==", + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.13.tgz", + "integrity": "sha512-Y3EAG7VA7NVNbZek/fjJtILnmTk/ZfpJuWZGDBqDZ1dVIxgJJJ82fXPW7pKnqyV9CD/9bcPOCi7eErUqGMHOrA==", "dev": true }, "@types/q": { @@ -331,7 +330,7 @@ "integrity": "sha512-NanpA4ybcKXr32Zg7sgHvOfir/AeoOdN7+8TpnWueHkmPhVZLSPWU4LLl7y7d2FG08jaxE18HZjlATjttmjHCQ==", "dev": true, "requires": { - "@types/node": "8.0.10" + "@types/node": "8.0.13" } }, "abbrev": { @@ -430,14 +429,14 @@ } }, "ajv": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", - "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", "dev": true, "requires": { "co": "4.6.0", - "fast-deep-equal": "0.1.0", - "json-schema-traverse": "0.3.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", "json-stable-stringify": "1.0.1" } }, @@ -1528,7 +1527,7 @@ "dev": true, "requires": { "buffer-xor": "1.0.3", - "cipher-base": "1.0.3", + "cipher-base": "1.0.4", "create-hash": "1.1.3", "evp_bytestokey": "1.0.0", "inherits": "2.0.3" @@ -1551,7 +1550,7 @@ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "dev": true, "requires": { - "cipher-base": "1.0.3", + "cipher-base": "1.0.4", "des.js": "1.0.0", "inherits": "2.0.3" } @@ -1751,12 +1750,13 @@ } }, "cipher-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", - "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "2.0.3", + "safe-buffer": "5.1.0" } }, "clean-css": { @@ -2051,7 +2051,7 @@ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "cipher-base": "1.0.3", + "cipher-base": "1.0.4", "inherits": "2.0.3", "ripemd160": "2.0.1", "sha.js": "2.4.8" @@ -2063,7 +2063,7 @@ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "cipher-base": "1.0.3", + "cipher-base": "1.0.4", "create-hash": "1.1.3", "inherits": "2.0.3", "ripemd160": "2.0.1", @@ -2081,9 +2081,9 @@ } }, "crypto-browserify": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -2548,7 +2548,7 @@ "requires": { "bn.js": "4.11.7", "brorand": "1.1.0", - "hash.js": "1.1.1", + "hash.js": "1.1.3", "hmac-drbg": "1.0.1", "inherits": "2.0.3", "minimalistic-assert": "1.0.0", @@ -2681,6 +2681,26 @@ "wtf-8": "1.0.0" } }, + "enhanced-resolve": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", + "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.6" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -3162,9 +3182,9 @@ } }, "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=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "dev": true }, "fast-diff": { @@ -4833,9 +4853,9 @@ } }, "gulp-typescript": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.1.7.tgz", - "integrity": "sha1-2IYAqRQVPxHAnJpcqMJWHsdaSXg=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.2.1.tgz", + "integrity": "sha1-Us136caETjuai93YjohM60al23k=", "dev": true, "requires": { "gulp-util": "3.0.8", @@ -5221,9 +5241,9 @@ } }, "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==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { "inherits": "2.0.3", @@ -5270,7 +5290,7 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "1.1.1", + "hash.js": "1.1.3", "minimalistic-assert": "1.0.0", "minimalistic-crypto-utils": "1.0.1" } @@ -5457,9 +5477,9 @@ "dev": true }, "ionic-angular": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.5.0.tgz", - "integrity": "sha1-NbwT6k8z0wjAwhQna1GuLsQAe60=" + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.5.3.tgz", + "integrity": "sha512-bURfGz0GKsmSxGGDw8LXMkz/Yt572yBTF2VMh/JLJANfiicZzMoxdDkPt0H6erHM7QpHYajsG6AP0sTV4PvjYQ==" }, "is-absolute": { "version": "0.2.6", @@ -5892,9 +5912,9 @@ "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=", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, "json-stable-stringify": { @@ -6740,7 +6760,7 @@ "dev": true, "requires": { "errno": "0.1.4", - "readable-stream": "2.3.2" + "readable-stream": "2.3.3" }, "dependencies": { "isarray": { @@ -6750,27 +6770,33 @@ "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=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.0", + "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "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==", "dev": true, "requires": { - "safe-buffer": "5.1.0" + "safe-buffer": "5.1.1" } } } @@ -6999,7 +7025,7 @@ "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.0", + "crypto-browserify": "3.11.1", "domain-browser": "1.1.7", "events": "1.1.1", "https-browserify": "0.0.1", @@ -7008,7 +7034,7 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.2", + "readable-stream": "2.3.3", "stream-browserify": "2.0.1", "stream-http": "2.7.2", "string_decoder": "0.10.31", @@ -7026,16 +7052,16 @@ "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=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.0", + "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" }, @@ -7046,10 +7072,16 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.0" + "safe-buffer": "5.1.1" } } } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true } } }, @@ -7275,9 +7307,9 @@ } }, "parchment": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.0.9.tgz", - "integrity": "sha1-+qn272VOvaO6AZnW5GDyTHPGd/I=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.0.tgz", + "integrity": "sha1-x5OHqA/Er0uolHuU/FWoNfYoUKU=" }, "parse-asn1": { "version": "5.1.0", @@ -7548,9 +7580,9 @@ "dev": true }, "primeng": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-4.0.3.tgz", - "integrity": "sha1-28sVtjxVSSaLLSJc62bVZTs5d0k=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-4.1.0.tgz", + "integrity": "sha1-CGjmj6BXs4Ld1yDK4CtPVwf2aPs=" }, "private": { "version": "0.1.7", @@ -7682,15 +7714,15 @@ "dev": true }, "quill": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.2.6.tgz", - "integrity": "sha1-xFV5M6W7ADS9eELDE3klSoN0yus=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.0.tgz", + "integrity": "sha1-H6SF3ND0xFkl7TIVj1DYEpzKsTQ=", "requires": { "clone": "2.1.1", "deep-equal": "1.0.1", "eventemitter3": "2.0.3", "extend": "3.0.1", - "parchment": "1.0.9", + "parchment": "1.1.0", "quill-delta": "3.5.0" } }, @@ -8205,9 +8237,9 @@ } }, "rollup": { - "version": "0.41.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.6.tgz", - "integrity": "sha1-4NBUl4d6OYwQTYFtJzOnGKepTio=", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.42.0.tgz", + "integrity": "sha1-VueRs6Lz3XGQu7gKN1Z18v4PmyM=", "dev": true, "requires": { "source-map-support": "0.4.15" @@ -8275,18 +8307,18 @@ } }, "rollup-stream": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/rollup-stream/-/rollup-stream-1.21.0.tgz", - "integrity": "sha512-4PyFJp9XeMTjSpxdxHUAfy41xJGyYlPnlLEm/wUjHgTalbzHjaLqFN6U00Z7isBQkgURwTQvZ6TVXH2KC0RFPw==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/rollup-stream/-/rollup-stream-1.23.1.tgz", + "integrity": "sha512-niUbTM3sqckz1FNebsSiN+koCR7RdgrRZ2HCcR4V2DT9PSs53tB4z1xzdTGxrX6bo3QT00R2sQA5n1jr/to69Q==", "dev": true, "requires": { - "rollup": "0.43.0" + "rollup": "0.45.2" }, "dependencies": { "rollup": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.43.0.tgz", - "integrity": "sha512-XqpEPAMHCJ4VcT95ApyGQC7MncjGcG6UtcU5geONqPfN2uAROGmJDE3cOi325S19rhklbM+BXIHNX35l+1zmAg==", + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.45.2.tgz", + "integrity": "sha512-2+bq5GQSrocdhr+M92mOQRmF1evtLRzv9NdmEC2wo7BILvTG8irHCtD0q+zg8ikNu63iJicdN5IzyxAXRTFKOQ==", "dev": true, "requires": { "source-map-support": "0.4.15" @@ -8840,7 +8872,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.2" + "readable-stream": "2.3.3" }, "dependencies": { "isarray": { @@ -8850,27 +8882,33 @@ "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=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.0", + "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "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==", "dev": true, "requires": { - "safe-buffer": "5.1.0" + "safe-buffer": "5.1.1" } } } @@ -8898,7 +8936,7 @@ "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.2", + "readable-stream": "2.3.3", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" }, @@ -8910,27 +8948,33 @@ "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=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.0", + "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "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==", "dev": true, "requires": { - "safe-buffer": "5.1.0" + "safe-buffer": "5.1.1" } } } @@ -9494,9 +9538,9 @@ "dev": true }, "typescript": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", - "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz", + "integrity": "sha1-w8yxbdqgsjFN4DHn5v7onlujRrw=", "dev": true }, "ua-parser-js": { @@ -9852,9 +9896,9 @@ "dev": true }, "watchpack": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", - "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { "async": "2.4.1", @@ -9924,14 +9968,14 @@ } }, "webpack": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.1.0.tgz", - "integrity": "sha512-BWF3vW30ZpqscTpIsqUi6gTnXdvoeS+uEcmoAjtg5Yq0xtxebjz8xjDl3AWV4P5Mi3RqS5Xhq+Q5vvcjU3iUAw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.3.0.tgz", + "integrity": "sha1-zi+eB2Vmq6kfdIhxM6iD/X2hh7w=", "dev": true, "requires": { "acorn": "5.1.1", "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.0", + "ajv": "5.2.2", "ajv-keywords": "2.1.0", "async": "2.4.1", "enhanced-resolve": "3.3.0", @@ -9948,7 +9992,7 @@ "supports-color": "3.2.3", "tapable": "0.2.6", "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.3.1", + "watchpack": "1.4.0", "webpack-sources": "1.0.1", "yargs": "6.6.0" }, @@ -9976,24 +10020,6 @@ "wrap-ansi": "2.1.0" } }, - "enhanced-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.6" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", diff --git a/package.json b/package.json index 747dc21d0..00bfb0b18 100644 --- a/package.json +++ b/package.json @@ -35,45 +35,45 @@ }, "homepage": "https://github.com/udos86/ng2-dynamic-forms#readme", "dependencies": { - "@angular/animations": "^4.2.6", + "@angular/animations": "^4.3.0", "@angular/cdk": "^2.0.0-beta.8", - "@angular/common": "^4.2.6", - "@angular/compiler": "^4.2.6", - "@angular/core": "^4.2.6", - "@angular/forms": "^4.2.6", - "@angular/http": "^4.2.6", + "@angular/common": "^4.3.0", + "@angular/compiler": "^4.3.0", + "@angular/core": "^4.3.0", + "@angular/forms": "^4.3.0", + "@angular/http": "^4.3.0", "@angular/material": "^2.0.0-beta.8", - "@angular/platform-browser": "^4.2.6", - "@angular/platform-browser-dynamic": "^4.2.6", - "@angular/router": "^4.2.6", - "@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.27", + "@angular/platform-browser": "^4.3.0", + "@angular/platform-browser-dynamic": "^4.3.0", + "@angular/router": "^4.3.0", + "@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.28", "@progress/kendo-angular-dateinputs": "^1.0.5", "@progress/kendo-angular-dropdowns": "^1.1.2", - "@progress/kendo-angular-inputs": "^1.0.6", + "@progress/kendo-angular-inputs": "^1.0.7", "@progress/kendo-angular-intl": "^1.2.1", "@progress/kendo-angular-l10n": "^1.0.2", "@progress/kendo-angular-popup": "^1.1.1", "@progress/kendo-angular-resize-sensor": "^1.0.4", "@progress/kendo-angular-upload": "^1.1.1", "@progress/kendo-date-math": "^1.0.3", - "@progress/kendo-theme-default": "^2.38.0", + "@progress/kendo-theme-default": "^2.38.2", "@telerik/kendo-intl": "^1.2.0", "angular2-text-mask": "^8.0.2", "bootstrap": "^3.3.7", "core-js": "^2.4.1", "foundation-sites": "^6.4.1", "hammerjs": "^2.0.8", - "ionic-angular": "^3.5.0", - "primeng": "^4.0.3", - "quill": "^1.2.5", + "ionic-angular": "^3.5.3", + "primeng": "^4.1.0", + "quill": "^1.3.0", "rxjs": "^5.4.2", "zone.js": "^0.8.12" }, "devDependencies": { - "@angular/compiler-cli": "^4.2.6", + "@angular/compiler-cli": "^4.3.0", "@types/hammerjs": "^2.0.34", "@types/jasmine": "^2.5.53", - "@types/node": "^8.0.10", + "@types/node": "^8.0.13", "codelyzer": "^3.1.2", "dateformat": "^2.0.0", "del": "^3.0.0", @@ -85,7 +85,7 @@ "gulp-sourcemaps": "^2.6.0", "gulp-tslint": "^8.1.0", "gulp-typedoc": "^2.0.2", - "gulp-typescript": "^3.1.7", + "gulp-typescript": "^3.2.1", "gulp-util": "^3.0.8", "html-minifier": "^3.5.2", "jasmine-core": "^2.6.4", @@ -107,14 +107,14 @@ "rollup-plugin-includepaths": "^0.2.2", "rollup-plugin-node-resolve": "^3.0.0", "rollup-plugin-uglify": "^2.0.1", - "rollup-stream": "^1.21.0", + "rollup-stream": "^1.23.1", "run-sequence": "^2.0.0", "systemjs": "^0.20.15", "systemjs-builder": "^0.16.9", "tslint": "^5.5.0", "typedoc": "^0.7.1", - "typescript": "^2.3.4", + "typescript": "^2.4.1", "vinyl-source-stream": "^1.1.0", - "webpack": "^3.1.0" + "webpack": "^3.3.0" } }