diff options
Diffstat (limited to 'so-monitoring/so-monitoring-ui')
12 files changed, 602 insertions, 9 deletions
diff --git a/so-monitoring/so-monitoring-ui/pom.xml b/so-monitoring/so-monitoring-ui/pom.xml index 6488c7d7df..2ec0c353f8 100644 --- a/so-monitoring/so-monitoring-ui/pom.xml +++ b/so-monitoring/so-monitoring-ui/pom.xml @@ -24,7 +24,7 @@ <parent> <groupId>org.onap.so.monitoring</groupId> <artifactId>so-monitoring</artifactId> - <version>1.6.0-SNAPSHOT</version> + <version>1.7.0-SNAPSHOT</version> </parent> <artifactId>so-monitoring-ui</artifactId> @@ -49,7 +49,7 @@ </goals> <phase>generate-resources</phase> <configuration> - <nodeVersion>v10.8.0</nodeVersion> + <nodeVersion>v10.15.3</nodeVersion> <yarnVersion>v1.7.0</yarnVersion> </configuration> </execution> diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/package.json b/so-monitoring/so-monitoring-ui/src/main/frontend/package.json index c793264e99..8e8b92730f 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/package.json +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/package.json @@ -47,6 +47,7 @@ "karma-coverage-istanbul-reporter": "~2.0.0", "karma-jasmine": "~1.1.1", "karma-jasmine-html-reporter": "^0.2.2", + "node-sass": "^4.14.1", "protractor": "^5.4.0", "ts-node": "~5.0.1", "tslint": "~5.9.1", diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts index 428998dc62..ebe0909bf1 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts @@ -24,6 +24,8 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { HomeComponent } from './home/home.component'; import { DetailsComponent } from './details/details.component'; +import { OnboardComponent } from './onboard/onboard.component'; + const routes: Routes = [ { @@ -35,6 +37,10 @@ const routes: Routes = [ // Route to page to show individual process based on ID path: 'details/:id', component: DetailsComponent + }, + { + path: 'onboard', + component: OnboardComponent } ]; diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts index 75be395879..8e9f051af4 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts @@ -37,6 +37,7 @@ import { MatFormFieldModule, MatInputModule, MatTableModule, MatTabsModule, MatS import { NgxSpinnerModule } from 'ngx-spinner'; import { RouterModule, Routes } from '@angular/router'; import { APP_BASE_HREF } from '@angular/common'; +import { OnboardComponent } from './onboard/onboard.component'; @NgModule({ declarations: [ @@ -44,7 +45,8 @@ import { APP_BASE_HREF } from '@angular/common'; SidebarComponent, TopbarComponent, HomeComponent, - DetailsComponent + DetailsComponent, + OnboardComponent, ], imports: [ BrowserModule, diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts index b391672728..352fdb7788 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts @@ -21,7 +21,7 @@ SPDX-License-Identifier: Apache-2.0 */ import { Injectable } from '@angular/core'; -import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { BpmnInfraRequest } from './model/bpmnInfraRequest.model'; import { catchError } from 'rxjs/operators'; import { Observable } from 'rxjs'; @@ -37,7 +37,7 @@ import { ActivityInstance } from './model/activityInstance.model'; providedIn: 'root' }) export class DataService { - + httpOptions:any; constructor(private http: HttpClient, private httpErrorHandlerService: HttpErrorHandlerService) { } // HTTP POST call to running Spring Boot application @@ -92,4 +92,26 @@ export class DataService { catchError(this.httpErrorHandlerService.handleError("GET", url)) ); } + + onboardBPMNInfra(formData: any): Observable<Object> { + var url = environment.soMonitoringBackendURL + 'workflowPackages/onboard'; + return this.http.post<any>(url, formData) + .pipe( + catchError(this.httpErrorHandlerService.handleError("POST", url)) + ); + } + + saveServiceRecipe(data: any): Observable<Object> { + this.httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + }) + }; + var url = environment.soMonitoringBackendURL + 'serviceRecipes'; + return this.http.post<any>(url, data, this.httpOptions) + .pipe( + catchError(this.httpErrorHandlerService.handleError("POST", url)) + ); + } + } diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.html new file mode 100644 index 0000000000..867e0e8d15 --- /dev/null +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.html @@ -0,0 +1,127 @@ + +<base href="/"> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> +<link rel="stylesheet" ng-href="./upload-page.component.scss"> +<div class="completeForm"> + <div> + <h3>Dynamic Deployment for BPMN</h3> + </div> + <div class="uploadwar onboard-box"> + + + <div class="container width-40p"> + <form novalidate + [formGroup]="myform" + (ngSubmit)="onSubmit()"> + <div> + <div> + <label style="font-weight: bold">BPMN file: </label> + <input class="" type="file" class="upload-box form-control pad-top-not5" + formControlName="warFile" + (change)="beforeUpload($event)" + [(ngModel)]="fileName" placeholder="Upload-BPMN-war" required><br> + </div> + + <div class="pad-top"> + <input type="checkbox" (change)="checkDB()" name="dbCheck"/> + <label> Save to DB</label><br> + </div> + </div> + <!--save to db form--> + <div *ngIf="isChecked"> + <div class="form-group" + [ngClass]="{ + 'has-danger': modelName.invalid && (modelName.dirty || modelName.touched), + 'has-success': modelName.valid && (modelName.dirty || modelName.touched) + }"> + <label>Model Name</label> + <input type="text" + class="form-control" + formControlName="modelName" + required> + <div class="form-control-feedback" + *ngIf="modelName.errors && (modelName.dirty || modelName.touched)"> + <p *ngIf="modelName.errors.required">Model Name is required</p> + </div> + + </div> + + <div class="form-group" + [ngClass]="{ + 'has-danger': modelVersionId.invalid && (modelVersionId.dirty || modelVersionId.touched), + 'has-success': modelVersionId.valid && (modelVersionId.dirty || modelVersionId.touched) + }"> + <label>ModelVersionId</label> + <input type="text" + class="form-control" + formControlName="modelVersionId" + required> + <div class="form-control-feedback" + *ngIf="modelVersionId.errors && (modelVersionId.dirty || modelVersionId.touched)"> + <p *ngIf="modelVersionId.errors.required">ModelVersionId is required</p> + </div> + </div> + + + + <div class="form-group" + [ngClass]="{ + 'has-danger': operation.invalid && (operation.dirty || operation.touched), + 'has-success': operation.valid && (operation.dirty || operation.touched) + }"> + <label>Operation</label> + <input type="operation" + class="form-control" + formControlName="operation" + required> + <div class="form-control-feedback" + *ngIf="operation.errors && (operation.dirty || operation.touched)"> + <p *ngIf="operation.errors.required">operation is required</p> + </div> + + + + </div> + + <div class="form-group" + [ngClass]="{ + 'has-danger': orchestrationFlow.invalid && (orchestrationFlow.dirty || orchestrationFlow.touched), + 'has-success': orchestrationFlow.valid && (orchestrationFlow.dirty || orchestrationFlow.touched) + }"> + <label>OrchestrationFlow</label> + <input type="orchestrationFlow" + class="form-control" + formControlName="orchestrationFlow" + required> + <div class="form-control-feedback" + *ngIf="orchestrationFlow.errors && (orchestrationFlow.dirty || orchestrationFlow.touched)"> + <p *ngIf="orchestrationFlow.errors.required">orchestrationFlow is required</p> + </div> + </div> + + + <div class="form-group" + [ngClass]="{ + 'has-danger': modelType.invalid && (modelType.dirty || modelType.touched), + 'has-success': modelType.valid && (modelType.dirty || modelType.touched) + }"> + <label>ModelType</label> + <select class="form-control" + formControlName="modelType"> + <option value="">Please select a Type</option> + <option *ngFor="let type of modelTypes" + [value]="type">{{type}} + </option> + </select> + </div> + </div> + <button type="submit" + class="btn btn-primary">Submit + </button> + + <!-- <pre>{{myform.value | json}}</pre> --> + </form> + </div>` +</div> +<ngx-spinner bdColor="rgba(51, 51, 51, 0.8)" size="large" color="#00285f" type="ball-spin-clockwise-fade-rotating"></ngx-spinner> +<router-outlet></router-outlet> diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.scss new file mode 100644 index 0000000000..21e7a01ac7 --- /dev/null +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.scss @@ -0,0 +1,71 @@ +.uploadwar { + background-color: white; + padding: 10px; + height: 700px; + box-shadow: 0 5px 5px -3px rgba(0,0,0,.2), 0 8px 10px 1px rgba(0,0,0,.14), 0 3px 14px 2px rgba(0,0,0,.12); + } + .mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; + font-family: 'Montserrat', sans-serif; + } + .width-40p{ + width: 40%!important; + } + + .selectFilter { + width: 120px; + } + + .valueInput { + width: 505px; + margin: 0; + } + .dispaly-flex{ + display: flex; + } + .selectFilter.mat-select.ng-tns-c5-1.ng-star-inserted { + font-family: 'Montserrat', sans-serif; + font-size: 17px; + } + + .mat-form-field-flex .valueInput { + font-family: 'Montserrat', sans-serif; + font-size: 17px; + } + + .upload-box{ + border: 1px solid gainsboro; + padding: 8px; + width: 100%; +} + +.label-txt{ + line-height: 45px; + text-align: left; +} + +.container-home{ + display: flex; + flex-direction: row; + /* align-items: center; */ + justify-content: center; +} +.pad-top{ + padding-top: 12px; +} + +// .onboard-box{ +// display: flex; +// flex-direction: row; +// align-items: center; +// justify-content: center; +// } + +.selectHour, +.selectMinute { + margin-left: 30px; + width: 100px; +} +.pad-top-not5{ + padding-top: 0.5%; +}
\ No newline at end of file diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.spec.ts new file mode 100644 index 0000000000..a4e78e094b --- /dev/null +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OnboardComponent } from './onboard.component'; + +describe('OnboardComponent', () => { + let component: OnboardComponent; + let fixture: ComponentFixture<OnboardComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OnboardComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OnboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.ts new file mode 100644 index 0000000000..8e80a1a3ed --- /dev/null +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.ts @@ -0,0 +1,136 @@ +import { Component, OnInit } from '@angular/core'; +import { DataService } from '../data.service'; +import { NgxSpinnerService } from 'ngx-spinner'; +import { FormGroup, FormControl, Validators } from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; +import { ToastrNotificationService } from '../toastr-notification-service.service'; + +@Component({ + selector: 'app-onboard', + templateUrl: './onboard.component.html', + styleUrls: ['./onboard.component.scss'] +}) +export class OnboardComponent implements OnInit { + + constructor(private data: DataService, private spinner: NgxSpinnerService, private http: HttpClient, + private popup: ToastrNotificationService) { } + + fileName: string; + typeData = [ + "Service", + "VNF", + "Network" + ]; + saveDataObj = {}; + isChecked:boolean = false; + fileList = []; + modelTypes: string[] = [ + 'Service', + 'VNF', + 'NetWork', + ]; + myform: FormGroup; + modelName: FormControl; + modelVersionId: FormControl; + operation: FormControl; + orchestrationFlow: FormControl; + modelType: FormControl; + + + ngOnInit() { + this.createFormControls(); + this.createForm(); + } + + createFormControls() { + this.modelName = new FormControl('', ); + this.modelVersionId = new FormControl('', ); + this.operation = new FormControl('', [ + Validators.required + ]); + this.orchestrationFlow = new FormControl('',); + this.modelType = new FormControl(''); + } + + createForm() { + this.myform = new FormGroup({ + modelName: this.modelName, + modelVersionId: this.modelVersionId, + operation: this.operation, + orchestrationFlow: this.orchestrationFlow, + modelType: this.modelType + }); + } + + onSubmit() { + if (this.myform.valid && this.isChecked) { + console.log("Form Submitted!"); + console.log("formdata", this.myform.value) + let data = this.myform.value; + this.saveServiceRecipes(JSON.stringify(data)); + this.myform.reset(); + } + if(this.fileList.length > 0) { + this.handleUpload(); + } + } + + beforeUpload = (evt: any): boolean => { + this.fileList = []; + if(evt) { + let file = evt.currentTarget.files[0]; + if(file.name.includes(".war")) { + this.fileName = file.name; + this.fileList = this.fileList.concat(file); + } + } + return false; + }; + + saveServiceRecipes(data: any): void { + this.data.saveServiceRecipe(data) + .subscribe((data: any) => { + console.log(JSON.stringify(data)); + if(data != null) { + if(data.errMsg) { + this.popup.error(data.errMsg); + } + } + this.spinner.hide(); + },error => { + console.log(error); + this.spinner.hide(); + }); + } + + handleUpload(): void { + if (this.fileList.length == 0) { + return; + } + this.spinner.show() + const formData = new FormData(); + this.fileList.forEach((file: any) => { + formData.append('file', file, file.name); + }); + this.data.onboardBPMNInfra(formData) + .subscribe((data: any) => { + console.log(JSON.stringify(data)); + if(data != null) { + if(data.result == true) { + this.popup.info(data.message); + } else { + this.popup.error(data.message); + } + } + this.spinner.hide(); + },error => { + console.log(error); + this.spinner.hide(); + }); + } + + checkDB () { + this.isChecked = this.isChecked ? false : true; + } +} + diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html index e8b54d7ae3..17e80d5ab0 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html @@ -26,4 +26,9 @@ SPDX-License-Identifier: Apache-2.0 <a routerLink="/">Home</a>
</li>
</ul>
+ <ul>
+ <li>
+ <a routerLink="/onboard">BPMN</a>
+ </li>
+ </ul>
</nav>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts index f0c63fe582..087015ecf5 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts @@ -24,5 +24,7 @@ SPDX-License-Identifier: Apache-2.0 export const environment = { production: false, - soMonitoringBackendURL: 'http://so-monitoring:30224/so/monitoring/' + soMonitoringBackendURL: 'http://so-monitoring:30224/so/monitoring/', + + soHotboardingBackendURL: 'http://192.168.17.26:30224/so/monitoring/' }; diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock b/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock index 7ecbb03ae7..3f7a2c0b9a 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock @@ -441,6 +441,15 @@ ajv@^6.1.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.3: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" @@ -474,11 +483,15 @@ ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.1: +ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: @@ -1129,6 +1142,10 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864: version "1.0.30000878" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz#c644c39588dd42d3498e952234c372e5a40a4123" @@ -1262,6 +1279,14 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" @@ -1664,7 +1689,7 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6. dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1948,6 +1973,10 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -2303,6 +2332,10 @@ fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -2409,6 +2442,12 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + dependencies: + locate-path "^3.0.0" + flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -2543,6 +2582,10 @@ get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -2707,6 +2750,13 @@ har-validator@~5.1.0: ajv "^5.3.0" har-schema "^2.0.0" +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3672,6 +3722,13 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -3700,6 +3757,10 @@ lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@^4.17.15: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + log-symbols@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -4062,6 +4123,10 @@ nan@^2.10.0, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" +nan@^2.13.2: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -4174,6 +4239,28 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" +node-sass@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "2.2.5" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + node-sass@^4.9.0: version "4.9.3" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" @@ -4469,12 +4556,24 @@ p-limit@^1.0.0, p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + dependencies: + p-limit "^2.0.0" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" @@ -4483,6 +4582,10 @@ p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + pako@~1.0.2, pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" @@ -4797,6 +4900,10 @@ psl@^1.1.24: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + public-encrypt@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" @@ -4830,7 +4937,7 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -5120,6 +5227,31 @@ request@^2.74.0, request@^2.83.0, request@^2.87.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5132,6 +5264,10 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -5217,6 +5353,15 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^13.3.2" + sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -5754,6 +5899,14 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -5776,6 +5929,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + dependencies: + ansi-regex "^4.1.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -5984,6 +6143,13 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tree-kill@^1.0.0, tree-kill@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" @@ -6520,6 +6686,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6582,6 +6756,13 @@ yargs-parser@^10.0.0: dependencies: camelcase "^4.1.0" +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -6611,6 +6792,21 @@ yargs@11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" |