aboutsummaryrefslogtreecommitdiffstats
path: root/so-monitoring/so-monitoring-ui
diff options
context:
space:
mode:
Diffstat (limited to 'so-monitoring/so-monitoring-ui')
-rw-r--r--so-monitoring/so-monitoring-ui/pom.xml4
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/package.json1
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts6
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts4
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts26
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.html127
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.scss71
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.spec.ts25
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/onboard/onboard.component.ts136
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html5
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts4
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock202
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"