Commit ac3ddc45 authored by Ben Anderson's avatar Ben Anderson

Added contact and 404 pages

parent 77849086
......@@ -29,6 +29,7 @@
"@angular-devkit/build-angular": "~0.1102.5",
"@angular/cli": "~11.2.5",
"@angular/compiler-cli": "~11.2.6",
"@angular/localize": "11.2.10",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
"codelyzer": "^6.0.0",
......
<!-- <p>account works!</p>
<div>
<form [formGroup]="userForm" (ngSubmit)="onSubmit1()">
<p>Sign up</p>
div>
<div style="display: inline-block">
<form [formGroup]="userForm" (ngSubmit)="onSubmit()">
<div>
<div>
<input type="text" formControlName="firstName" class="form-control input" placeholder="First name">
</div>
<div>
<input type="text" formControlName="lastName" class="form-control input " placeholder="Last name">
</div>
<p>reactive</p>
<div>
<input
type="text"
formControlName="firstName"
class="form-control input"
placeholder="First name"
/>
</div>
<div>
<input
type="text"
formControlName="lastName"
class="form-control input"
placeholder="Last name"
/>
</div>
</div>
<input type="email" formControlName="email" class="form-control input" placeholder="E-mail">
<input
type="email"
formControlName="email"
class="form-control input"
placeholder="E-mail"
/>
<div>
<button type="submit">Sign in</button>
<button type="submit">Sign in</button>
</div>
</form>
<div >
<ngb-alert *ngIf="showMessage" type="danger" >{{ invalidEntry }}</ngb-alert>
<!-- <div class= "invalid-text" *ngIf="showMessage">
{{invalidEntry}}
</div> -->
<!-- </div>
</div> --> -->
<div>
<ngb-alert *ngIf="showMessage" type="danger">{{ invalidEntry }}</ngb-alert>
<div class="invalid-text" *ngIf="showMessage">
{{ invalidEntry }}
</div>
</div>
</div>
<!-- template driven form -->
<div style="display: inline-block; margin-left: 10em">
<form #newUserForm="ngForm" (ngSubmit)="onSubmit2(newUserForm)">
<div>
<p>template-driven</p>
<input
type="text"
class="input"
placeholder="User name"
required
[(ngModel)]="username"
name="userName"
pattern="[a-zA-Z ]*"
#pickedName="ngModel"
/>
<div *ngIf="!pickedName.valid && pickedName.touched">
User name is required!
</div>
</div>
<div>
<input
type="email"
class="input"
placeholder="Email"
required
[(ngModel)]="email"
name="email"
#userEmail="ngModel"
pattern="[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}"
/>
<div *ngIf="!userEmail.valid && userEmail.touched">
Email is not valid!
</div>
</div>
<div>
<input
type="password"
class="input"
placeholder="Password"
required
[(ngModel)]="password"
name="password"
#userPassword="ngModel"
/>
<div *ngIf="!userPassword.valid && userPassword.touched">
Password is required!
</div>
</div>
<button type="submit" [disabled]="!newUserForm.form.valid">Register</button>
<button type="button" (click)="newUserForm.reset()">Reset</button>
</form>
<!-- <pre>{{ newUserForm.form.value }}</pre> Value of whole form -->
<!-- <pre>User name: {{ pickedName.value }}</pre> Value of userName field -->
<pre>Valid form? {{ newUserForm.form.valid }}</pre>
</div>
import { Component, OnInit } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
import { FormBuilder, FormGroup, NgForm, Validators } from '@angular/forms';
@Component({
selector: 'app-account',
......@@ -7,9 +7,51 @@ import { FormBuilder, Validators } from '@angular/forms';
styleUrls: ['./account.component.css'],
})
export class AccountComponent implements OnInit {
formGroup;
public userForm: FormGroup;
public showMessage = false;
public invalidEntry = 'Invalid Entry';
constructor() {}
username = '';
email: string;
nickname: string;
password: string;
ngOnInit(): void {}
constructor(private formbuilder: FormBuilder) {}
ngOnInit(): void {
this.userForm = this.formbuilder.group({
firstName: ['', [Validators.required, Validators.pattern('^[a-zA-Z]+$')]],
lastName: ['', [Validators.required, Validators.pattern('^[a-zA-Z]+$')]],
email: [
'',
[
Validators.required,
Validators.pattern(
'[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}'
),
],
],
});
// this.userForm.errors
}
onSubmit(): void {
if (this.userForm.valid) {
alert('User form is valid!');
} else {
alert('User form is invalid');
}
}
onSubmit1(): void {
if (this.userForm.valid) {
this.showMessage = true;
}
}
onSubmit2(form: NgForm): void {
if (form.valid) {
console.log(form.value);
}
}
}
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AccountComponent } from './account/account.component';
import { ContactComponent } from './contact/contact.component';
import { EnglandComponent } from './england/england.component';
import { FranceComponent } from './france/france.component';
import { GreeceComponent } from './greece/greece.component';
import { NotFoundComponent } from './not-found/not-found.component';
import { SpainComponent } from './spain/spain.component';
const routes: Routes = [
......@@ -10,6 +13,9 @@ const routes: Routes = [
{ path: 'countries/france', component: FranceComponent },
{ path: 'countries/spain', component: SpainComponent },
{ path: 'countries/greece', component: GreeceComponent },
{ path: 'account', component: AccountComponent },
{ path: 'contact', component: ContactComponent },
{ path: '**', component: NotFoundComponent },
];
@NgModule({
......
.dynamic-container {
margin-top: 35px;
margin-bottom: 5rem;
height: calc(100vh-70px);
overflow-y: auto;
overflow-x: hidden;
......
<header></header>
<div class="content" role="main">
<div class="dynamic-container col-md-10 col-xl-10">
<div class="dynamic-container container">
<router-outlet></router-outlet>
</div>
</div>
......
......@@ -11,6 +11,9 @@ import { GreeceComponent } from './greece/greece.component';
import { AccountComponent } from './account/account.component';
import { AppRoutingModule } from './app-routing.module';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ContactComponent } from './contact/contact.component';
import { NotFoundComponent } from './not-found/not-found.component';
@NgModule({
declarations: [
......@@ -22,8 +25,16 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
SpainComponent,
GreeceComponent,
AccountComponent,
ContactComponent,
NotFoundComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
NgbModule,
FormsModule,
ReactiveFormsModule,
],
imports: [BrowserModule, AppRoutingModule, NgbModule],
providers: [],
bootstrap: [AppComponent],
})
......
.message {
padding: 3px;
border-radius: 5px;
margin: 10px;
}
.success {
border: 1px solid green;
color: green;
background-color: chartreuse;
}
.failed {
background-color: rgb(226, 164, 176);
border: 1px solid rgb(177, 24, 24);
color: rgb(153, 88, 101);
}
<div class="container">
<form [formGroup]="contactForm" (submit)="onSubmit()">
<div class="row">
<div class="col">
<div class="mb-3">
<label for="firstName" class="form-label">First Name</label>
<input
id="firstName"
type="text"
formControlName="firstName"
class="form-control input"
required
/>
</div>
<div class="mb-3">
<label for="lastName" class="form-label">Last Name</label>
<input
id="lastName"
type="text"
formControlName="lastName"
class="form-control input"
required
/>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email Address</label>
<input
id="email"
type="text"
formControlName="email"
class="form-control input"
required
/>
</div>
</div>
<div class="col">
<div class="mb-3">
<label for="message" class="form-label">Message</label>
<textarea
id="message"
formControlName="message"
class="form-control input"
rows="8"
></textarea>
</div>
</div>
<div>
<button class="btn btn-primary" type="submit">Submit</button>
</div>
</div>
</form>
<div class="message success" *ngIf="submitStatus === 1">
{{ successMessage }}
</div>
<div class="message failed" *ngIf="submitStatus === 2">
{{ failedMessage }}
</div>
</div>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ContactComponent } from './contact.component';
describe('ContactComponent', () => {
let component: ContactComponent;
let fixture: ComponentFixture<ContactComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ ContactComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(ContactComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-contact',
templateUrl: './contact.component.html',
styleUrls: ['./contact.component.css'],
})
export class ContactComponent implements OnInit {
public contactForm: FormGroup;
public submitStatus = 0;
public successMessage = 'Recevied! Thanks for reaching out!';
public failedMessage =
"We're sorry, there seems to be something wrong with your info. Make sure all of the fields are filled out and that your email is valid";
constructor(private formbuilder: FormBuilder) {}
ngOnInit(): void {
this.contactForm = this.formbuilder.group({
firstName: ['', [Validators.required]],
lastName: ['', [Validators.required]],
email: ['', [Validators.required, Validators.email]],
});
}
onSubmit(): void {
if (this.contactForm.valid) {
this.submitStatus = 1;
} else {
this.submitStatus = 2;
}
}
}
.img {
height: 350px;
width: 350px;
padding: 5px;
/* padding: 5px; */
}
<div class="imgContainer">
<img class="img" src="/assets/images/england/england-bridge.jpg" />
<img class="img" src="/assets/images/england/england-parliament.jpg" />
<img class="img" src="/assets/images/england/england-stonehedge.jpg" />
<div class="container">
<div class="container slide bg-dark justify-content-center">
<ngb-carousel
[showNavigationArrows]="true"
[showNavigationIndicators]="true"
>
<ng-template ngbSlide *ngFor="let image of images">
<div class="picsum-img-wrapper">
<img class="img" [src]="image" alt="Random slide" />
</div>
</ng-template>
</ngb-carousel>
</div>
<div class="row">
<p class="lead">England</p>
<p>
England is a country that is part of the United Kingdom. It shares land
borders with Wales to its west and Scotland to its north. The area now
called England was first inhabited by modern humans during the Upper
Paleolithic period, but takes its name from the Angles, a Germanic tribe
deriving its name from the Anglia peninsula, who settled during the 5th
and 6th centuries. England became a unified state in the 10th century, and
since the Age of Discovery, which began during the 15th century, has had a
significant cultural and legal impact on the wider world. The English
language, the Anglican Church, and English law – the basis for the common
law legal systems of many other countries around the world – developed in
England, and the country's parliamentary system of government has been
widely adopted by other nations. The Industrial Revolution began in
18th-century England, transforming its society into the world's first
industrialised nation.
</p>
</div>
</div>
import { Component, OnInit } from '@angular/core';
import { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-england',
templateUrl: './england.component.html',
styleUrls: ['./england.component.css']
styleUrls: ['./england.component.css'],
providers: [NgbCarouselConfig],
})
export class EnglandComponent implements OnInit {
images = [
'/assets/images/england/england-parliament.jpg',
'/assets/images/england/england-bridge.jpg',
'/assets/images/england/england-stonehedge.jpg',
];
constructor() { }
ngOnInit(): void {
constructor(config: NgbCarouselConfig) {
config.showNavigationArrows = true;
config.showNavigationIndicators = true;
}
ngOnInit(): void {}
}
......@@ -5,6 +5,7 @@
right: 0;
left: 0;
position: fixed;
/* margin-top: 5rem; */
}
ul {
font-family: Arial, Verdana;
......
......@@ -2,6 +2,6 @@
<ul>
<li>About Us</li>
<li>Careers</li>
<li>Contact Us</li>
<li routerLink="/contact">Contact Us</li>
</ul>
</div>
<div class="imgContainer">
<img class="img" src="/assets/images/france/france-cafe.jpg" />
<img class="img" src="/assets/images/france/france-tower.jpg" />
<img class="img" src="/assets/images/france/france-town.jpg" />
<div class="container">
<div class="container slide bg-dark justify-content-center">
<ngb-carousel
[showNavigationArrows]="true"
[showNavigationIndicators]="true"
>
<ng-template ngbSlide *ngFor="let image of images">
<div class="picsum-img-wrapper">
<img class="img" [src]="image" alt="Random slide" />
</div>
</ng-template>
</ngb-carousel>
</div>
<div class="row">
<p class="lead">France</p>
<p>
France officially the French Republic (French: République française), is a
country primarily located in Western Europe, consisting of metropolitan
France and several overseas regions and territories. During the Iron Age,
what is now metropolitan France was inhabited by the Gauls. The area was
annexed by Rome in 51 BC, developing a distinct Gallo-Roman culture that
laid the foundation of the French language. The Germanic Franks arrived in
476 and formed the Kingdom of Francia, which became the heartland of the
Carolingian Empire. The Treaty of Verdun of 843 partitioned the empire,
with West Francia becoming the Kingdom of France in 987. France retains
its centuries-long status as a global centre of art, science, and
philosophy. It hosts the world's fifth-largest number of UNESCO World
Heritage Sites and is the leading tourist destination, receiving over 89
million foreign visitors in 2018.[
</p>
</div>
</div>
import { Component, OnInit } from '@angular/core';
import { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-france',
templateUrl: './france.component.html',
styleUrls: ['./france.component.css']
styleUrls: ['./france.component.css'],
providers: [NgbCarouselConfig],
})
export class FranceComponent implements OnInit {
images = [
'assets/images/france/france-cafe.jpg',
'assets/images/france/france-tower.jpg',
'assets/images/france/france-town.jpg',
];
constructor() { }
ngOnInit(): void {
constructor(config: NgbCarouselConfig) {
config.showNavigationArrows = true;
config.showNavigationIndicators = true;
}
ngOnInit(): void {}
}
.img {
height: 350px;
width: 350px;
/* .img {
height: 500px;
width: 500px;
padding: 5px;
}
.slide {
width: 500px;
} */
<div class="imgContainer">
<img class="img" src="/assets/images/greece/greece- beach.jpg" />
<img class="img" src="/assets/images/greece/greece-steps.jpg" />
<img class="img" src="/assets/images/greece/greese-santorini.jpg" />
<div class="container">
<div class="container slide bg-dark justify-content-center">
<ngb-carousel
[showNavigationArrows]="true"
[showNavigationIndicators]="true"
>
<ng-template ngbSlide *ngFor="let image of images">
<div class="picsum-img-wrapper">
<img class="img" [src]="image" alt="Random slide" />
</div>
</ng-template>
</ngb-carousel>
</div>
<div class="row">
<p class="lead">Greece</p>
<p></p>
</div>
</div>
import { Component, OnInit } from '@angular/core';
import { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-greece',
templateUrl: './greece.component.html',
styleUrls: ['./greece.component.css']
styleUrls: ['./greece.component.css'],
providers: [NgbCarouselConfig],
})
export class GreeceComponent implements OnInit {
images = [
'/assets/images/greece/greece- beach.jpg',
'/assets/images/greece/greece-steps.jpg',
'/assets/images/greece/greese-santorini.jpg',
];
constructor() { }
ngOnInit(): void {
constructor(config: NgbCarouselConfig) {
config.showNavigationArrows = true;
config.showNavigationIndicators = true;
}
ngOnInit(): void {}
}
......@@ -5,6 +5,7 @@
top: 0;
right: 0;
left: 0;
z-index: 10;
}
.btn {
......
<div class="container align-middle text-center">
<h1>404 Not Found</h1>
<p class="lead">Sorry, the address you requested does not currently exist</p>
</div>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NotFoundComponent } from './not-found.component';
describe('NotFoundComponent', () => {
let component: NotFoundComponent;
let fixture: ComponentFixture<NotFoundComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ NotFoundComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(NotFoundComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-not-found',
templateUrl: './not-found.component.html',
styleUrls: ['./not-found.component.css']
})
export class NotFoundComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
}
<div class="imgContainer">
<img class="img" src="/assets/images/spain/spain-barcelona.jpg" />
<img class="img" src="/assets/images/spain/spain-cathedral.jpg" />
<img class="img" src="/assets/images/spain/spain-dance.jpg" />
<div class="container">
<div class="container slide bg-dark justify-content-center">
<ngb-carousel
[showNavigationArrows]="true"
[showNavigationIndicators]="true"
>
<ng-template ngbSlide *ngFor="let image of images">
<div class="picsum-img-wrapper">
<img class="img" [src]="image" alt="Random slide" />
</div>
</ng-template>
</ngb-carousel>
</div>
<div class="row">
<p class="lead">Spain</p>
<p></p>
</div>
</div>
import { Component, OnInit } from '@angular/core';
import { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-spain',
templateUrl: './spain.component.html',
styleUrls: ['./spain.component.css']
styleUrls: ['./spain.component.css'],
providers: [NgbCarouselConfig],
})
export class SpainComponent implements OnInit {
images = [
'assets/images/spain/spain-barcelona.jpg',
'assets/images/spain/spain-cathedral.jpg',
'assets/images/spain/spain-dance.jpg',
];
constructor() { }
ngOnInit(): void {
constructor(config: NgbCarouselConfig) {
config.showNavigationArrows = true;
config.showNavigationIndicators = true;
}
ngOnInit(): void {}
}
/***************************************************************************************************
* Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.
*/
import '@angular/localize/init';
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
......
/* You can add global styles to this file, and also import other style files */
.img {
height: 350px;
/* width: 500px; */
padding: 5px;
}
.slide {
padding: 0;
margin: 0;
text-align: center;
/* width: 500px; */
}
......@@ -223,6 +223,15 @@
dependencies:
tslib "^2.0.0"
"@angular/localize@11.2.10":
version "11.2.10"
resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-11.2.10.tgz#a01a9c968cef79918ded62618a2cbcffc544a702"
integrity sha512-MjJ5aOumlXZoTTtB2gfy1Y6NZmGjqOUL5t5D3jXaSCl0rUdwDglB35zKYrqRyUYoGoXSdAuZzkLdREinzZz6eA==
dependencies:
"@babel/core" "7.8.3"
glob "7.1.2"
yargs "^16.2.0"
"@angular/platform-browser-dynamic@~11.2.6":
version "11.2.10"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.10.tgz#61a2a03482221193b35207d1c2834be2f5b99aca"
......@@ -244,7 +253,7 @@
dependencies:
tslib "^2.0.0"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13":
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.8.3":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
......@@ -277,6 +286,27 @@
semver "^5.4.1"
source-map "^0.5.0"
"@babel/core@7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941"
integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==
dependencies:
"@babel/code-frame" "^7.8.3"
"@babel/generator" "^7.8.3"
"@babel/helpers" "^7.8.3"
"@babel/parser" "^7.8.3"
"@babel/template" "^7.8.3"
"@babel/traverse" "^7.8.3"
"@babel/types" "^7.8.3"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.1"
json5 "^2.1.0"
lodash "^4.17.13"
resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
"@babel/core@^7.7.5", "@babel/core@^7.8.6":
version "7.13.16"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.16.tgz#7756ab24396cc9675f1c3fcd5b79fcce192ea96a"
......@@ -307,7 +337,7 @@
jsesc "^2.5.1"
source-map "^0.5.0"
"@babel/generator@^7.12.10", "@babel/generator@^7.13.16", "@babel/generator@^7.13.9":
"@babel/generator@^7.12.10", "@babel/generator@^7.13.16", "@babel/generator@^7.13.9", "@babel/generator@^7.8.3":
version "7.13.16"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14"
integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg==
......@@ -491,7 +521,7 @@
"@babel/traverse" "^7.13.0"
"@babel/types" "^7.13.0"
"@babel/helpers@^7.12.5", "@babel/helpers@^7.13.16":
"@babel/helpers@^7.12.5", "@babel/helpers@^7.13.16", "@babel/helpers@^7.8.3":
version "7.13.16"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.16.tgz#08af075f786fd06a56e41bcac3e8cc87ddc4d0b3"
integrity sha512-x5otxUaLpdWHl02P4L94wBU+2BJXBkvO+6d6uzQ+xD9/h2hTSAwA5O8QV8GqKx/l8i+VYmKKQg9e2QGTa2Wu3Q==
......@@ -509,7 +539,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.12.10", "@babel/parser@^7.12.13", "@babel/parser@^7.12.7", "@babel/parser@^7.13.15", "@babel/parser@^7.13.16":
"@babel/parser@^7.12.10", "@babel/parser@^7.12.13", "@babel/parser@^7.12.7", "@babel/parser@^7.13.15", "@babel/parser@^7.13.16", "@babel/parser@^7.8.3":
version "7.13.16"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37"
integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw==
......@@ -1079,7 +1109,7 @@
"@babel/parser" "^7.12.7"
"@babel/types" "^7.12.7"
"@babel/template@^7.12.13", "@babel/template@^7.12.7":
"@babel/template@^7.12.13", "@babel/template@^7.12.7", "@babel/template@^7.8.3":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
......@@ -1088,7 +1118,7 @@
"@babel/parser" "^7.12.13"
"@babel/types" "^7.12.13"
"@babel/traverse@^7.12.10", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15":
"@babel/traverse@^7.12.10", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.8.3":
version "7.13.15"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7"
integrity sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ==
......@@ -1102,7 +1132,7 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.13", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.4.4", "@babel/types@^7.8.6":
"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.13", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6":
version "7.13.16"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.16.tgz#916120b858aa5655cfba84bd0f6021ff5bdb4e65"
integrity sha512-7enM8Wxhrl1hB1+k6+xO6RmxpNkaveRWkdpyii8DkrLWRgr0l3x29/SEuhTIkP+ynHsU/Hpjn8Evd/axv/ll6Q==
......@@ -4114,6 +4144,18 @@ glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0:
dependencies:
is-glob "^4.0.1"
glob@7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@7.1.6, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
......@@ -5134,7 +5176,7 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
json5@^2.1.2:
json5@^2.1.0, json5@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
......@@ -5382,7 +5424,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19:
lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.19:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment