diff --git a/.dependabot/config.yml b/.dependabot/config.yml new file mode 100644 index 0000000000..02d0ff7d3c --- /dev/null +++ b/.dependabot/config.yml @@ -0,0 +1,6 @@ +version: 1 +update_configs: + - package_manager: 'javascript' + directory: '/' + update_schedule: 'live' + target_branch: 'develop' diff --git a/.gitignore b/.gitignore index b8dc2b176e..2583516925 100644 --- a/.gitignore +++ b/.gitignore @@ -12,8 +12,8 @@ /bower_components # profiling files -chrome-profiler-events.json -speed-measure-plugin.json +chrome-profiler-events*.json +speed-measure-plugin*.json # IDEs and editors /.idea diff --git a/.travis.yml b/.travis.yml index 7352f80905..13714024e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,11 +6,7 @@ node_js: - '10' addons: - apt: - sources: - - google-chrome - packages: - - google-chrome-stable + chrome: stable cache: directories: diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bb2f8f0f0..8864329fa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,49 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [0.7.0](https://github.com/webern-unibas-ch/awg-app/compare/v0.6.1...v0.7.0) (2020-02-05) + +### ⚠ BREAKING CHANGES + +- **edition:** This change affects the url of the edition sheet view. + Sketch id's are now provided via query params instead of "normal" route params. + +### Features + +- **core:** write the GND value of a resource to the localStorage ([29234f5](https://github.com/webern-unibas-ch/awg-app/commit/29234f5ae995a5699613c93b5e2c475f6579cde3)) +- **edition:** add edition constants ([74f7156](https://github.com/webern-unibas-ch/awg-app/commit/74f715678ace35442ac7d92adaff3c40b4e802d5)) +- **edition:** add graph component with static graphs ([f7cf641](https://github.com/webern-unibas-ch/awg-app/commit/f7cf641e7cb9ca9c7fead047118dd8f2d2597048)) +- **edition:** add svg assets for op25 ([aac1f2f](https://github.com/webern-unibas-ch/awg-app/commit/aac1f2f7978bb899c41f7e73ddb92be177387357)) +- **edition:** add SvgSheetList to handle SvgSheet array ([f9a1c53](https://github.com/webern-unibas-ch/awg-app/commit/f9a1c53ec1473f1a91b09fdc3b04d6b8a74d543e)) +- **edition:** auto-instantiate EditionPath from class ([c7403dc](https://github.com/webern-unibas-ch/awg-app/commit/c7403dca7e200b70e75f2c8cc5c690ed510ccc2c)) +- **edition:** get EditionReportData for multiple works ([782d0b3](https://github.com/webern-unibas-ch/awg-app/commit/782d0b34f84acb76590fb1b78a95aece418f71ca)) +- **edition:** make convolute view handle multiple convolutes ([81e8fef](https://github.com/webern-unibas-ch/awg-app/commit/81e8fef2a8143422fcdec9cf3c27615ebf6e40a0)) +- **edition:** make EditionIntro handle multiple works ([f0d3215](https://github.com/webern-unibas-ch/awg-app/commit/f0d32159f806d4b712e4aadeb77d320864053421)) +- **edition:** make routes working with multiple compositions ([c37be2a](https://github.com/webern-unibas-ch/awg-app/commit/c37be2ad394758ff4f6904a4b02dcba33080e55d)) +- **edition:** make source description work with multiple compositions ([d31b29d](https://github.com/webern-unibas-ch/awg-app/commit/d31b29df98a54400a18f22569b8fd9dbc7212467)) +- **edition:** make source evaluation work with multiple compositions ([2743b42](https://github.com/webern-unibas-ch/awg-app/commit/2743b426438be49d390e28a1cdea93852e1e325e)) +- **edition:** make textcritics work with multiple compositions ([a03430d](https://github.com/webern-unibas-ch/awg-app/commit/a03430da0ee2d052100405ce423beb1325d977b5)) +- **edition:** move edition assets into structured folders ([afe526b](https://github.com/webern-unibas-ch/awg-app/commit/afe526bc84e0aa4034810415e6fef6ccc19dc17a)) +- **edition:** prepare EditionView to handle multiple EditionWorks ([c26d355](https://github.com/webern-unibas-ch/awg-app/commit/c26d355bdb9c7401b503e1f33c9c0d135d0b3da6)) +- **edition:** use queryParams instead of urlParams for sketch routing ([af9ef35](https://github.com/webern-unibas-ch/awg-app/commit/af9ef357c0bfedd3111b3172657b35e70b672053)) + +### Bug Fixes + +- **app:** move op12 assets into separate folder ([7036d30](https://github.com/webern-unibas-ch/awg-app/commit/7036d301e10c4c8e384d70bb58750fdd9882c0cd)) +- **app:** use EditionConstants for routerLinks ([7824cd8](https://github.com/webern-unibas-ch/awg-app/commit/7824cd8cda686dd75f9fbc4f747e2b9dc24a3e40)) +- **core:** improve handling for gnd recognition ([c2fdbd8](https://github.com/webern-unibas-ch/awg-app/commit/c2fdbd86ec3c07aa0dd0edd18ee874430122a916)) +- **edition:** avoid circular dependency in EditionPath imports ([15ee461](https://github.com/webern-unibas-ch/awg-app/commit/15ee461137e89225f506b09742b539f3350aedf7)) +- **edition:** get firmSigns dynamically ([3415f84](https://github.com/webern-unibas-ch/awg-app/commit/3415f8447b7fbb7044a2f34baea79ac4b8193c34)) +- **edition:** improve handling of textcritical comments flow ([de94dbe](https://github.com/webern-unibas-ch/awg-app/commit/de94dbe367c6279f0535d0edbc07904f809dc66c)) +- **edition:** make modals work with multiple works ([5c84f76](https://github.com/webern-unibas-ch/awg-app/commit/5c84f76bee00eac87dabcf0a6bf9ba3d4989cd2c)) +- **edition:** move back to root and link for routerLinks ([8f1c476](https://github.com/webern-unibas-ch/awg-app/commit/8f1c4764cb549eb84acc198b7372ca08404d254c)) +- **edition:** move edition assets path to edition constants ([e906b6d](https://github.com/webern-unibas-ch/awg-app/commit/e906b6d620edb4a39e915e8f165f44bbca07d1bf)) +- **edition:** remove hard-coded EditionWork from navigation ([8ed8f47](https://github.com/webern-unibas-ch/awg-app/commit/8ed8f476caea6d4f0ba656e86c3ec16a4747b054)) +- **edition:** use EditionRoutes for EditionWork class ([c6e0da7](https://github.com/webern-unibas-ch/awg-app/commit/c6e0da71a08aab14ff41a99fa914d5a24313f40e)) +- **search:** repair nav arrows for imageobject component ([78e0f73](https://github.com/webern-unibas-ch/awg-app/commit/78e0f730e573311bad52fe4fc4867b8e4bfdc246)) +- **shared:** make queryParamsHandling for routerLinkButton configurable ([233e1d8](https://github.com/webern-unibas-ch/awg-app/commit/233e1d831e1aed39a744832f78f6efded612dda7)) +- **shared:** name routerLinkButtons consistently ([fba09ab](https://github.com/webern-unibas-ch/awg-app/commit/fba09abbccb1170118056e8e4a863f4415560a9d)) + ### [0.6.1](https://github.com/webern-unibas-ch/awg-app/compare/v0.6.0...v0.6.1) (2019-07-19) ### Build System diff --git a/angular.json b/angular.json index 491ed35a0c..44e28540c3 100644 --- a/angular.json +++ b/angular.json @@ -21,8 +21,9 @@ "assets": ["src/favicon.ico", "src/assets"], "aot": false, "styles": [ - "node_modules/bootstrap/dist/css/bootstrap.min.css", "src/index.style.css", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/font-awesome/scss/font-awesome.scss", "src/styles.css" ], "scripts": [ @@ -53,6 +54,11 @@ "type": "initial", "maximumWarning": "2mb", "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" } ] } @@ -86,6 +92,7 @@ "styles": [ "src/index.style.css", "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/font-awesome/scss/font-awesome.scss", "src/styles.css" ], "scripts": [ diff --git a/commitlint.config.js b/commitlint.config.js index dcbc6a0df7..d3ecb7b375 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -8,6 +8,7 @@ module.exports = { 'always', [ 'app', + 'deps', 'core', 'shared', 'side-info', diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts index 42ac070f30..4dbab2fdcb 100644 --- a/e2e/src/app.e2e-spec.ts +++ b/e2e/src/app.e2e-spec.ts @@ -10,7 +10,7 @@ describe('awg-app', () => { it('should display welcome message', () => { page.navigateTo(); - expect(page.getTitleText()).toEqual('Welcome to awg-app!'); + expect(page.getTitleText()).toEqual('awg-app is running!'); }); afterEach(async () => { diff --git a/karma.conf.js b/karma.conf.js index 96debd9e3a..2a9d3e2d73 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -30,24 +30,19 @@ module.exports = function(config) { fixWebpackSourcePaths: true }, reporters: ['progress', 'kjhtml'], + customLaunchers: { + // cf. https://medium.com/faun/configuring-travis-ci-for-angular-application-34afee1715f + ChromeHeadlessNoSandbox: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'] + } + }, port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], singleRun: false, - restartOnFileChange: true, - customLaunchers: { - ChromeHeadless: { - base: 'Chrome', - flags: [ - // See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md - '--headless', - '--disable-gpu', - // Without a remote debugging port, Google Chrome exits immediately. - '--remote-debugging-port=9222' - ] - } - } + restartOnFileChange: true }); }; diff --git a/package.json b/package.json index 1d19605abc..321a2a755f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "awg-app", - "version": "0.6.1", + "version": "0.7.0", "license": "MIT", "author": { "name": "Stefan Münnich", @@ -28,7 +28,7 @@ "e2e": "ng e2e", "test": "ng test", "test:cov": "ng test awg-app --code-coverage", - "test:ci": "yarn test:cov --watch=false --browsers=ChromeHeadless", + "test:ci": "yarn test:cov --watch=false --browsers=ChromeHeadlessNoSandbox", "lint": "ng lint awg-app", "tslint-check": "tslint-config-prettier-check ./tslint.json", "format:check": "prettier --check \"src/**/*.ts\"", @@ -41,7 +41,7 @@ "build:gh": "cross-var yarn build:prod --base-href $npm_package_homepage", "gzip:dist": "gzipper ./dist", "prewpanalyzer": "yarn build:prod --statsJson", - "wpanalyzer": "webpack-bundle-analyzer dist/stats.json", + "wpanalyzer": "webpack-bundle-analyzer dist/stats-es2015.json", "presourcemap": "yarn build:prod --sourceMap", "sourcemap": "source-map-explorer dist/*.js", "build:css": "./themes/bin/build-css", @@ -81,45 +81,46 @@ "arrowParens": "avoid" }, "dependencies": { - "@angular/animations": "^8.0.3", - "@angular/common": "^8.0.3", - "@angular/compiler": "^8.0.3", - "@angular/core": "^8.0.3", - "@angular/forms": "^8.0.3", - "@angular/platform-browser": "^8.0.3", - "@angular/platform-browser-dynamic": "^8.0.3", - "@angular/platform-server": "^8.0.3", - "@angular/router": "^8.0.3", - "@fortawesome/angular-fontawesome": "^0.4.0", - "@fortawesome/fontawesome-svg-core": "^1.2.19", - "@fortawesome/free-solid-svg-icons": "^5.9.0", - "@ng-bootstrap/ng-bootstrap": "^4.2.1", - "bootstrap": "^4.3.1", + "@angular/animations": "~8.2.14", + "@angular/common": "~8.2.14", + "@angular/compiler": "~8.2.14", + "@angular/core": "~8.2.14", + "@angular/forms": "~8.2.14", + "@angular/platform-browser": "~8.2.14", + "@angular/platform-browser-dynamic": "~8.2.14", + "@angular/platform-server": "~8.2.14", + "@angular/router": "~8.2.14", + "@fortawesome/angular-fontawesome": "^0.5.0", + "@fortawesome/fontawesome-svg-core": "^1.2.26", + "@fortawesome/free-solid-svg-icons": "^5.12.0", + "@kolkov/ngx-gallery": "^1.0.9", + "@ng-bootstrap/ng-bootstrap": "^5.1.5", + "bootstrap": "^4.4.1", + "font-awesome": "^4.7.0", "json2typescript": "^1.2.3", - "ngx-gallery": "git://github.com/musicEnfanthen/ngx-gallery-dist-patch", "ngx-json-viewer": "^2.4.0", - "rxjs": "~6.5.2", + "rxjs": "~6.5.4", "snapsvg": "^0.5.1", - "tslib": "^1.9.0", + "tslib": "^1.10.0", "zone.js": "~0.9.1" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.800.6", - "@angular/cli": "~8.0.6", - "@angular/compiler-cli": "^8.0.3", - "@angular/language-service": "^8.0.3", - "@commitlint/cli": "^8.0.0", - "@commitlint/config-angular": "^8.0.0", - "@compodoc/compodoc": "^1.1.9", + "@angular-devkit/build-angular": "~0.803.21", + "@angular/cli": "~8.3.21", + "@angular/compiler-cli": "~8.2.14", + "@angular/language-service": "~8.2.14", + "@commitlint/cli": "^8.3.4", + "@commitlint/config-angular": "^8.3.4", + "@compodoc/compodoc": "^1.1.11", "@types/jasmine": "~3.3.8", "@types/jasminewd2": "~2.0.3", "@types/node": "~8.9.4", - "angular-cli-ghpages": "^0.5.3", - "codelyzer": "^5.0.0", - "conventional-recommended-bump": "^5.0.0", + "angular-cli-ghpages": "^0.6.2", + "codelyzer": "^5.2.1", + "conventional-recommended-bump": "^6.0.5", "cross-var": "^1.1.0", - "gzipper": "^2.8.0", - "husky": "^2.4.1", + "gzipper": "^3.4.2", + "husky": "^4.0.0", "jasmine-core": "~3.4.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~4.1.0", @@ -127,19 +128,19 @@ "karma-coverage-istanbul-reporter": "~2.0.1", "karma-jasmine": "~2.0.1", "karma-jasmine-html-reporter": "^1.4.0", - "node-sass": "^4.12.0", - "nodemon": "^1.19.1", + "node-sass": "^4.13.0", + "nodemon": "^2.0.2", "npm-run-all": "^4.1.5", - "prettier": "1.18.2", - "pretty-quick": "^1.11.1", + "prettier": "~1.19.1", + "pretty-quick": "^2.0.1", "protractor": "~5.4.0", - "source-map-explorer": "^2.0.1", - "standard-version": "^6.0.1", + "source-map-explorer": "^2.2.1", + "standard-version": "^7.0.1", "ts-node": "~7.0.0", "tslint": "~5.15.0", "tslint-config-prettier": "^1.18.0", - "typescript": "~3.4.5", - "webpack-bundle-analyzer": "^3.3.2" + "typescript": "~3.5.3", + "webpack-bundle-analyzer": "^3.6.0" }, "engines": { "node": ">= 8.9.0", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index dc82a77c55..26d3ec9ea9 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,36 +1,35 @@ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; -import { HomeViewComponent } from './views/home-view/home-view.component'; -import { PageNotFoundViewComponent } from './views/page-not-found-view/page-not-found-view.component'; - /* routes of the AppModule */ const appRoutes: Routes = [ - // eager loaded - { path: 'home', component: HomeViewComponent }, - // lazy loaded - { path: 'contact', loadChildren: () => import('./views/contact-view/contact.module').then(m => m.ContactModule) }, - { path: 'data', loadChildren: () => import('./views/data-view/data.module').then(m => m.DataModule) }, - { path: 'edition', loadChildren: () => import('./views/edition-view/edition.module').then(m => m.EditionModule) }, + { path: 'home', loadChildren: () => import('@awg-views/home-view/home-view.module').then(m => m.HomeViewModule) }, + { + path: 'contact', + loadChildren: () => import('@awg-views/contact-view/contact-view.module').then(m => m.ContactViewModule) + }, + { path: 'data', loadChildren: () => import('@awg-views/data-view/data-view.module').then(m => m.DataViewModule) }, + { + path: 'edition', + loadChildren: () => import('@awg-views/edition-view/edition-view.module').then(m => m.EditionViewModule) + }, { path: 'editions', redirectTo: 'edition', pathMatch: 'full' }, { path: 'structure', - loadChildren: () => import('./views/structure-view/structure.module').then(m => m.StructureModule) + loadChildren: () => import('@awg-views/structure-view/structure-view.module').then(m => m.StructureViewModule) }, // default routes { path: '', redirectTo: 'home', pathMatch: 'full' }, - { path: '404', component: PageNotFoundViewComponent }, + { + path: '404', + loadChildren: () => + import('@awg-views/page-not-found-view/page-not-found-view.module').then(m => m.PageNotFoundViewModule) + }, { path: '**', redirectTo: '404', pathMatch: 'full' } ]; -/** - * Routed components of the {@link AppModule}: - * {@link HomeViewComponent} and {@link PageNotFoundViewComponent}. - */ -export const routedAppComponents = [HomeViewComponent, PageNotFoundViewComponent]; - /** * Main app module routing. * @@ -40,10 +39,10 @@ export const routedAppComponents = [HomeViewComponent, PageNotFoundViewComponent imports: [ RouterModule.forRoot(appRoutes, { anchorScrolling: 'enabled', // use anchor scrolling - scrollPositionRestoration: 'enabled', // restore scroll position onSameUrlNavigation: 'reload', // reload when navigating to same url + scrollPositionRestoration: 'enabled', // restore scroll position preloadingStrategy: PreloadAllModules // preload all lazy modules - // enableTracing: true // TODO: do not enable tracing for prodcution + // enableTracing: true // TODO: do not enable tracing for production }) ], exports: [RouterModule] diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 1c1d7e9840..4ae00b921d 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -20,7 +20,7 @@ export class AppComponent { * * @param {Router} router Instance of the Angular router. */ - constructor(private router: Router) { + constructor(private readonly router: Router) { this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { (window as any).ga('set', 'page', event.urlAfterRedirects); diff --git a/src/app/app.globals.ts b/src/app/app.globals.ts index b94ecf3afb..2b258c7079 100644 --- a/src/app/app.globals.ts +++ b/src/app/app.globals.ts @@ -1,15 +1,15 @@ // THIS IS AN AUTO-GENERATED FILE. DO NOT CHANGE IT MANUALLY! -// Generated last time on Fri Jul 19 15:15:56 CEST 2019 +// Generated last time on Wed Feb 5 14:49:11 CET 2020 /** * The latest version of the AWG App */ -export const appVersion = '0.6.1'; +export const appVersion = '0.7.0'; /** * The release date of the latest version of the AWG App */ -export const appVersionReleaseDate = '19. Juli 2019'; +export const appVersionReleaseDate = '05. Februar 2020'; /** * The URL of the AWG App diff --git a/src/app/app.module.ts b/src/app/app.module.ts index a6dfa9464b..d413bd7533 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -12,7 +12,7 @@ import { SharedModule } from '@awg-shared/shared.module'; import { SideInfoModule } from '@awg-side-info/side-info.module'; /* Routing Module */ -import { AppRoutingModule, routedAppComponents } from './app-routing.module'; +import { AppRoutingModule } from './app-routing.module'; /* load and register the used locale file */ registerLocaleData(localeDeDE); @@ -25,7 +25,7 @@ registerLocaleData(localeDeDE); */ @NgModule({ imports: [BrowserModule, HttpClientModule, CoreModule, SharedModule, SideInfoModule, AppRoutingModule], - declarations: [AppComponent, routedAppComponents], + declarations: [AppComponent], providers: [{ provide: LOCALE_ID, useValue: 'de-DE' }], // change global LOCALE-ID bootstrap: [AppComponent] }) diff --git a/src/app/core/footer/footer.component.spec.ts b/src/app/core/footer/footer.component.spec.ts index 40f156faa1..8e03dd89b1 100644 --- a/src/app/core/footer/footer.component.spec.ts +++ b/src/app/core/footer/footer.component.spec.ts @@ -4,7 +4,16 @@ import { Component, DebugElement, Input } from '@angular/core'; import { getAndExpectDebugElementByCss, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; -import { Logo, Logos, MetaPage, MetaSectionTypes } from '@awg-core/core-models'; +import { + Logo, + Logos, + Meta, + MetaContact, + MetaEdition, + MetaPage, + MetaSectionTypes, + MetaStructure +} from '@awg-core/core-models'; import { LOGOSDATA, METADATA } from '@awg-core/mock-data'; import { CoreService } from '@awg-core/services'; @@ -88,21 +97,20 @@ describe('FooterComponent (DONE)', () => { it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the stub service has no effect on the injected service - let changedPageMetaData = new MetaPage(); - changedPageMetaData = { - yearStart: 2015, - yearCurrent: 2017, - awgAppUrl: '', - compodocUrl: '', - githubUrl: '', - awgProjectName: '', - awgProjectUrl: '', - version: '1.0.0', - versionReleaseDate: '8. November 2016' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() + }; + mockCoreService = { + getMetaDataSection: sectionType => CHANGEDMETA[sectionType], + getLogos: () => expectedLogos }; - mockCoreService.getMetaDataSection = () => changedPageMetaData; expect(coreService.getMetaDataSection(MetaSectionTypes.page)).toBe(expectedPageMetaData); }); diff --git a/src/app/core/mock-data/meta.data.ts b/src/app/core/mock-data/meta.data.ts index b6275d31f8..57e8d7e02a 100644 --- a/src/app/core/mock-data/meta.data.ts +++ b/src/app/core/mock-data/meta.data.ts @@ -30,7 +30,7 @@ const METAEDITION: MetaEdition = { contactUrl: AppConfig.AWG_PROJECT_URL + 'index.php?id=3' } ], - lastModified: '29. Januar 2016' + lastModified: '29. Januar 2020' }; /** diff --git a/src/app/core/navbar/navbar.component.html b/src/app/core/navbar/navbar.component.html index 9845073b73..5b2b60cadf 100644 --- a/src/app/core/navbar/navbar.component.html +++ b/src/app/core/navbar/navbar.component.html @@ -44,39 +44,80 @@
- Auswahl Skizzenkomplex + {{ editionWork.work.full }} + + Einleitung - Aa:SkI/2 - Aa:SkI/3 - Aa:SkI/4 - Aa:SkI/5 - I. Quellen - I. Quellen + 1. Quellenübersicht - 2. Quellenbeschreibung 3. Quellenbewertung - II. Textkritischer Kommentar
diff --git a/src/app/core/navbar/navbar.component.spec.ts b/src/app/core/navbar/navbar.component.spec.ts index 2daeccc0b9..ece440f265 100644 --- a/src/app/core/navbar/navbar.component.spec.ts +++ b/src/app/core/navbar/navbar.component.spec.ts @@ -10,9 +10,10 @@ import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { faEnvelope, faFileAlt, faHome, faNetworkWired, faSearch } from '@fortawesome/free-solid-svg-icons'; -import { MetaPage, MetaSectionTypes } from '@awg-core/core-models'; +import { Meta, MetaContact, MetaEdition, MetaPage, MetaSectionTypes, MetaStructure } from '@awg-core/core-models'; import { METADATA } from '@awg-core/mock-data'; import { CoreService } from '@awg-core/services'; +import { EditionWork, EditionWorks } from '@awg-views/edition-view/models'; import { NavbarComponent } from './navbar.component'; @@ -29,10 +30,13 @@ describe('NavbarComponent (DONE)', () => { let expectedPageMetaData: MetaPage; let expectedIsCollapsed: boolean; + let expectedEditionWorks: EditionWork[] = [EditionWorks.op12, EditionWorks.op25]; + let expectedSelectEditionWork: EditionWork = EditionWorks.op12; + beforeEach(async(() => { // stub service for test purposes mockCoreService = { - getMetaDataSection: () => expectedPageMetaData + getMetaDataSection: sectionType => METADATA[sectionType] }; TestBed.configureTestingModule({ @@ -51,6 +55,8 @@ describe('NavbarComponent (DONE)', () => { // test data expectedIsCollapsed = true; expectedPageMetaData = METADATA[MetaSectionTypes.page]; + expectedEditionWorks = [EditionWorks.op12, EditionWorks.op25]; + expectedSelectEditionWork = EditionWorks.op12; // spies on component functions // `.and.callThrough` will track the spy down the nested describes, see @@ -59,30 +65,26 @@ describe('NavbarComponent (DONE)', () => { spyOn(component, 'toggleNav').and.callThrough(); }); + it('should create', () => { + expect(component).toBeTruthy(); + }); + it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the stub service has no effect on the injected service - let changedPageMetaData = new MetaPage(); - changedPageMetaData = { - yearStart: 2015, - yearCurrent: 2017, - awgAppUrl: '', - compodocUrl: '', - githubUrl: '', - awgProjectName: '', - awgProjectUrl: '', - version: '1.0.0', - versionReleaseDate: '8. November 2016' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() }; - mockCoreService.getMetaDataSection = () => changedPageMetaData; + mockCoreService = { getMetaDataSection: sectionType => CHANGEDMETA[sectionType] }; - expect(coreService.getMetaDataSection()).toBe(expectedPageMetaData); - }); - - it('should create', () => { - expect(component).toBeTruthy(); + expect(coreService.getMetaDataSection(MetaSectionTypes.page)).toBe(expectedPageMetaData); }); describe('BEFORE initial data binding', () => { @@ -206,28 +208,76 @@ describe('NavbarComponent (DONE)', () => { describe('[routerLink]', () => { beforeEach(() => { // find DebugElements with an attached RouterLinkStubDirective - linkDes = getAndExpectDebugElementByDirective(compDe, RouterLinkStubDirective, 14, 14); + linkDes = getAndExpectDebugElementByDirective(compDe, RouterLinkStubDirective, 16, 16); // get attached link directive instances using each DebugElement's injector routerLinks = linkDes.map(de => de.injector.get(RouterLinkStubDirective)); }); - it('... can get 14 routerLinks from template', () => { - expect(routerLinks.length).toBe(14, 'should have 14 routerLinks'); + it('... can get 16 routerLinks from template', () => { + expect(routerLinks.length).toBe(16, 'should have 16 routerLinks'); + }); + + it('... can get correct routes from routerLinks', () => { expect(routerLinks[0].linkParams).toEqual(['/home']); - expect(routerLinks[1].linkParams).toEqual(['/edition', 'intro']); - expect(routerLinks[2].linkParams).toEqual(['/edition/detail', 'Aa:SkI/2']); - expect(routerLinks[3].linkParams).toEqual(['/edition/detail', 'Aa:SkI/3']); - expect(routerLinks[4].linkParams).toEqual(['/edition/detail', 'Aa:SkI/4']); - expect(routerLinks[5].linkParams).toEqual(['/edition/detail', 'Aa:SkI/5']); - expect(routerLinks[6].linkParams).toEqual(['/edition', 'report']); - expect(routerLinks[7].linkParams).toEqual(['/edition', 'report']); - expect(routerLinks[8].linkParams).toEqual(['/edition', 'report']); - expect(routerLinks[9].linkParams).toEqual(['/edition', 'report']); - expect(routerLinks[10].linkParams).toEqual(['/edition', 'report']); - expect(routerLinks[11].linkParams).toEqual(['/structure']); - expect(routerLinks[12].linkParams).toEqual(['/data/search', 'fulltext']); - expect(routerLinks[13].linkParams).toEqual(['/contact']); + expect(routerLinks[1].linkParams).toEqual([ + expectedEditionWorks[0].baseRoute, + expectedEditionWorks[0].introRoute + ]); + expect(routerLinks[2].linkParams).toEqual([ + expectedEditionWorks[1].baseRoute, + expectedEditionWorks[1].introRoute + ]); + expect(routerLinks[3].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.introRoute + ]); + expect(routerLinks[4].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.detailRoute + ]); + expect(routerLinks[5].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.detailRoute + ]); + expect(routerLinks[6].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.detailRoute + ]); + expect(routerLinks[7].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.detailRoute + ]); + expect(routerLinks[8].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.reportRoute + ]); + expect(routerLinks[9].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.reportRoute + ]); + expect(routerLinks[10].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.reportRoute + ]); + expect(routerLinks[11].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.reportRoute + ]); + expect(routerLinks[12].linkParams).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.reportRoute + ]); + expect(routerLinks[13].linkParams).toEqual(['/structure']); + expect(routerLinks[14].linkParams).toEqual(['/data/search', 'fulltext']); + expect(routerLinks[15].linkParams).toEqual(['/contact']); + }); + + it('... can get correct queryParams from routerLinks', () => { + expect(routerLinks[4].queryParams).toEqual({ sketch: 'Aa:SkI/2' }); + expect(routerLinks[5].queryParams).toEqual({ sketch: 'Aa:SkI/3' }); + expect(routerLinks[6].queryParams).toEqual({ sketch: 'Aa:SkI/4' }); + expect(routerLinks[7].queryParams).toEqual({ sketch: 'Aa:SkI/5' }); }); it('... can click Home link in template', () => { @@ -251,12 +301,15 @@ describe('NavbarComponent (DONE)', () => { click(editionLinkDe); fixture.detectChanges(); - expect(editionLink.navigatedTo).toEqual(['/edition', 'intro']); + expect(editionLink.navigatedTo).toEqual([ + expectedSelectEditionWork.baseRoute, + expectedSelectEditionWork.introRoute + ]); }); it('... can click Structure link in template', () => { - const structureLinkDe = linkDes[11]; // contact link DebugElement - const structureLink = routerLinks[11]; // contact link directive + const structureLinkDe = linkDes[13]; // contact link DebugElement + const structureLink = routerLinks[13]; // contact link directive expect(structureLink.navigatedTo).toBeNull('should not have navigated yet'); @@ -267,8 +320,8 @@ describe('NavbarComponent (DONE)', () => { }); it('... can click Data link in template', () => { - const dataLinkDe = linkDes[12]; // contact link DebugElement - const dataLink = routerLinks[12]; // contact link directive + const dataLinkDe = linkDes[14]; // contact link DebugElement + const dataLink = routerLinks[14]; // contact link directive expect(dataLink.navigatedTo).toBeNull('should not have navigated yet'); @@ -279,8 +332,8 @@ describe('NavbarComponent (DONE)', () => { }); it('... can click Contact link in template', () => { - const contactLinkDe = linkDes[13]; // contact link DebugElement - const contactLink = routerLinks[13]; // contact link directive + const contactLinkDe = linkDes[15]; // contact link DebugElement + const contactLink = routerLinks[15]; // contact link directive expect(contactLink.navigatedTo).toBeNull('should not have navigated yet'); diff --git a/src/app/core/navbar/navbar.component.ts b/src/app/core/navbar/navbar.component.ts index 009376600e..2839b62920 100644 --- a/src/app/core/navbar/navbar.component.ts +++ b/src/app/core/navbar/navbar.component.ts @@ -4,6 +4,7 @@ import { faEnvelope, faFileAlt, faHome, faNetworkWired, faSearch } from '@fortaw import { MetaPage, MetaSectionTypes } from '@awg-core/core-models'; import { CoreService } from '@awg-core/services'; +import { EditionWork, EditionWorks } from '@awg-views/edition-view/models'; /** * The Header component. @@ -66,6 +67,20 @@ export class NavbarComponent implements OnInit { */ pageMetaData: MetaPage; + /** + * Readonly constant: editionWorks. + * + * It keeps the array of compositions. + */ + readonly editionWorks: EditionWork[] = [EditionWorks.op12, EditionWorks.op25]; + + /** + * Public variable: editionWork. + * + * It keeps the currently selected compositions. + */ + selectedEditionWork: EditionWork; + /** * Constructor of the HeaderComponent. * @@ -83,6 +98,9 @@ export class NavbarComponent implements OnInit { * when initializing the component. */ ngOnInit() { + // TODO: move to method + this.selectedEditionWork = this.editionWorks[0]; + this.provideMetaData(); } diff --git a/src/app/core/services/conversion-service/conversion.service.ts b/src/app/core/services/conversion-service/conversion.service.ts index 6d00bddeb6..60e8e68908 100644 --- a/src/app/core/services/conversion-service/conversion.service.ts +++ b/src/app/core/services/conversion-service/conversion.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NgxGalleryImage } from 'ngx-gallery'; +import { NgxGalleryImage } from '@kolkov/ngx-gallery'; import { ApiService } from '@awg-core/services/api-service'; import { GeoNames } from '@awg-core/core-models'; @@ -21,6 +21,7 @@ import { SelectionJson, SubjectItemJson } from '@awg-shared/api-objects'; +import { PropertyJsonValue } from '@awg-shared/api-objects/resource-response-formats/src/property-json'; import { IResourceDataResponse, ResourceDetail, @@ -199,6 +200,7 @@ export class ConversionService extends ApiService { for (let i = 0; i < prop.values.length; i++) { // init + let htmlstr = ''; // convert linear salsah standoff to html (using plugin "htmlConverter") @@ -492,6 +494,11 @@ export class ConversionService extends ApiService { case '14': // RICHTEXT: salsah standoff needs to be converted for (let i = 0; i < prop.values.length; i++) { + // if we have a gnd (prop.pid=856), write it to localstorage + if (prop.pid === '856' && prop.values[i]) { + this.writeGndToLocalStorage(prop.values[i]); + } + // convert richtext standoff prop.toHtml[i] = this.convertRichtextValue(prop.values[i].utf8str, prop.values[i].textattr); } break; // END richtext @@ -943,4 +950,32 @@ export class ConversionService extends ApiService { links: incomingLinks.filter(incomingLink => incomingLink.restype.label === label) })); } + + /** + * Private method: writeGndToLocalStorage. + * + * It writes the GND number to the localStorage + * for further processing. + * + * @param {} value The given incoming property value. + * + * @returns {void} Writes the GND number to the localStorage. + */ + private writeGndToLocalStorage(value: PropertyJsonValue): void { + const dnbReg = 'http://d-nb.info/gnd/'; + const gndKey = 'gnd'; + let gndItem: string; + + const valueHasGnd = (checkValue: PropertyJsonValue) => { + return !(!checkValue || !checkValue.utf8str || !checkValue.utf8str.includes(dnbReg)); + }; + + if (valueHasGnd(value)) { + // split utf8str with gnd value into array and take last argument (pop) + gndItem = value.utf8str.split(dnbReg).pop(); + localStorage.setItem(gndKey, gndItem); + } else { + localStorage.removeItem(gndKey); + } + } } diff --git a/src/app/core/services/core-service/core.service.ts b/src/app/core/services/core-service/core.service.ts index 1f1e78dfb9..1d2aca73ea 100644 --- a/src/app/core/services/core-service/core.service.ts +++ b/src/app/core/services/core-service/core.service.ts @@ -19,12 +19,12 @@ export class CoreService { * * It provides a section of the meta data object. * - * @params {} [section] The given section. + * @params {S} [sectionType] The given sectionType. * - * @returns {Meta[K]} The section K of the metadata object. + * @returns {Meta[S]} The sectionType S of the metadata object. */ - getMetaDataSection(section: K): Meta[K] { - return METADATA[section]; + getMetaDataSection(sectionType: S): Meta[S] { + return METADATA[sectionType]; } /** diff --git a/src/app/shared/heading/heading.component.html b/src/app/shared/heading/heading.component.html index c275229ad9..4be2ea0fbf 100644 --- a/src/app/shared/heading/heading.component.html +++ b/src/app/shared/heading/heading.component.html @@ -1,4 +1,3 @@
-

+

- diff --git a/src/app/shared/heading/heading.component.spec.ts b/src/app/shared/heading/heading.component.spec.ts index 2e09014457..52bfa5ad52 100644 --- a/src/app/shared/heading/heading.component.spec.ts +++ b/src/app/shared/heading/heading.component.spec.ts @@ -43,9 +43,9 @@ describe('HeadingComponent (DONE)', () => { }); describe('VIEW', () => { - it('... should contain one div.para with an h2', () => { + it('... should contain one div.para with an h3', () => { getAndExpectDebugElementByCss(compDe, 'div.para', 1, 1); - getAndExpectDebugElementByCss(compDe, 'div.para > h2', 1, 1); + getAndExpectDebugElementByCss(compDe, 'div.para > h3', 1, 1); }); }); }); @@ -63,7 +63,7 @@ describe('HeadingComponent (DONE)', () => { describe('VIEW', () => { it('... should pass down `title` and `id` to component', () => { const divDes = getAndExpectDebugElementByCss(compDe, 'div.para', 1, 1); - const headerDes = getAndExpectDebugElementByCss(compDe, 'div.para > h2', 1, 1); + const headerDes = getAndExpectDebugElementByCss(compDe, 'div.para > h3', 1, 1); const divEl = divDes[0].nativeElement; const headerEl = headerDes[0].nativeElement; diff --git a/src/app/shared/modal/modal.component.ts b/src/app/shared/modal/modal.component.ts index 5f33cd40b5..b78d1d2737 100644 --- a/src/app/shared/modal/modal.component.ts +++ b/src/app/shared/modal/modal.component.ts @@ -6,15 +6,17 @@ import { ModalDismissReasons, NgbModal } from '@ng-bootstrap/ng-bootstrap'; * * It provides the text snippets to be used in a modal. * - * Available snippet keys: `sourceNotA`, `sheetComingSoon`, `editionComingSoon`, `M198`. + * Available snippet keys: `op12_sourceNotA`, `op12_sheetComingSoon`, `op12_editionComingSoon`, `M198`. */ const MODALCONTENTSNIPPETS = { - sourceNotA: + op12_sourceNotA: '

Die Beschreibung der weiteren Quellenbestandteile von A sowie der Quellen B bis G1 einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.

', - sheetComingSoon: + op12_sheetComingSoon: 'Die edierten Notentexte von Aa:SkI/1, Ab:SkII/1, Ac:SkIII/1 und Ac:SkIII/7 sowie Ae:SkIV/1 erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.', - editionComingSoon: + op12_editionComingSoon: '

Die Einleitungen, edierten Notentexte und Kritischen Berichte zu

  • Werkedition der Druckfassung der Vier Lieder op. 12
    Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 1)
    Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 2)
    Textedition von Nr. IV Gleich und Gleich (Fassung 1)

erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.

', + op25_sourceNotA: + '

Die Beschreibung der Quellen B sowie D–E einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.

', M198: '

Das Fragment „Schien mir’s als ich sah die Sonne“ (M 198) für Chor und Orchester wird in AWG II/3 ediert.

' }; diff --git a/src/app/shared/router-link-button-group/router-link-button-group.component.html b/src/app/shared/router-link-button-group/router-link-button-group.component.html index 9fc52f3b3a..4339520442 100644 --- a/src/app/shared/router-link-button-group/router-link-button-group.component.html +++ b/src/app/shared/router-link-button-group/router-link-button-group.component.html @@ -2,13 +2,13 @@ diff --git a/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts b/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts index f8680ee557..c73589331f 100644 --- a/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts +++ b/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts @@ -1,5 +1,7 @@ import { async, ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; +import { QueryParamsHandling } from '@angular/router'; + import Spy = jasmine.Spy; import { click, clickAndAwaitChanges } from '@testing/click-helper'; @@ -11,7 +13,6 @@ import { import { RouterLinkStubDirective } from '@testing/router-stubs'; import { RouterLinkButton } from '@awg-shared/router-link-button-group/router-link-button.model'; - import { RouterLinkButtonGroupComponent } from './router-link-button-group.component'; describe('RouterLinkButtonGroupComponent (DONE)', () => { @@ -22,7 +23,8 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { let linkDes: DebugElement[]; let routerLinks; - let expectedButtonArray: RouterLinkButton[]; + let expectedRouterLinkButtons: RouterLinkButton[]; + let expectedQueryParamsHandling: QueryParamsHandling; let selectButtonSpy: Spy; let emitSpy: Spy; @@ -40,11 +42,12 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { compEl = compDe.nativeElement; // test data - expectedButtonArray = [ + expectedRouterLinkButtons = [ new RouterLinkButton('/data/search', 'fulltext', 'Volltext-Suche', false), new RouterLinkButton('/data/search', 'timeline', 'Timeline', true), new RouterLinkButton('/data/search', 'bibliography', 'Bibliographie', true) ]; + expectedQueryParamsHandling = 'preserve'; // spies on component functions // `.and.callThrough` will track the spy down the nested describes, see @@ -59,7 +62,11 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { describe('BEFORE initial data binding', () => { it('should not have `buttonArray` input', () => { - expect(component.buttonArray).toBeUndefined('should be undefined'); + expect(component.routerLinkButtons).toBeUndefined('should be undefined'); + }); + + it('should have default `queryParamsHandling` input', () => { + expect(component.queryParamsHandling).toBe(''); }); describe('#onButtonSelect', () => { @@ -82,12 +89,24 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { describe('AFTER initial data binding', () => { beforeEach(() => { // simulate the parent setting the input properties - component.buttonArray = expectedButtonArray; + component.routerLinkButtons = expectedRouterLinkButtons; + component.queryParamsHandling = expectedQueryParamsHandling; // trigger initial data binding fixture.detectChanges(); }); + it('should have `buttonArray` input', () => { + expect(component.routerLinkButtons).toEqual( + expectedRouterLinkButtons, + 'should equal expectedRouterLinkButtons' + ); + }); + + it('should have `queryParamsHandling` input', () => { + expect(component.queryParamsHandling).toBe(expectedQueryParamsHandling, 'should be preserve'); + }); + describe('VIEW', () => { it('... should contain 3 buttons', () => { getAndExpectDebugElementByCss(compDe, 'button.btn', 3, 3); @@ -99,9 +118,9 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { const btn1El = btnDes[1].nativeElement; const btn2El = btnDes[2].nativeElement; - expect(btn0El.disabled).toBe(expectedButtonArray[0].disabled, 'should not be disabled'); - expect(btn1El.disabled).toBe(expectedButtonArray[1].disabled, 'should be disabled'); - expect(btn2El.disabled).toBe(expectedButtonArray[2].disabled, 'should be disabled'); + expect(btn0El.disabled).toBe(expectedRouterLinkButtons[0].disabled, 'should not be disabled'); + expect(btn1El.disabled).toBe(expectedRouterLinkButtons[1].disabled, 'should be disabled'); + expect(btn2El.disabled).toBe(expectedRouterLinkButtons[2].disabled, 'should be disabled'); }); it('... should render button labels', () => { @@ -112,18 +131,18 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { expect(btn0El.textContent).toBeDefined(); expect(btn0El.textContent).toMatch( - expectedButtonArray[0].label, - `should be ${expectedButtonArray[0].label}` + expectedRouterLinkButtons[0].label, + `should be ${expectedRouterLinkButtons[0].label}` ); expect(btn1El.textContent).toBeDefined(); expect(btn1El.textContent).toMatch( - expectedButtonArray[1].label, - `should be ${expectedButtonArray[1].label}` + expectedRouterLinkButtons[1].label, + `should be ${expectedRouterLinkButtons[1].label}` ); expect(btn2El.textContent).toBeDefined(); expect(btn2El.textContent).toMatch( - expectedButtonArray[2].label, - `should be ${expectedButtonArray[2].label}` + expectedRouterLinkButtons[2].label, + `should be ${expectedRouterLinkButtons[2].label}` ); }); }); @@ -137,8 +156,11 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { routerLinks = linkDes.map(de => de.injector.get(RouterLinkStubDirective)); }); - it('... can get routerLink from template', () => { + it('... can get correct number of routerLinks from template', () => { expect(routerLinks.length).toBe(3, 'should have 3 routerLinks'); + }); + + it('... can get correct paths from routerLinks', () => { expect(routerLinks[0].linkParams).toEqual(['/data/search', 'fulltext']); expect(routerLinks[1].linkParams).toEqual(['/data/search', 'timeline']); expect(routerLinks[2].linkParams).toEqual(['/data/search', 'bibliography']); @@ -164,17 +186,17 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { // trigger click with click helper & wait for changes clickAndAwaitChanges(btnDes[0], fixture); - expectSpyCall(selectButtonSpy, 1, expectedButtonArray[0]); + expectSpyCall(selectButtonSpy, 1, expectedRouterLinkButtons[0]); // trigger click with click helper & wait for changes clickAndAwaitChanges(btnDes[1], fixture); - expectSpyCall(selectButtonSpy, 2, expectedButtonArray[1]); + expectSpyCall(selectButtonSpy, 2, expectedRouterLinkButtons[1]); // trigger click with click helper & wait for changes clickAndAwaitChanges(btnDes[2], fixture); - expectSpyCall(selectButtonSpy, 3, expectedButtonArray[2]); + expectSpyCall(selectButtonSpy, 3, expectedRouterLinkButtons[2]); })); it('... should emit selected button on click', fakeAsync(() => { @@ -183,17 +205,17 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => { // trigger click with click helper & wait for changes clickAndAwaitChanges(btnDes[0], fixture); - expectSpyCall(emitSpy, 1, expectedButtonArray[0]); + expectSpyCall(emitSpy, 1, expectedRouterLinkButtons[0]); // trigger click with click helper & wait for changes clickAndAwaitChanges(btnDes[1], fixture); - expectSpyCall(emitSpy, 2, expectedButtonArray[1]); + expectSpyCall(emitSpy, 2, expectedRouterLinkButtons[1]); // trigger click with click helper & wait for changes clickAndAwaitChanges(btnDes[2], fixture); - expectSpyCall(emitSpy, 3, expectedButtonArray[2]); + expectSpyCall(emitSpy, 3, expectedRouterLinkButtons[2]); })); }); }); diff --git a/src/app/shared/router-link-button-group/router-link-button-group.component.ts b/src/app/shared/router-link-button-group/router-link-button-group.component.ts index c30e7bcd47..b2a25efc29 100644 --- a/src/app/shared/router-link-button-group/router-link-button-group.component.ts +++ b/src/app/shared/router-link-button-group/router-link-button-group.component.ts @@ -1,4 +1,5 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; +import { QueryParamsHandling } from '@angular/router'; import { RouterLinkButton } from './router-link-button.model'; @@ -21,7 +22,15 @@ export class RouterLinkButtonGroupComponent { * It keeps the array of router link buttons. */ @Input() - buttonArray: RouterLinkButton[]; + routerLinkButtons: RouterLinkButton[]; + + /** + * Optional input variable: queryParamsHandling. + * + * It keeps a flag how to handle query params (preserve, merge or nothing ''). + * Defaults to nothing ''. + */ + @Input() queryParamsHandling?: QueryParamsHandling = ''; /** * Output variable: selectButtonRequest. diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 2cb9ef388e..778adcdc81 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -17,7 +17,7 @@ import { NgbTabsetModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; -import { NgxGalleryModule } from 'ngx-gallery'; +import { NgxGalleryModule } from '@kolkov/ngx-gallery'; import { NgxJsonViewerModule } from 'ngx-json-viewer'; // diff --git a/src/app/side-info/contact-info/contact-info.component.spec.ts b/src/app/side-info/contact-info/contact-info.component.spec.ts index e170290d35..2eb28d6eac 100644 --- a/src/app/side-info/contact-info/contact-info.component.spec.ts +++ b/src/app/side-info/contact-info/contact-info.component.spec.ts @@ -4,7 +4,7 @@ import { BrowserModule, DomSanitizer, SafeResourceUrl } from '@angular/platform- import { getAndExpectDebugElementByCss, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; -import { MetaContact, MetaPage, MetaSectionTypes } from '@awg-core/core-models'; +import { Meta, MetaContact, MetaEdition, MetaPage, MetaSectionTypes, MetaStructure } from '@awg-core/core-models'; import { METADATA } from '@awg-core/mock-data'; import { CoreService } from '@awg-core/services'; @@ -50,7 +50,7 @@ describe('ContactInfoComponent (DONE)', () => { beforeEach(async(() => { // mock service for test purposes - mockCoreService = { getMetaDataSection: key => METADATA[key] }; + mockCoreService = { getMetaDataSection: sectionType => METADATA[sectionType] }; TestBed.configureTestingModule({ imports: [BrowserModule], @@ -95,21 +95,18 @@ describe('ContactInfoComponent (DONE)', () => { it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the mock service has no effect on the injected service - let changedPageMetaData = new MetaPage(); - changedPageMetaData = { - yearStart: 2015, - yearCurrent: 2018, - awgAppUrl: '', - compodocUrl: '', - githubUrl: '', - awgProjectUrl: '', - awgProjectName: '', - version: '0.2.1', - versionReleaseDate: '20. Oktober 2018' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() }; - mockCoreService.getMetaDataSection = () => changedPageMetaData; + mockCoreService = { getMetaDataSection: sectionType => CHANGEDMETA[sectionType] }; + expect(coreService.getMetaDataSection(MetaSectionTypes.page)).toBe(expectedPageMetaData); }); diff --git a/src/app/side-info/edition-info/edition-info.component.html b/src/app/side-info/edition-info/edition-info.component.html index b1d8dcacd0..aadc980f2e 100644 --- a/src/app/side-info/edition-info/edition-info.component.html +++ b/src/app/side-info/edition-info/edition-info.component.html @@ -1,18 +1,31 @@
-
- {{ editionInfoHeader.section }} +

+ {{ editionInfoHeaderOp12?.description }} +

+

+
+ {{ editionInfoHeaderOp12?.section }}
- {{ editionInfoHeader.title }} {{ editionInfoHeader.catalogueType }} {{ editionInfoHeader.catalogueNumber }} + {{ editionInfoHeaderOp12?.title }} {{ editionInfoHeaderOp12?.catalogueType }} {{ editionInfoHeaderOp12?.catalogueNumber }}
- {{ editionInfoHeader.part }} -
+ {{ + editionInfoHeaderOp12?.part + }} +

-

- {{ editionInfoHeader.description }} -

+
+ {{ editionInfoHeaderOp25?.section }} +
+ {{ editionInfoHeaderOp25?.title }} {{ editionInfoHeaderOp25?.catalogueType }} {{ editionInfoHeaderOp25?.catalogueNumber }} +
+ {{ + editionInfoHeaderOp25?.part + }} +

Ediert von diff --git a/src/app/side-info/edition-info/edition-info.component.spec.ts b/src/app/side-info/edition-info/edition-info.component.spec.ts index c51279509c..8f6094ac0e 100644 --- a/src/app/side-info/edition-info/edition-info.component.spec.ts +++ b/src/app/side-info/edition-info/edition-info.component.spec.ts @@ -4,7 +4,7 @@ import { DebugElement } from '@angular/core'; import { RouterLinkStubDirective } from 'testing/router-stubs'; -import { MetaEdition, MetaSectionTypes } from '@awg-core/core-models'; +import { Meta, MetaContact, MetaEdition, MetaPage, MetaSectionTypes, MetaStructure } from '@awg-core/core-models'; import { CoreService } from '@awg-core/services'; import { EditionInfoComponent } from './edition-info.component'; @@ -20,12 +20,13 @@ describe('EditionInfoComponent (DONE)', () => { let mockCoreService: Partial; let expectedEditionMetaData: MetaEdition; - let expectedEditionInfoHeader; + let expectedEditionInfoHeaderOp12; + let expectedEditionInfoHeaderOp25; beforeEach(async(() => { // stub service for test purposes mockCoreService = { - getMetaDataSection: key => METADATA[key] + getMetaDataSection: sectionType => METADATA[sectionType] }; TestBed.configureTestingModule({ @@ -43,13 +44,21 @@ describe('EditionInfoComponent (DONE)', () => { // test data expectedEditionMetaData = METADATA[MetaSectionTypes.edition]; - expectedEditionInfoHeader = { + expectedEditionInfoHeaderOp12 = { section: 'AWG I/5', title: 'Vier Lieder', catalogueType: 'op.', catalogueNumber: '12', part: 'Skizzen', - description: '[Beispieledition ausgewählter Skizzen zu op. 12 Nr. 1]' + description: '[Beispieledition ausgewählter Skizzen]' + }; + expectedEditionInfoHeaderOp25 = { + section: 'AWG I/5', + title: 'Drei Lieder nach Gedichten von Hildegard Jone', + catalogueType: 'op.', + catalogueNumber: '25', + part: 'Graph', + description: '[Beispieledition ausgewählter Skizzen]' }; // spies on component functions @@ -65,29 +74,35 @@ describe('EditionInfoComponent (DONE)', () => { it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the stub service has no effect on the injected service - let changedEditionMetaData = new MetaEdition(); - changedEditionMetaData = { - editors: [ - { - name: 'Test Editor', - contactUrl: 'www.example.com/test-editor' - } - ], - lastModified: '2017' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() }; - mockCoreService.getMetaDataSection = () => changedEditionMetaData; + mockCoreService = { getMetaDataSection: sectionType => CHANGEDMETA[sectionType] }; expect(coreService.getMetaDataSection(MetaSectionTypes.edition)).toBe(expectedEditionMetaData); }); describe('BEFORE initial data binding', () => { - it('... should have editionInfoHeader', () => { - expect(component.editionInfoHeader).toBeDefined(); - expect(component.editionInfoHeader).toEqual( - expectedEditionInfoHeader, - `should equal ${expectedEditionInfoHeader}` + it('... should have editionInfoHeaderOp12', () => { + expect(component.editionInfoHeaderOp12).toBeDefined(); + expect(component.editionInfoHeaderOp12).toEqual( + expectedEditionInfoHeaderOp12, + `should equal ${expectedEditionInfoHeaderOp12}` + ); + }); + + it('... should have editionInfoHeaderOp25', () => { + expect(component.editionInfoHeaderOp25).toBeDefined(); + expect(component.editionInfoHeaderOp25).toEqual( + expectedEditionInfoHeaderOp25, + `should equal ${expectedEditionInfoHeaderOp25}` ); }); @@ -107,9 +122,9 @@ describe('EditionInfoComponent (DONE)', () => { getAndExpectDebugElementByCss(compDe, 'div.card div.card-body', 1, 1); }); - it('... should contain one `h5` header and 4 `p` elements in div.card-body', () => { - getAndExpectDebugElementByCss(compDe, 'div.card-body h5#awg-edition-info-header', 1, 1); - getAndExpectDebugElementByCss(compDe, 'div.card-body p', 4, 4); + it('... should contain two `h6` header and 5 `p` elements in div.card-body', () => { + getAndExpectDebugElementByCss(compDe, 'div.card-body h6.awg-edition-info-header', 2, 2); + getAndExpectDebugElementByCss(compDe, 'div.card-body p', 5, 5); }); it('... should not render editor information yet', () => { diff --git a/src/app/side-info/edition-info/edition-info.component.ts b/src/app/side-info/edition-info/edition-info.component.ts index 1b82663df7..94ca31710d 100644 --- a/src/app/side-info/edition-info/edition-info.component.ts +++ b/src/app/side-info/edition-info/edition-info.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { MetaEdition, MetaSectionTypes } from '@awg-core/core-models'; import { CoreService } from '@awg-core/services'; +import { EditionWorks } from '@awg-views/edition-view/models'; /** * The EditionInfo component. @@ -16,19 +17,47 @@ import { CoreService } from '@awg-core/services'; }) export class EditionInfoComponent implements OnInit { /** - * Public variable: editionInfoHeader. + * Public variable: editionInfoHeaderOp12. * - * It keeps the header information for the edition-info. + * It keeps the header information for the edition-info for Op12. */ - editionInfoHeader = { + editionInfoHeaderOp12 = { section: 'AWG I/5', title: 'Vier Lieder', catalogueType: 'op.', catalogueNumber: '12', part: 'Skizzen', - description: '[Beispieledition ausgewählter Skizzen zu op. 12 Nr. 1]' + description: '[Beispieledition ausgewählter Skizzen]' }; + /** + * Public variable: editionInfoHeaderOp25. + * + * It keeps the header information for the edition-info for Op25. + */ + editionInfoHeaderOp25 = { + section: 'AWG I/5', + title: 'Drei Lieder nach Gedichten von Hildegard Jone', + catalogueType: 'op.', + catalogueNumber: '25', + part: 'Graph', + description: '[Beispieledition ausgewählter Skizzen]' + }; + + /** + * Readonly constant: editionWorkOp12. + * + * It keeps the current composition. + */ + readonly editionWorkOp12 = EditionWorks.op12; + + /** + * Readonly constant: editionWorkOp25. + * + * It keeps the current composition. + */ + readonly editionWorkOp25 = EditionWorks.op25; + /** * Public variable: editionMetaData. * diff --git a/src/app/side-info/structure-info/structure-info.component.spec.ts b/src/app/side-info/structure-info/structure-info.component.spec.ts index aab53cd8b5..1c7ac81cdc 100644 --- a/src/app/side-info/structure-info/structure-info.component.spec.ts +++ b/src/app/side-info/structure-info/structure-info.component.spec.ts @@ -3,7 +3,7 @@ import { DebugElement } from '@angular/core'; import { getAndExpectDebugElementByCss } from '@testing/expect-helper'; -import { MetaStructure, MetaSectionTypes } from '@awg-core/core-models'; +import { MetaStructure, MetaSectionTypes, Meta, MetaPage, MetaEdition, MetaContact } from '@awg-core/core-models'; import { METADATA } from '@awg-core/mock-data'; import { CoreService } from '@awg-core/services'; @@ -22,9 +22,7 @@ describe('StructureInfoComponent (DONE)', () => { beforeEach(async(() => { // stub service for test purposes - mockCoreService = { - getMetaDataSection: key => METADATA[key] - }; + mockCoreService = { getMetaDataSection: sectionType => METADATA[sectionType] }; TestBed.configureTestingModule({ declarations: [StructureInfoComponent], @@ -55,19 +53,17 @@ describe('StructureInfoComponent (DONE)', () => { it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the stub service has no effect on the injected service - let changedStructureMetaData = new MetaStructure(); - changedStructureMetaData = { - authors: [ - { - name: 'Test Author', - contactUrl: 'www.example.com/test-author' - } - ], - lastModified: '2017' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() }; - mockCoreService.getMetaDataSection = () => changedStructureMetaData; + mockCoreService = { getMetaDataSection: sectionType => CHANGEDMETA[sectionType] }; expect(coreService.getMetaDataSection(MetaSectionTypes.structure)).toBe(expectedStructureMetaData); }); diff --git a/src/app/views/contact-view/contact-routing.module.ts b/src/app/views/contact-view/contact-routing.module.ts deleted file mode 100644 index 5384420be5..0000000000 --- a/src/app/views/contact-view/contact-routing.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { ContactViewComponent } from '@awg-views/contact-view/contact-view.component'; - -/* routes of the ContactModule */ -const contactRoutes: Routes = [ - { - path: '', - component: ContactViewComponent - } -]; - -/** - * Routed components of the {@link ContactModule}: - * {@link ContactViewComponent}. - */ -export const routedContactComponents = [ContactViewComponent]; - -/** - * Contact module routing. - * - * It activates the contactRoutes. - */ -@NgModule({ - imports: [RouterModule.forChild(contactRoutes)], - exports: [RouterModule] -}) -export class ContactRoutingModule {} diff --git a/src/app/views/contact-view/contact-view-routing.module.ts b/src/app/views/contact-view/contact-view-routing.module.ts new file mode 100644 index 0000000000..0c7fef9280 --- /dev/null +++ b/src/app/views/contact-view/contact-view-routing.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ContactViewComponent } from '@awg-views/contact-view/contact-view.component'; + +/* routes of the ContactViewModule */ +const contactViewRoutes: Routes = [ + { + path: '', + component: ContactViewComponent + } +]; + +/** + * Routed components of the {@link ContactViewModule}: + * {@link ContactViewComponent}. + */ +export const routedContactViewComponents = [ContactViewComponent]; + +/** + * ContactView module routing. + * + * It activates the contactViewRoutes. + */ +@NgModule({ + imports: [RouterModule.forChild(contactViewRoutes)], + exports: [RouterModule] +}) +export class ContactViewRoutingModule {} diff --git a/src/app/views/contact-view/contact-view.component.spec.ts b/src/app/views/contact-view/contact-view.component.spec.ts index 24f0422e7d..2877f626d4 100644 --- a/src/app/views/contact-view/contact-view.component.spec.ts +++ b/src/app/views/contact-view/contact-view.component.spec.ts @@ -10,7 +10,7 @@ import { getAndExpectDebugElementByDirective } from '@testing/expect-helper'; -import { MetaContact, MetaPage, MetaSectionTypes } from '@awg-core/core-models'; +import { Meta, MetaContact, MetaEdition, MetaPage, MetaSectionTypes, MetaStructure } from '@awg-core/core-models'; import { METADATA } from '@awg-core/mock-data'; import { CoreService } from '@awg-core/services'; @@ -52,14 +52,17 @@ describe('ContactViewComponent (DONE)', () => { beforeEach(async(() => { // mock service for test purposes - mockCoreService = { getMetaDataSection: key => METADATA[key] }; + mockCoreService = { getMetaDataSection: sectionType => METADATA[sectionType] }; // router spy object mockRouter = jasmine.createSpyObj('Router', ['navigate']); TestBed.configureTestingModule({ declarations: [ContactViewComponent, HeadingStubComponent], - providers: [{ provide: CoreService, useValue: mockCoreService }, { provide: Router, useValue: mockRouter }] + providers: [ + { provide: CoreService, useValue: mockCoreService }, + { provide: Router, useValue: mockRouter } + ] }).compileComponents(); })); @@ -87,21 +90,18 @@ describe('ContactViewComponent (DONE)', () => { it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the mock service has no effect on the injected service - let changedPageMetaData = new MetaPage(); - changedPageMetaData = { - yearStart: 2015, - yearCurrent: 2018, - awgAppUrl: '', - compodocUrl: '', - githubUrl: '', - awgProjectUrl: '', - awgProjectName: '', - version: '0.2.1', - versionReleaseDate: '20. Oktober 2018' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() }; - mockCoreService.getMetaDataSection = () => changedPageMetaData; + mockCoreService = { getMetaDataSection: sectionType => CHANGEDMETA[sectionType] }; + expect(coreService.getMetaDataSection(MetaSectionTypes.page)).toBe(expectedPageMetaData); }); diff --git a/src/app/views/contact-view/contact-view.module.ts b/src/app/views/contact-view/contact-view.module.ts new file mode 100644 index 0000000000..71783bcc60 --- /dev/null +++ b/src/app/views/contact-view/contact-view.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '@awg-shared/shared.module'; + +/* Routing Module */ +import { ContactViewRoutingModule, routedContactViewComponents } from './contact-view-routing.module'; + +/** + * The contactView module. + * + * It embeds the {@link ContactViewComponent} and its + * [routing definition]{@link ContactViewRoutingModule} + * as well as the {@link SharedModule}. + */ +@NgModule({ + imports: [SharedModule, ContactViewRoutingModule], + declarations: [routedContactViewComponents] +}) +export class ContactViewModule {} diff --git a/src/app/views/contact-view/contact.module.ts b/src/app/views/contact-view/contact.module.ts deleted file mode 100644 index 74e3f50e21..0000000000 --- a/src/app/views/contact-view/contact.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { SharedModule } from '@awg-shared/shared.module'; - -/* Routing Module */ -import { ContactRoutingModule, routedContactComponents } from './contact-routing.module'; - -/** - * The contact module. - * - * It embeds the {@link ContactViewComponent} and its - * [routing definition]{@link ContactRoutingModule} - * as well as the {@link SharedModule}. - */ -@NgModule({ - imports: [SharedModule, ContactRoutingModule], - declarations: [routedContactComponents] -}) -export class ContactModule {} diff --git a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.css b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.css index 93cd25cdb2..ab3e00c592 100644 --- a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.css +++ b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.css @@ -3,6 +3,10 @@ height: 300px; } +.awg-image-slider .ngx-gallery { + display: inline-block; +} + /* image preview */ ngx-gallery ::ng-deep .ngx-gallery-image-wrapper { background-color: #e7e7e7; @@ -10,10 +14,10 @@ ngx-gallery ::ng-deep .ngx-gallery-image-wrapper { /* arrows */ ngx-gallery ::ng-deep .ngx-gallery-arrow { - color: black; + color: #676767; } ngx-gallery ::ng-deep .ngx-gallery-arrow.ngx-gallery-disabled { - display: none; + opacity: 0.3; } /* thumbnails */ diff --git a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.html b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.html index 59448e167f..5317d41d3f 100644 --- a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.html +++ b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.html @@ -22,7 +22,7 @@

- +
diff --git a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.spec.ts b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.spec.ts index ecd4ac67f6..6e1e34c73b 100644 --- a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.spec.ts +++ b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.spec.ts @@ -2,7 +2,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; import { JsonConvert } from 'json2typescript'; -import { NgxGalleryImage, NgxGalleryComponent, NgxGalleryOptions, NgxGalleryModule } from 'ngx-gallery'; +import { NgxGalleryImage, NgxGalleryComponent, NgxGalleryOptions, NgxGalleryModule } from '@kolkov/ngx-gallery'; import { getAndExpectDebugElementByCss, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; import { mockContextJson } from '@testing/mock-data'; @@ -46,11 +46,8 @@ describe('ResourceDetailHtmlContentImageobjectsComponent', () => { expectedGalleryOptions = [ new NgxGalleryOptions({ width: '100%', - height: '100%', - imageBullets: true, imageSize: 'contain', thumbnailSize: 'contain', - thumbnailsColumns: 4, thumbnailMargin: 5, thumbnailsMargin: 0, previewCloseOnClick: true, diff --git a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.ts b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.ts index 510da74e15..eb9c4a9c2a 100644 --- a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.ts +++ b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/imageobjects/imageobjects.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; -import { NgxGalleryImage, NgxGalleryOptions } from 'ngx-gallery'; +import { NgxGalleryImage, NgxGalleryOptions } from '@kolkov/ngx-gallery'; /** * The ResourceDetailHtmlContentImageobjects component. @@ -33,17 +33,15 @@ export class ResourceDetailHtmlContentImageobjectsComponent implements OnInit { galleryOptions: NgxGalleryOptions[] = [ new NgxGalleryOptions({ width: '100%', - height: '100%', - imageBullets: true, imageSize: 'contain', thumbnailSize: 'contain', - thumbnailsColumns: 4, thumbnailMargin: 5, thumbnailsMargin: 0, previewCloseOnClick: true, previewCloseOnEsc: true, previewZoom: true, - previewRotate: true + previewRotate: true, + linkTarget: '_blank' }) ]; diff --git a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/resource-detail-html-content.component.spec.ts b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/resource-detail-html-content.component.spec.ts index 6459afbb72..4b9583c253 100644 --- a/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/resource-detail-html-content.component.spec.ts +++ b/src/app/views/data-view/data-outlets/resource-detail/resource-detail-html/resource-detail-html-content/resource-detail-html-content.component.spec.ts @@ -3,7 +3,7 @@ import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/c import Spy = jasmine.Spy; import { JsonConvert } from 'json2typescript'; -import { NgxGalleryImage } from 'ngx-gallery'; +import { NgxGalleryImage } from '@kolkov/ngx-gallery'; import { expectSpyCall, diff --git a/src/app/views/data-view/data-outlets/search-overview.component.html b/src/app/views/data-view/data-outlets/search-overview.component.html index 45c6ed440c..d910547c9d 100644 --- a/src/app/views/data-view/data-outlets/search-overview.component.html +++ b/src/app/views/data-view/data-outlets/search-overview.component.html @@ -1,6 +1,9 @@ - + diff --git a/src/app/views/data-view/data-outlets/search-overview.component.spec.ts b/src/app/views/data-view/data-outlets/search-overview.component.spec.ts index 61d74d0a76..40bc4615b8 100644 --- a/src/app/views/data-view/data-outlets/search-overview.component.spec.ts +++ b/src/app/views/data-view/data-outlets/search-overview.component.spec.ts @@ -1,22 +1,23 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/core'; +import { ActivatedRoute, QueryParamsHandling } from '@angular/router'; import Spy = jasmine.Spy; -import { expectSpyCall, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; +import { expectSpyCall, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; import { RouterOutletStubComponent } from '@testing/router-stubs'; -import { SideInfoService } from '@awg-core/services'; +import { SideInfoService } from '@awg-core/services'; import { RouterLinkButton } from '@awg-shared/router-link-button-group/router-link-button.model'; import { SearchOverviewComponent } from './search-overview.component'; -import { ActivatedRoute } from '@angular/router'; // mock components @Component({ selector: 'awg-router-link-button-group', template: '' }) class RouterLinkButtonGroupStubComponent { @Input() - buttonArray: RouterLinkButton[]; + routerLinkButtons: RouterLinkButton[]; + @Input() queryParamsHandling?: QueryParamsHandling = 'preserve'; @Output() selectButtonRequest: EventEmitter = new EventEmitter(); } @@ -27,15 +28,12 @@ describe('SearchOverviewComponent (DONE)', () => { let compDe: DebugElement; let compEl: any; - let expectedButtonArray: RouterLinkButton[] = [ - new RouterLinkButton('/data/search', 'fulltext', 'Volltext-Suche', false), - new RouterLinkButton('/data/search', 'timeline', 'Timeline', true), - new RouterLinkButton('/data/search', 'bibliography', 'Bibliographie', true) - ]; + let expectedsearchRouterLinkButtons: RouterLinkButton[]; let mockActivatedRoute; let mockActivatedRoutePath: string; + let setButtonsSpy: Spy; let selectButtonSpy: Spy; let updateSearchInfoTitleFromPathSpy: Spy; let service_updateSearchInfoTitleSpy: Spy; @@ -88,7 +86,7 @@ describe('SearchOverviewComponent (DONE)', () => { compEl = compDe.nativeElement; // test data - expectedButtonArray = [ + expectedsearchRouterLinkButtons = [ new RouterLinkButton('/data/search', 'fulltext', 'Volltext-Suche', false), new RouterLinkButton('/data/search', 'timeline', 'Timeline', true), new RouterLinkButton('/data/search', 'bibliography', 'Bibliographie', true) @@ -97,6 +95,7 @@ describe('SearchOverviewComponent (DONE)', () => { // spies on component functions // `.and.callThrough` will track the spy down the nested describes, see // https://jasmine.github.io/2.0/introduction.html#section-Spies:_%3Ccode%3Eand.callThrough%3C/code%3E + setButtonsSpy = spyOn(component, 'setButtons').and.callThrough(); selectButtonSpy = spyOn(component, 'onButtonSelect').and.callThrough(); updateSearchInfoTitleFromPathSpy = spyOn(component, 'updateSearchInfoTitleFromPath').and.callThrough(); }); @@ -106,9 +105,14 @@ describe('SearchOverviewComponent (DONE)', () => { }); describe('BEFORE initial data binding', () => { - it('should have `searchButtonArray`', () => { - expect(component.searchButtonArray).toBeDefined('should be defined'); - expect(component.searchButtonArray).toEqual(expectedButtonArray, `should equal ${expectedButtonArray}`); + it('should not have `searchRouterLinkButtons`', () => { + expect(component.searchRouterLinkButtons).toBeUndefined('should be undefined'); + }); + + describe('#setButtons', () => { + it('... should not have been called', () => { + expectSpyCall(setButtonsSpy, 0); + }); }); describe('#updateSearchInfoTitleFromPath', () => { @@ -152,19 +156,36 @@ describe('SearchOverviewComponent (DONE)', () => { fixture.detectChanges(); }); + describe('#setButtons', () => { + it('... should have been called', () => { + expectSpyCall(setButtonsSpy, 1); + }); + + it('should have `searchRouterLinkButtons`', () => { + expect(component.searchRouterLinkButtons).toBeDefined('should be defined'); + expect(component.searchRouterLinkButtons).toEqual( + expectedsearchRouterLinkButtons, + `should equal ${expectedsearchRouterLinkButtons}` + ); + }); + }); + describe('VIEW', () => { it('... should contain one RouterLinkButtonGroupComponent', () => { getAndExpectDebugElementByDirective(compDe, RouterLinkButtonGroupStubComponent, 1, 1); }); - it('... should pass down buttonArray to RouterLinkButtonGroupComponent', () => { + it('... should pass down searchRouterLinkButtons to RouterLinkButtonGroupComponent', () => { const buttonDes = getAndExpectDebugElementByDirective(compDe, RouterLinkButtonGroupStubComponent, 1, 1); const buttonCmp = buttonDes[0].injector.get( RouterLinkButtonGroupStubComponent ) as RouterLinkButtonGroupStubComponent; - expect(buttonCmp.buttonArray).toBeTruthy(); - expect(buttonCmp.buttonArray).toEqual(expectedButtonArray, `should equal ${expectedButtonArray}`); + expect(buttonCmp.routerLinkButtons).toBeTruthy(); + expect(buttonCmp.routerLinkButtons).toEqual( + expectedsearchRouterLinkButtons, + `should equal ${expectedsearchRouterLinkButtons}` + ); }); }); @@ -178,8 +199,8 @@ describe('SearchOverviewComponent (DONE)', () => { const path = mockActivatedRoutePath; - // filter searchButtonArray - const expectedButton = expectedButtonArray.filter(button => { + // filter searchRouterLinkButtons + const expectedButton = expectedsearchRouterLinkButtons.filter(button => { return button.link === path; }); @@ -203,152 +224,116 @@ describe('SearchOverviewComponent (DONE)', () => { ) as RouterLinkButtonGroupStubComponent; // button 1 - buttonCmp.selectButtonRequest.emit(expectedButtonArray[0]); + buttonCmp.selectButtonRequest.emit(expectedsearchRouterLinkButtons[0]); - expectSpyCall(selectButtonSpy, 1, expectedButtonArray[0]); + expectSpyCall(selectButtonSpy, 1, expectedsearchRouterLinkButtons[0]); // button 2 - buttonCmp.selectButtonRequest.emit(expectedButtonArray[1]); + buttonCmp.selectButtonRequest.emit(expectedsearchRouterLinkButtons[1]); - expectSpyCall(selectButtonSpy, 2, expectedButtonArray[1]); + expectSpyCall(selectButtonSpy, 2, expectedsearchRouterLinkButtons[1]); // button 3 - buttonCmp.selectButtonRequest.emit(expectedButtonArray[2]); + buttonCmp.selectButtonRequest.emit(expectedsearchRouterLinkButtons[2]); - expectSpyCall(selectButtonSpy, 3, expectedButtonArray[2]); + expectSpyCall(selectButtonSpy, 3, expectedsearchRouterLinkButtons[2]); })); describe('... should not do anything if no RouterLinkButton provided', () => { - // first call was on init - let noRouterLinkButton; + let buttonCmp; - it('... not with undefined', () => { + beforeEach(() => { + // get button component const buttonDes = getAndExpectDebugElementByDirective( compDe, RouterLinkButtonGroupStubComponent, 1, 1 ); - const buttonCmp = buttonDes[0].injector.get( + buttonCmp = buttonDes[0].injector.get( RouterLinkButtonGroupStubComponent ) as RouterLinkButtonGroupStubComponent; + }); + it('... not with undefined', () => { // emit undefined noRouterLinkButton = undefined; buttonCmp.selectButtonRequest.emit(noRouterLinkButton); expectSpyCall(selectButtonSpy, 1, noRouterLinkButton); + expectSpyCall(service_clearSearchInfoDataSpy, 0); + // first call was on init expectSpyCall(service_updateSearchInfoTitleSpy, 1); }); it('... not with null', () => { - const buttonDes = getAndExpectDebugElementByDirective( - compDe, - RouterLinkButtonGroupStubComponent, - 1, - 1 - ); - const buttonCmp = buttonDes[0].injector.get( - RouterLinkButtonGroupStubComponent - ) as RouterLinkButtonGroupStubComponent; - // emit null noRouterLinkButton = null; buttonCmp.selectButtonRequest.emit(noRouterLinkButton); expectSpyCall(selectButtonSpy, 1, noRouterLinkButton); + expectSpyCall(service_clearSearchInfoDataSpy, 0); + // first call was on init expectSpyCall(service_updateSearchInfoTitleSpy, 1); }); it('... not with empty string', () => { - const buttonDes = getAndExpectDebugElementByDirective( - compDe, - RouterLinkButtonGroupStubComponent, - 1, - 1 - ); - const buttonCmp = buttonDes[0].injector.get( - RouterLinkButtonGroupStubComponent - ) as RouterLinkButtonGroupStubComponent; - // emit empty string noRouterLinkButton = ''; buttonCmp.selectButtonRequest.emit(noRouterLinkButton); expectSpyCall(selectButtonSpy, 1, noRouterLinkButton); + expectSpyCall(service_clearSearchInfoDataSpy, 0); + // first call was on init expectSpyCall(service_updateSearchInfoTitleSpy, 1); }); it('... not with string', () => { - const buttonDes = getAndExpectDebugElementByDirective( - compDe, - RouterLinkButtonGroupStubComponent, - 1, - 1 - ); - const buttonCmp = buttonDes[0].injector.get( - RouterLinkButtonGroupStubComponent - ) as RouterLinkButtonGroupStubComponent; - // emit string noRouterLinkButton = 'test'; buttonCmp.selectButtonRequest.emit(noRouterLinkButton); expectSpyCall(selectButtonSpy, 1, noRouterLinkButton); + expectSpyCall(service_clearSearchInfoDataSpy, 0); + // first call was on init expectSpyCall(service_updateSearchInfoTitleSpy, 1); }); it('... not with number', () => { - const buttonDes = getAndExpectDebugElementByDirective( - compDe, - RouterLinkButtonGroupStubComponent, - 1, - 1 - ); - const buttonCmp = buttonDes[0].injector.get( - RouterLinkButtonGroupStubComponent - ) as RouterLinkButtonGroupStubComponent; - // emit number - noRouterLinkButton = 12; + noRouterLinkButton = 101; buttonCmp.selectButtonRequest.emit(noRouterLinkButton); expectSpyCall(selectButtonSpy, 1, noRouterLinkButton); + expectSpyCall(service_clearSearchInfoDataSpy, 0); + // first call was on init expectSpyCall(service_updateSearchInfoTitleSpy, 1); }); it('... not with router link button without label', () => { - const buttonDes = getAndExpectDebugElementByDirective( - compDe, - RouterLinkButtonGroupStubComponent, - 1, - 1 - ); - const buttonCmp = buttonDes[0].injector.get( - RouterLinkButtonGroupStubComponent - ) as RouterLinkButtonGroupStubComponent; - // emit router link button without label - noRouterLinkButton = new RouterLinkButton('/data/search', 'fulltext', undefined, false); + noRouterLinkButton = new RouterLinkButton('/data/search', '/fulltext', undefined, false); buttonCmp.selectButtonRequest.emit(noRouterLinkButton); expectSpyCall(selectButtonSpy, 1, noRouterLinkButton); + expectSpyCall(service_clearSearchInfoDataSpy, 0); + // first call was on init expectSpyCall(service_updateSearchInfoTitleSpy, 1); }); }); it('... should call SideInfoService# clearSearchInfoData', fakeAsync(() => { // emit button 1 - component.onButtonSelect(expectedButtonArray[0]); + component.onButtonSelect(expectedsearchRouterLinkButtons[0]); expectSpyCall(service_clearSearchInfoDataSpy, 1); // emit button 2 - component.onButtonSelect(expectedButtonArray[1]); + component.onButtonSelect(expectedsearchRouterLinkButtons[1]); expectSpyCall(service_clearSearchInfoDataSpy, 2); // emit button 3 - component.onButtonSelect(expectedButtonArray[2]); + component.onButtonSelect(expectedsearchRouterLinkButtons[2]); expectSpyCall(service_clearSearchInfoDataSpy, 3); })); @@ -356,16 +341,16 @@ describe('SearchOverviewComponent (DONE)', () => { // first call was on init // emit button 1 - component.onButtonSelect(expectedButtonArray[0]); - expectSpyCall(service_updateSearchInfoTitleSpy, 2, expectedButtonArray[0].label); + component.onButtonSelect(expectedsearchRouterLinkButtons[0]); + expectSpyCall(service_updateSearchInfoTitleSpy, 2, expectedsearchRouterLinkButtons[0].label); // emit button 2 - component.onButtonSelect(expectedButtonArray[1]); - expectSpyCall(service_updateSearchInfoTitleSpy, 3, expectedButtonArray[1].label); + component.onButtonSelect(expectedsearchRouterLinkButtons[1]); + expectSpyCall(service_updateSearchInfoTitleSpy, 3, expectedsearchRouterLinkButtons[1].label); // emit button 3 - component.onButtonSelect(expectedButtonArray[2]); - expectSpyCall(service_updateSearchInfoTitleSpy, 4, expectedButtonArray[2].label); + component.onButtonSelect(expectedsearchRouterLinkButtons[2]); + expectSpyCall(service_updateSearchInfoTitleSpy, 4, expectedsearchRouterLinkButtons[2].label); })); }); }); diff --git a/src/app/views/data-view/data-outlets/search-overview.component.ts b/src/app/views/data-view/data-outlets/search-overview.component.ts index 98635b983a..70c8d4dd1f 100644 --- a/src/app/views/data-view/data-outlets/search-overview.component.ts +++ b/src/app/views/data-view/data-outlets/search-overview.component.ts @@ -1,9 +1,8 @@ import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; import { RouterLinkButton } from '@awg-shared/router-link-button-group/router-link-button.model'; - import { SideInfoService } from '@awg-core/services'; -import { ActivatedRoute } from '@angular/router'; /** * The SearchOverview component. @@ -20,15 +19,11 @@ import { ActivatedRoute } from '@angular/router'; }) export class SearchOverviewComponent implements OnInit { /** - * Public variable: searchButtonArray. + * Public variable: searchRouterLinkButtons. * * It keeps the array for the search router link buttons. */ - searchButtonArray: RouterLinkButton[] = [ - new RouterLinkButton('/data/search', 'fulltext', 'Volltext-Suche', false), - new RouterLinkButton('/data/search', 'timeline', 'Timeline', true), - new RouterLinkButton('/data/search', 'bibliography', 'Bibliographie', true) - ]; + searchRouterLinkButtons: RouterLinkButton[]; /** * Constructor of the SearchOverviewComponent. @@ -49,9 +44,25 @@ export class SearchOverviewComponent implements OnInit { * when initializing the component. */ ngOnInit() { + this.setButtons(); this.updateSearchInfoTitleFromPath(); } + /** + * Public method: setButtons. + * + * It initializes the searchRouterLinkButtons. + * + * @returns {void} Sets the searchRouterLinkButtons. + */ + setButtons(): void { + this.searchRouterLinkButtons = [ + new RouterLinkButton('/data/search', 'fulltext', 'Volltext-Suche', false), + new RouterLinkButton('/data/search', 'timeline', 'Timeline', true), + new RouterLinkButton('/data/search', 'bibliography', 'Bibliographie', true) + ]; + } + /** * Public method: updateSearchInfoTitleFromPath. * @@ -66,7 +77,7 @@ export class SearchOverviewComponent implements OnInit { const path = this.route.snapshot.children[0].url[0].path; // filter searchButtonArray - const selectedButton = this.searchButtonArray.filter(button => { + const selectedButton = this.searchRouterLinkButtons.filter(button => { return button.link === path; }); diff --git a/src/app/views/data-view/data-routing.module.ts b/src/app/views/data-view/data-view-routing.module.ts similarity index 83% rename from src/app/views/data-view/data-routing.module.ts rename to src/app/views/data-view/data-view-routing.module.ts index c1b41604c8..ca339a10ec 100644 --- a/src/app/views/data-view/data-routing.module.ts +++ b/src/app/views/data-view/data-view-routing.module.ts @@ -7,8 +7,8 @@ import { SearchOverviewComponent } from './data-outlets/search-overview.componen import { SearchPanelComponent } from './data-outlets/search-panel/search-panel.component'; import { TimelineComponent } from './data-outlets/timeline/timeline.component'; -/* routes of the DataModule */ -const dataRoutes: Routes = [ +/* routes of the DataViewModule */ +const dataViewRoutes: Routes = [ { path: '', component: DataViewComponent, @@ -34,12 +34,12 @@ const dataRoutes: Routes = [ ]; /** - * Routed components of the {@link DataModule}: + * Routed components of the {@link DataViewModule}: * {@link DataViewComponent}, {@link SearchOverviewComponent}, * {@link SearchPanelComponent}, {@link ResourceDetailComponent} * and {@link TimelineComponent}. */ -export const routedDataComponents = [ +export const routedDataViewComponents = [ DataViewComponent, SearchOverviewComponent, SearchPanelComponent, @@ -48,12 +48,12 @@ export const routedDataComponents = [ ]; /** - * Data module routing. + * DataView module routing. * - * It activates the dataRoutes, also the lazy-loaded bibliography module. + * It activates the dataViewRoutes, also the lazy-loaded bibliography module. */ @NgModule({ - imports: [RouterModule.forChild(dataRoutes)], + imports: [RouterModule.forChild(dataViewRoutes)], exports: [RouterModule] }) -export class DataRoutingModule {} +export class DataViewRoutingModule {} diff --git a/src/app/views/data-view/data.module.ts b/src/app/views/data-view/data-view.module.ts similarity index 68% rename from src/app/views/data-view/data.module.ts rename to src/app/views/data-view/data-view.module.ts index 18f4c93870..d3194ef653 100644 --- a/src/app/views/data-view/data.module.ts +++ b/src/app/views/data-view/data-view.module.ts @@ -9,17 +9,17 @@ import { SearchFormComponent } from './data-outlets/search-panel/search-form/sea import { SearchResultListComponent } from './data-outlets/search-panel/search-result-list/search-result-list.component'; /* Routing Module */ -import { DataRoutingModule, routedDataComponents } from './data-routing.module'; +import { DataViewRoutingModule, routedDataViewComponents } from './data-view-routing.module'; /** - * The data module. + * The dataView module. * - * It embeds the data components and their [routing definition]{@link DataRoutingModule}, + * It embeds the data components and their [routing definition]{@link DataViewRoutingModule}, * the {@link SearchFormComponent}, {@link SearchResultListComponent}, * as well as the {@link ResourceDetailModule} and {@link SharedModule}. */ @NgModule({ - imports: [SharedModule, ResourceDetailModule, DataRoutingModule], - declarations: [routedDataComponents, SearchFormComponent, SearchResultListComponent] + imports: [SharedModule, ResourceDetailModule, DataViewRoutingModule], + declarations: [routedDataViewComponents, SearchFormComponent, SearchResultListComponent] }) -export class DataModule {} +export class DataViewModule {} diff --git a/src/app/views/data-view/models/resource-detail-content.model.ts b/src/app/views/data-view/models/resource-detail-content.model.ts index 9ab8352e03..9b8e837c6b 100644 --- a/src/app/views/data-view/models/resource-detail-content.model.ts +++ b/src/app/views/data-view/models/resource-detail-content.model.ts @@ -1,7 +1,7 @@ import { ResourceDetailImage } from './resource-detail-image.model'; import { ResourceDetailGroupedIncomingLinks } from './resource-detail-grouped-incoming-links.model'; import { ResourceDetailProperty } from './resource-detail-property.model'; -import { NgxGalleryImage } from 'ngx-gallery'; +import { NgxGalleryImage } from '@kolkov/ngx-gallery'; /** * The ResourceDetailContent class. diff --git a/src/app/views/edition-view/edition-outlets/edition-detail/edition-accolade/edition-accolade.component.html b/src/app/views/edition-view/edition-outlets/edition-detail/edition-accolade/edition-accolade.component.html index e13c6ab2f5..9cd3807368 100644 --- a/src/app/views/edition-view/edition-outlets/edition-detail/edition-accolade/edition-accolade.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-detail/edition-accolade/edition-accolade.component.html @@ -24,12 +24,12 @@ - diff --git a/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.spec.ts index 83bd061fa1..c28f799893 100644 --- a/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.spec.ts @@ -1,9 +1,10 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { NgxGalleryModule } from '@kolkov/ngx-gallery'; + import { EditionSvgSheetComponent } from './edition-svg-sheet.component'; -import { EditionSvgSheet, EditionSvgOverlay } from '@awg-views/edition-view/models'; -import { EditionSvgOverlayTypes } from '@awg-views/edition-view/models/edition-svg-overlay'; +import { EditionSvgSheet, EditionSvgOverlay, EditionSvgOverlayTypes } from '@awg-views/edition-view/models'; describe('EditionSvgSheetComponent', () => { let component: EditionSvgSheetComponent; @@ -13,6 +14,7 @@ describe('EditionSvgSheetComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ + imports: [NgxGalleryModule], declarations: [EditionSvgSheetComponent] }).compileComponents(); })); @@ -45,8 +47,8 @@ describe('EditionSvgSheetComponent', () => { // mock the inputs supplied by the parent component expectedSvgSheet = { id: 'Aa:SkI/2', - svg: 'assets/img/edition/SkI_2n_small_cut_opt.svg', - image: 'assets/img/edition/SkI_2_small.jpg', + svg: 'assets/img/edition/series1/section5/op12/SkI_2n_small_cut_opt.svg', + image: 'assets/img/edition/series1/section5/op12/SkI_2_small.jpg', alt: 'Aa:SkI/2' }; const type = EditionSvgOverlayTypes.measure; diff --git a/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.ts b/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.ts index c3a81d0cbd..e0cd7e0d8d 100644 --- a/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-detail/edition-svg-sheet/edition-svg-sheet.component.ts @@ -1,5 +1,6 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +// import { NgxGalleryImage, NgxGalleryOptions } from '@kolkov/ngx-gallery'; import { EditionSvgSheet, EditionSvgOverlay } from '@awg-views/edition-view/models'; /** @@ -72,13 +73,60 @@ export class EditionSvgSheetComponent implements OnInit { sheet5: SvgSheetLabels.sheet5 }; + /* TODO: mute for now sind not working yet + galleryOptions: NgxGalleryOptions[]; + galleryImages: NgxGalleryImage[]; + */ + /** * Angular life cycle hook: ngOnInit. * * It calls the containing methods * when initializing the component. */ - ngOnInit() {} + ngOnInit() { + /* + TODO: mute for now since not working yet + this.galleryOptions = [ + { + width: '100%', + height: '600px', + imageSize: 'contain', + thumbnailsColumns: 4, + previewCloseOnClick: true, + previewCloseOnEsc: true, + previewZoom: true, + previewRotate: true, + linkTarget: '_blank' + }, + // max-width 800 + { + breakpoint: 800, + width: '100%', + height: '600px', + imagePercent: 80, + thumbnailsPercent: 20, + thumbnailsMargin: 20, + thumbnailMargin: 20 + }, + // max-width 400 + { + breakpoint: 400, + preview: false + } + ]; + + this.galleryImages = [2, 3, 4, 5].map(fileNumber => { + const fileName = `assets/img/edition/series1/section5/op12/SkI_${fileNumber}n_small_cut_opt.svg`; + return { + small: fileName, + medium: fileName, + big: fileName, + url: fileName + }; + }); + */ + } /** * Public method: isSelectedSvgSheet. diff --git a/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.spec.ts index ef919440c2..9c4f28b584 100644 --- a/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.spec.ts @@ -28,7 +28,7 @@ describe('FolioComponent', () => { describe('BEFORE initial data binding', () => { it('should not get folios input', () => { - expect(component.folios).toBeUndefined('should be undefined'); + expect(component.folioData).toBeUndefined('should be undefined'); }); it('should not get svg file input', () => { @@ -41,8 +41,8 @@ describe('FolioComponent', () => { // mock the inputs supplied by the parent component expectedSvgSheet = { id: 'Aa:SkI/2', - svg: 'assets/img/edition/SkI_2n_small_cut_opt.svg', - image: 'assets/img/edition/SkI_2_small.jpg', + svg: 'assets/img/edition/series1/section5/op12/SkI_2n_small_cut_opt.svg', + image: 'assets/img/edition/series1/section5/op12/SkI_2_small.jpg', alt: 'Aa:SkI/2' }; const folioFormatSettings: FolioSettings = { @@ -78,7 +78,7 @@ describe('FolioComponent', () => { ]; // simulate the parent setting the input properties - component.folios = expectedFolios; + component.folioData = expectedFolios; component.selectedSvgSheet = expectedSvgSheet; // trigger initial data binding @@ -90,7 +90,7 @@ describe('FolioComponent', () => { }); it('should get folios input', () => { - expect(component.folios).toBe(expectedFolios); + expect(component.folioData).toBe(expectedFolios); }); }); }); diff --git a/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.ts b/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.ts index b5e7626f78..6dc0b3c37a 100644 --- a/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-folio/folio.component.ts @@ -39,7 +39,7 @@ export class FolioComponent implements OnInit, AfterViewInit, AfterViewChecked { * It keeps the folio data. */ @Input() - folios: Folio[]; + folioData: Folio[]; /** * Public variable: selectedSvgSheet. @@ -213,9 +213,9 @@ export class FolioComponent implements OnInit, AfterViewInit, AfterViewChecked { * @returns {void} Sets the vbArray and folioSvgDataArray variable. */ prepareFolioSvgOutput(): void { - for (let folioIndex = 0; folioIndex < this.folios.length; folioIndex++) { + for (let folioIndex = 0; folioIndex < this.folioData.length; folioIndex++) { // current folio - const folio = this.folios[folioIndex]; + const folio = this.folioData[folioIndex]; // update folio settings this.folioSettings = { @@ -224,7 +224,7 @@ export class FolioComponent implements OnInit, AfterViewInit, AfterViewChecked { formatY: +folio.format.height, initialOffsetX: this.folioSettings.initialOffsetX, initialOffsetY: this.folioSettings.initialOffsetY, - numberOfFolios: +this.folios.length + numberOfFolios: +this.folioData.length }; // prepare viewbox settings diff --git a/src/app/views/edition-view/edition-outlets/edition-folio/folio.service.ts b/src/app/views/edition-view/edition-outlets/edition-folio/folio.service.ts index abfe877eb3..346ae06169 100644 --- a/src/app/views/edition-view/edition-outlets/edition-folio/folio.service.ts +++ b/src/app/views/edition-view/edition-outlets/edition-folio/folio.service.ts @@ -332,7 +332,7 @@ export class FolioService { // add click event handler // exclude and mute sketch Aa:SkI for now if (contentItem.sigle === 'Aa:SkI/1a' || contentItem.sigle === 'Aa:SkI/1b') { - snapItemGroup.click(() => this.ref.openModal('sourceNotA')); + snapItemGroup.click(() => this.ref.openModal('op12_sourceNotA')); snapItemGroup.attr({ stroke: 'grey', fill: 'grey' diff --git a/src/app/views/edition-view/edition-outlets/intro/intro.component.css b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.css similarity index 100% rename from src/app/views/edition-view/edition-outlets/intro/intro.component.css rename to src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.css diff --git a/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.html b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.html new file mode 100644 index 0000000000..e05005d2d9 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.html @@ -0,0 +1,27 @@ + +
+ +
+
+ +

+ +
+
+
+ + + +
+
+
+ {{ errorObject }} +
+
+
+
+
diff --git a/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.spec.ts new file mode 100644 index 0000000000..3885b0ebc7 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.spec.ts @@ -0,0 +1,64 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { of as observableOf } from 'rxjs'; +import Spy = jasmine.Spy; + +import { CompileHtmlComponent } from '@awg-shared/compile-html'; +import { EditionWorks } from '@awg-views/edition-view/models'; + +import { EditionGraphComponent } from './edition-graph.component'; +import { EditionDataService, EditionService } from '@awg-views/edition-view/services'; + +describe('EditionGraphComponent', () => { + let component: EditionGraphComponent; + let fixture: ComponentFixture; + + let getEditionGraphDataSpy: Spy; + let getEditionWorkSpy: Spy; + + beforeEach(async(() => { + // create a fake service object with a `getEditionReportData()` spy + const mockEditionDataService = jasmine.createSpyObj('EditionDataService', ['getEditionGraphData']); + // make the spy return a synchronous Observable with the test data + getEditionGraphDataSpy = mockEditionDataService.getEditionGraphData.and.returnValue(observableOf({})); // TODO: provide real test data + + // create a fake service object with a `getEditionWork()` spy + const mockEditionService = jasmine.createSpyObj('EditionService', ['getEditionWork']); + // make the spy return a synchronous Observable with the test data + getEditionWorkSpy = mockEditionService.getEditionWork.and.returnValue(observableOf(EditionWorks.op12)); + + TestBed.configureTestingModule({ + declarations: [EditionGraphComponent, CompileHtmlComponent], + providers: [ + { provide: EditionDataService, useValue: mockEditionDataService }, + { provide: EditionService, useValue: mockEditionService } + ] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditionGraphComponent); + component = fixture.componentInstance; + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('AFTER initial data binding', () => { + beforeEach(() => { + // trigger initial data binding + fixture.detectChanges(); + }); + + it('should have called `getEditionWork()`', () => { + // `getEditionReportData()` called immediately after init + expect(getEditionWorkSpy.calls.any()).toBe(true, 'getEditionWork() called'); + }); + + it('should have called `getEditionReportData()`', () => { + // `getEditionReportData()` called immediately after init + expect(getEditionGraphDataSpy.calls.any()).toBe(true, 'getEditionReportData() called'); + }); + }); +}); diff --git a/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.ts b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.ts new file mode 100644 index 0000000000..1251c2e85a --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-graph/edition-graph.component.ts @@ -0,0 +1,107 @@ +import { Component, OnInit } from '@angular/core'; + +import { Observable, throwError } from 'rxjs'; +import { catchError, switchMap } from 'rxjs/operators'; + +import { EditionConstants, EditionWork, GraphList } from '@awg-views/edition-view/models'; +import { EditionDataService, EditionService } from '@awg-views/edition-view/services'; + +/** + * The EditionGraph component. + * + * It contains the graph section + * of the edition view of the app. + */ +@Component({ + selector: 'awg-edition-graph', + templateUrl: './edition-graph.component.html', + styleUrls: ['./edition-graph.component.css'] +}) +export class EditionGraphComponent implements OnInit { + /** + * Public variable: editionWork. + * + * It keeps the information about the current composition. + */ + editionWork: EditionWork; + + /** + * Public variable: editionGraphData$. + * + * It keeps the observable of the edition graph data. + */ + editionGraphData$: Observable; + + /** + * Readonly constant: graphImages. + * + * It keeps the paths to static graph images. + */ + readonly graphImages = { + op12: '', + op25: EditionConstants.graphImageOp25.route + }; + + /** + * Public variable: errorObject. + * + * It keeps an errorObject for the service calls. + */ + errorObject = null; + + /** + * Self-referring variable needed for CompileHtml library. + */ + ref: EditionGraphComponent; + + /** + * Constructor of the EditionGraphComponent. + * + * It declares a private instances of + * the EditionDataService and EditionService. + * + * @param {EditionDataService} editionDataService Instance of the EditionDataService. + * @param {EditionService} editionService Instance of the EditionService. + */ + constructor(private editionDataService: EditionDataService, private editionService: EditionService) { + this.ref = this; + } + + /** + * Angular life cycle hook: ngOnInit. + * + * It calls the containing methods + * when initializing the component. + */ + ngOnInit() { + this.getEditionGraphData(); + } + + /** + * Public method: getEditionGraphData. + * + * It gets the the current edition work of the edition service + * and the observable of the corresponding graph data + * from the EditionDataService. + * + * @returns {void} Gets the current edition work and the corresponding graph data. + */ + getEditionGraphData(): void { + this.editionGraphData$ = this.editionService + // get current editionWork from editionService + .getEditionWork() + .pipe( + switchMap((work: EditionWork) => { + // set current editionWork + this.editionWork = work; + // get graph data from editionDataService + return this.editionDataService.getEditionGraphData(this.editionWork); + }), + // error handling + catchError(err => { + this.errorObject = err; + return throwError(err); + }) + ); + } +} diff --git a/src/app/views/edition-view/edition-outlets/edition-graph/index.ts b/src/app/views/edition-view/edition-outlets/edition-graph/index.ts new file mode 100644 index 0000000000..e83858ce30 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-graph/index.ts @@ -0,0 +1 @@ +export * from './edition-graph.component'; diff --git a/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.css b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.html b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.html new file mode 100644 index 0000000000..109a20af03 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.html @@ -0,0 +1,21 @@ + +
+ + + + +
+

+
+ + + +
+
+
+ {{ errorObject }} +
+
+
+
+
diff --git a/src/app/views/edition-view/edition-outlets/intro/intro.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.spec.ts similarity index 60% rename from src/app/views/edition-view/edition-outlets/intro/intro.component.spec.ts rename to src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.spec.ts index a97e80d3f7..7ab500c9d0 100644 --- a/src/app/views/edition-view/edition-outlets/intro/intro.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.spec.ts @@ -1,6 +1,8 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { RouterTestingModule } from '@angular/router/testing'; + import { RouterLinkStubDirective } from '@testing/router-stubs'; import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; @@ -8,21 +10,21 @@ import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; import { CompileHtmlComponent } from '@awg-shared/compile-html'; import { ModalComponent } from '@awg-shared/modal/modal.component'; -import { IntroComponent } from './intro.component'; +import { EditionIntroComponent } from './edition-intro.component'; describe('IntroComponent', () => { - let component: IntroComponent; - let fixture: ComponentFixture; + let component: EditionIntroComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [NgbModalModule, RouterTestingModule], - declarations: [CompileHtmlComponent, IntroComponent, ModalComponent, RouterLinkStubDirective] + imports: [NgbModalModule, HttpClientTestingModule, RouterTestingModule], + declarations: [CompileHtmlComponent, EditionIntroComponent, ModalComponent, RouterLinkStubDirective] }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(IntroComponent); + fixture = TestBed.createComponent(EditionIntroComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.ts b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.ts new file mode 100644 index 0000000000..1267475c50 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-intro/edition-intro.component.ts @@ -0,0 +1,166 @@ +import { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core'; +import { NavigationExtras, Router } from '@angular/router'; + +import { catchError, switchMap } from 'rxjs/operators'; +import { Observable, throwError } from 'rxjs'; + +import { ModalComponent } from '@awg-shared/modal/modal.component'; + +import { EditionWork, IntroList } from '@awg-views/edition-view/models'; +import { EditionDataService, EditionService } from '@awg-views/edition-view/services'; + +/** + * The EditionIntro component. + * + * It contains the intro section + * of the edition view of the app. + */ +@Component({ + selector: 'awg-intro', + templateUrl: './edition-intro.component.html', + styleUrls: ['./edition-intro.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class EditionIntroComponent implements OnInit { + /** + * ViewChild variable: modal. + * + * It keeps the reference to the awg-modal. + */ + @ViewChild('modal', { static: true }) modal: ModalComponent; + + /** + * Public variable: editionWork. + * + * It keeps the information about the current composition. + */ + editionWork: EditionWork; + + /** + * Public variable: editionIntroData$. + * + * It keeps the observable of the edition intro data. + */ + editionIntroData$: Observable; + + /** + * Public variable: errorObject. + * + * It keeps an errorObject for the service calls. + */ + errorObject = null; + + /** + * Self-referring variable needed for CompileHtml library. + */ + ref: EditionIntroComponent; + + /** + * Constructor of the EditionDetailComponent. + * + * It declares private instances of + * EditionDataService, EditionService + * and the Angular Router. + * + * @param {EditionDataService} editionDataService Instance of the EditionDataService. + * @param {EditionService} editionService Instance of the EditionService. + * @param {Router} router Instance of the Router. + */ + constructor( + private editionDataService: EditionDataService, + private editionService: EditionService, + private router: Router + ) { + this.ref = this; + } + + /** + * Angular life cycle hook: ngOnInit. + * + * It calls the containing methods + * when initializing the component. + */ + ngOnInit() { + this.getEditionIntroData(); + } + + /** + * Public method: getEditionIntroData. + * + * It gets the the current edition work of the edition service + * and the observable of the corresponding intro data + * from the EditionDataService. + * + * @returns {void} Gets the current edition work and the corresponding intro data. + */ + getEditionIntroData(): void { + this.editionIntroData$ = this.editionService + // get current editionWork from editionService + .getEditionWork() + .pipe( + switchMap((work: EditionWork) => { + // set current editionWork + this.editionWork = work; + // get intro data from editionDataService + return this.editionDataService.getEditionIntroData(this.editionWork); + }), + // error handling + catchError(err => { + this.errorObject = err; + return throwError(err); + }) + ); + } + + /** + * Public method: navigateToReportFragment. + * + * It navigates to the '/report/' route with the given fragmentId. + * + * @param {string} fragmentId The given fragment id. + * @returns {void} Navigates to the edition report. + */ + navigateToReportFragment(fragmentId: string) { + if (!fragmentId) { + fragmentId = ''; + } + const navigationExtras: NavigationExtras = { + fragment: fragmentId + }; + this.router.navigate([this.editionWork.baseRoute, this.editionWork.reportRoute], navigationExtras); + } + + /** + * Public method: openModal. + * + * It emits a given id of a modal snippet text + * to the {@link openModalRequest}. + * + * @param {string} id The given modal snippet id. + * @returns {void} Emits the id. + */ + openModal(id: string): void { + this.modal.open(id); + } + + /** + * Public method: selectSvgSheet. + * + * It navigates to the '/edition/composition/{id}/detail' + * route with the given id. + * + * @param {string} id The given svg sheet id. + * @returns {void} Navigates to the edition detail. + */ + selectSvgSheet(id: string): void { + if (!id) { + id = ''; + } + const navigationExtras: NavigationExtras = { + queryParams: { sketch: id }, + queryParamsHandling: '' + }; + + this.router.navigate([this.editionWork.baseRoute, this.editionWork.detailRoute], navigationExtras); + } +} diff --git a/src/app/views/edition-view/edition-outlets/edition-intro/index.ts b/src/app/views/edition-view/edition-outlets/edition-intro/index.ts new file mode 100644 index 0000000000..c348662711 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-intro/index.ts @@ -0,0 +1 @@ +export * from './edition-intro.component'; diff --git a/src/app/views/edition-view/edition-outlets/edition-overview.component.html b/src/app/views/edition-view/edition-outlets/edition-overview.component.html index e24fe1a883..06b4dcf513 100644 --- a/src/app/views/edition-view/edition-outlets/edition-overview.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-overview.component.html @@ -1,5 +1,8 @@ - + diff --git a/src/app/views/edition-view/edition-outlets/edition-overview.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-overview.component.spec.ts index c72392c490..22f9934b66 100644 --- a/src/app/views/edition-view/edition-outlets/edition-overview.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/edition-overview.component.spec.ts @@ -1,19 +1,25 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/core'; +import { QueryParamsHandling } from '@angular/router'; -import { getAndExpectDebugElementByDirective } from '@testing/expect-helper'; +import { of as observableOf } from 'rxjs'; +import Spy = jasmine.Spy; + +import { expectSpyCall, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; import { RouterOutletStubComponent } from '@testing/router-stubs'; +import { EditionService } from '@awg-views/edition-view/services'; import { RouterLinkButton } from '@awg-shared/router-link-button-group/router-link-button.model'; - +import { EditionConstants, EditionWork, EditionWorks } from '@awg-views/edition-view/models'; import { EditionOverviewComponent } from './edition-overview.component'; // mock components @Component({ selector: 'awg-router-link-button-group', template: '' }) class RouterLinkButtonGroupStubComponent { @Input() - buttonArray: RouterLinkButton[]; + routerLinkButtons: RouterLinkButton[]; + @Input() queryParamsHandling?: QueryParamsHandling = ''; @Output() selectButtonRequest: EventEmitter = new EventEmitter(); } @@ -24,11 +30,21 @@ describe('EditionOverviewComponent (DONE)', () => { let compDe: DebugElement; let compEl: any; - let expectedButtonArray: RouterLinkButton[]; + let expectedEditionRouterLinkButtons: RouterLinkButton[]; + let expectedEditionWork: EditionWork; + + let setButtonsSpy: Spy; + let getEditionWorkSpy: Spy; beforeEach(async(() => { + // create a fake service object with a `getData()` spy + const mockEditionService = jasmine.createSpyObj('EditionService', ['getEditionWork']); + // make the spy return a synchronous Observable with the test data + getEditionWorkSpy = mockEditionService.getEditionWork.and.returnValue(observableOf(EditionWorks.op12)); + TestBed.configureTestingModule({ - declarations: [EditionOverviewComponent, RouterLinkButtonGroupStubComponent, RouterOutletStubComponent] + declarations: [EditionOverviewComponent, RouterLinkButtonGroupStubComponent, RouterOutletStubComponent], + providers: [{ provide: EditionService, useValue: mockEditionService }] }).compileComponents(); })); @@ -39,11 +55,38 @@ describe('EditionOverviewComponent (DONE)', () => { compEl = compDe.nativeElement; // test data - expectedButtonArray = [ - new RouterLinkButton('/edition', 'intro', 'Einleitung', false), - new RouterLinkButton('/edition', 'detail', 'Edierter Notentext', false), - new RouterLinkButton('/edition', 'report', 'Kritischer Bericht', false) + expectedEditionWork = EditionWorks.op12; + expectedEditionRouterLinkButtons = [ + new RouterLinkButton( + expectedEditionWork.baseRoute, + expectedEditionWork.introRoute, + EditionConstants.editionIntro.short, + false + ), + new RouterLinkButton( + expectedEditionWork.baseRoute, + expectedEditionWork.detailRoute, + EditionConstants.editionDetail.short, + false + ), + new RouterLinkButton( + expectedEditionWork.baseRoute, + expectedEditionWork.reportRoute, + EditionConstants.editionReport.short, + false + ), + new RouterLinkButton( + expectedEditionWork.baseRoute, + expectedEditionWork.graphRoute, + EditionConstants.editionGraph.short, + false + ) ]; + + // spies on component functions + // `.and.callThrough` will track the spy down the nested describes, see + // https://jasmine.github.io/2.0/introduction.html#section-Spies:_%3Ccode%3Eand.callThrough%3C/code%3E + setButtonsSpy = spyOn(component, 'setButtons').and.callThrough(); }); it('should create', () => { @@ -51,8 +94,24 @@ describe('EditionOverviewComponent (DONE)', () => { }); describe('BEFORE initial data binding', () => { - it('should not have `editionButtonArray`', () => { - expect(component.editionButtonArray).toBeUndefined('should be undefined'); + it('should not have `editionRouterLinkButtons`', () => { + expect(component.editionRouterLinkButtons).toBeUndefined('should be undefined'); + }); + + it('should not have `editionWork`', () => { + expect(component.editionWork).toBeUndefined('should be undefined'); + }); + + describe('#getEditionWork', () => { + it('... should not have been called', () => { + expectSpyCall(getEditionWorkSpy, 0); + }); + }); + + describe('#setButtons', () => { + it('... should not have been called', () => { + expectSpyCall(setButtonsSpy, 0); + }); }); describe('VIEW', () => { @@ -72,9 +131,29 @@ describe('EditionOverviewComponent (DONE)', () => { fixture.detectChanges(); }); - it('should have `editionButtonArray`', () => { - expect(component.editionButtonArray).toBeDefined('should be defined'); - expect(component.editionButtonArray).toEqual(expectedButtonArray, `should equal ${expectedButtonArray}`); + describe('#getEditionWork', () => { + it('should have been called', () => { + expectSpyCall(getEditionWorkSpy, 1); + }); + }); + + it('should have `editionWork`', () => { + expect(component.editionWork).toBeDefined('should be defined'); + expect(component.editionWork).toEqual(expectedEditionWork, `should equal ${expectedEditionWork}`); + }); + + describe('#setButtons', () => { + it('... should have been called', () => { + expectSpyCall(setButtonsSpy, 1); + }); + + it('should have `editionRouterLinkButtons`', () => { + expect(component.editionRouterLinkButtons).toBeDefined('should be defined'); + expect(component.editionRouterLinkButtons).toEqual( + expectedEditionRouterLinkButtons, + `should equal ${expectedEditionRouterLinkButtons}` + ); + }); }); describe('VIEW', () => { @@ -86,14 +165,17 @@ describe('EditionOverviewComponent (DONE)', () => { getAndExpectDebugElementByDirective(compDe, RouterLinkButtonGroupStubComponent, 1, 1); }); - it('... should pass down buttonArray to RouterLinkButtonGroupComponent', () => { + it('... should pass down editionRouterLinkButtons to RouterLinkButtonGroupComponent', () => { const buttonDes = getAndExpectDebugElementByDirective(compDe, RouterLinkButtonGroupStubComponent, 1, 1); const buttonCmp = buttonDes[0].injector.get( RouterLinkButtonGroupStubComponent ) as RouterLinkButtonGroupStubComponent; - expect(buttonCmp.buttonArray).toBeTruthy(); - expect(buttonCmp.buttonArray).toEqual(expectedButtonArray, `should equal ${expectedButtonArray}`); + expect(buttonCmp.routerLinkButtons).toBeTruthy(); + expect(buttonCmp.routerLinkButtons).toEqual( + expectedEditionRouterLinkButtons, + `should equal ${expectedEditionRouterLinkButtons}` + ); }); }); }); diff --git a/src/app/views/edition-view/edition-outlets/edition-overview.component.ts b/src/app/views/edition-view/edition-outlets/edition-overview.component.ts index 402b640fbe..b2879bed53 100644 --- a/src/app/views/edition-view/edition-outlets/edition-overview.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-overview.component.ts @@ -1,6 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Subscription } from 'rxjs'; import { RouterLinkButton } from '@awg-shared/router-link-button-group/router-link-button.model'; +import { EditionConstants, EditionWork } from '@awg-views/edition-view/models'; +import { EditionService } from '@awg-views/edition-view/services'; /** * The EditionOverview component. @@ -15,13 +18,36 @@ import { RouterLinkButton } from '@awg-shared/router-link-button-group/router-li templateUrl: './edition-overview.component.html', styleUrls: ['./edition-overview.component.css'] }) -export class EditionOverviewComponent implements OnInit { +export class EditionOverviewComponent implements OnInit, OnDestroy { /** - * Public variable: editionButtonArray. + * Public variable: editionRouterLinkButtons. * * It keeps the array for the edition router link buttons. */ - editionButtonArray: RouterLinkButton[]; + editionRouterLinkButtons: RouterLinkButton[]; + + /** + * Public variable: editionWork. + * + * It keeps the current composition. + */ + editionWork: EditionWork; + + /** + * Private variable: subscription. + * + * It keeps the subscriptions of the component. + */ + private subscription: Subscription; + + /** + * Constructor of the EditionOverviewComponent. + * + * It declares a private instance of EditionService. + * + * @param {EditionService} editionService Instance of the EditionService. + */ + constructor(private editionService: EditionService) {} /** * Angular life cycle hook: ngOnInit. @@ -30,21 +56,71 @@ export class EditionOverviewComponent implements OnInit { * when initializing the component. */ ngOnInit() { - this.setButtons(); + this.getEditionWork(); + } + + /** + * Public method: getEditionWork. + * + * It subscribes to the current edition work + * of the edition service. + * + * @returns {void} Gets the current edition work. + */ + getEditionWork(): void { + this.subscription = this.editionService.getEditionWork().subscribe(work => { + this.editionWork = work; + this.setButtons(); + }); } /** * Public method: setButtons. * - * It initializes the editionButtonArray. + * It initializes the editionRouterLinkButtons. * - * @returns {void} Sets the editionButtonArray. + * @returns {void} Sets the editionRouterLinkButtons. */ setButtons(): void { - this.editionButtonArray = [ - new RouterLinkButton('/edition', 'intro', 'Einleitung', false), - new RouterLinkButton('/edition', 'detail', 'Edierter Notentext', false), - new RouterLinkButton('/edition', 'report', 'Kritischer Bericht', false) + this.editionRouterLinkButtons = [ + new RouterLinkButton( + this.editionWork.baseRoute, + this.editionWork.introRoute, + EditionConstants.editionIntro.short, + false + ), + new RouterLinkButton( + this.editionWork.baseRoute, + this.editionWork.detailRoute, + EditionConstants.editionDetail.short, + false + ), + new RouterLinkButton( + this.editionWork.baseRoute, + this.editionWork.reportRoute, + EditionConstants.editionReport.short, + false + ), + new RouterLinkButton( + this.editionWork.baseRoute, + this.editionWork.graphRoute, + EditionConstants.editionGraph.short, + false + ) ]; } + + /** + * Angular life cycle hook: ngOnDestroy. + * + * It calls the containing methods + * when destroying the component. + * + * Destroys subscriptions. + */ + ngOnDestroy() { + if (this.subscription) { + this.subscription.unsubscribe(); + } + } } diff --git a/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.css b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.html b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.html new file mode 100644 index 0000000000..8ec9dd57a6 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.html @@ -0,0 +1,5 @@ + + + diff --git a/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.spec.ts new file mode 100644 index 0000000000..1c43a58496 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RouterOutletStubComponent } from '@testing/router-stubs'; + +import { EditionSectionComponent } from './edition-section.component'; + +describe('EditionSectionComponent', () => { + let component: EditionSectionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [EditionSectionComponent, RouterOutletStubComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditionSectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.ts b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.ts new file mode 100644 index 0000000000..b296a9f856 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-section/edition-section.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; + +/** + * The EditionSection component. + * + * It contains the section section + * of the edition view of the app. + */ +@Component({ + selector: 'awg-edition-section', + templateUrl: './edition-section.component.html', + styleUrls: ['./edition-section.component.css'] +}) +export class EditionSectionComponent implements OnInit { + /** + * Constructor of the EditionSectionComponent. + */ + constructor() {} + + /** + * Angular life cycle hook: ngOnInit. + * + * It calls the containing methods + * when initializing the component. + */ + ngOnInit() {} +} diff --git a/src/app/views/edition-view/edition-outlets/edition-section/index.ts b/src/app/views/edition-view/edition-outlets/edition-section/index.ts new file mode 100644 index 0000000000..ff44f77f54 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-section/index.ts @@ -0,0 +1 @@ +export * from './edition-section.component'; diff --git a/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.css b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.html b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.html new file mode 100644 index 0000000000..fea64c2832 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.html @@ -0,0 +1,3 @@ +

edition-series works!

+ + diff --git a/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.spec.ts new file mode 100644 index 0000000000..1d68942453 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RouterOutletStubComponent } from '@testing/router-stubs'; + +import { EditionSeriesComponent } from './edition-series.component'; + +describe('EditionSeriesComponent', () => { + let component: EditionSeriesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [EditionSeriesComponent, RouterOutletStubComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditionSeriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.ts b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.ts new file mode 100644 index 0000000000..64199ecfef --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-series/edition-series.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; + +/** + * The EditionSeries component. + * + * It contains the series section + * of the edition view of the app. + */ +@Component({ + selector: 'awg-edition-series', + templateUrl: './edition-series.component.html', + styleUrls: ['./edition-series.component.css'] +}) +export class EditionSeriesComponent implements OnInit { + /** + * Constructor of the EditionSeriesComponent. + */ + constructor() {} + + /** + * Angular life cycle hook: ngOnInit. + * + * It calls the containing methods + * when initializing the component. + */ + ngOnInit() {} +} diff --git a/src/app/views/edition-view/edition-outlets/edition-series/index.ts b/src/app/views/edition-view/edition-outlets/edition-series/index.ts new file mode 100644 index 0000000000..854585a559 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-series/index.ts @@ -0,0 +1 @@ +export * from './edition-series.component'; diff --git a/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.html b/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.html index 0335b8c48c..d08d76327c 100644 --- a/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.html @@ -8,12 +8,12 @@ Kommentar - - - {{ textcritic.measure }} - {{ textcritic.system }} - - + + + {{ textcriticalComment.measure }} + {{ textcriticalComment.system }} + + diff --git a/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.ts b/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.ts index 86db02fdea..756328855b 100644 --- a/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-tka-table/edition-tka-table.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { Textcritics } from '../../models/index'; +import { TextcriticalComment } from '../../models/index'; /** * The EditionTkaTable component. @@ -16,12 +16,12 @@ import { Textcritics } from '../../models/index'; }) export class EditionTkaTableComponent implements OnInit { /** - * Input variable: selectedTextcritics. + * Input variable: textcriticalComments. * - * It keeps the selected textcritics. + * It keeps the textcritical comments. */ @Input() - selectedTextcritics: Textcritics[]; + textcriticalComments: TextcriticalComment[]; /** * Output variable: openModalRequest. diff --git a/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.css b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.html b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.html new file mode 100644 index 0000000000..3a8c9df194 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.html @@ -0,0 +1,3 @@ +

edition-type works!

+ + diff --git a/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.spec.ts new file mode 100644 index 0000000000..9d440adf0c --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RouterOutletStubComponent } from '@testing/router-stubs'; + +import { EditionTypeComponent } from './edition-type.component'; + +describe('EditionTypeComponent', () => { + let component: EditionTypeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [EditionTypeComponent, RouterOutletStubComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditionTypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.ts b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.ts new file mode 100644 index 0000000000..2909522d81 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-type/edition-type.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; + +/** + * The EditionType component. + * + * It contains the type section + * of the edition view of the app. + */ +@Component({ + selector: 'awg-edition-type', + templateUrl: './edition-type.component.html', + styleUrls: ['./edition-type.component.css'] +}) +export class EditionTypeComponent implements OnInit { + /** + * Constructor of the EditionTypeComponent. + */ + constructor() {} + + /** + * Angular life cycle hook: ngOnInit. + * + * It calls the containing methods + * when initializing the component. + */ + ngOnInit() {} +} diff --git a/src/app/views/edition-view/edition-outlets/edition-type/index.ts b/src/app/views/edition-view/edition-outlets/edition-type/index.ts new file mode 100644 index 0000000000..dcad7d0490 --- /dev/null +++ b/src/app/views/edition-view/edition-outlets/edition-type/index.ts @@ -0,0 +1 @@ +export * from './edition-type.component'; diff --git a/src/app/views/edition-view/edition-outlets/intro/index.ts b/src/app/views/edition-view/edition-outlets/intro/index.ts deleted file mode 100644 index 3f53f8cb46..0000000000 --- a/src/app/views/edition-view/edition-outlets/intro/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './intro.component'; diff --git a/src/app/views/edition-view/edition-outlets/intro/intro.component.html b/src/app/views/edition-view/edition-outlets/intro/intro.component.html deleted file mode 100644 index 0a9665c997..0000000000 --- a/src/app/views/edition-view/edition-outlets/intro/intro.component.html +++ /dev/null @@ -1,38 +0,0 @@ - -
- - - - - -
-

Einleitung

-

- [Die Einleitung zum gesamten Werkkomplex Vier Lieder op. 12 erscheint im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.] -

-

- Die Skizzen in A enthalten datierte Verlaufsskizzen zu allen vier Liedern: Aa:SkI/1 (13. Januar 1915), Ab:SkII/1 (10. April 1917), Ac:SkIII/1 und Ac:SkIII/7 (31. Januar 1915) sowie Ae:SkIV/1 (31. März 1917). Darüber hinaus finden sich Skizzen zu einzelnen Stellen. -

-

- [Die Einleitung zu Aa:Sk1/1 erscheint im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.] -

-

- In Aa:SkI/2 werden T. [11]–[12] aus Aa:SkI/1 bzw. T. 10–11 aus B (Nr. I „Der Tag ist vergangen“ [Fassung 1]) neu skizziert, in Aa:SkI/3, Aa:SkI/4 und Aa:SkI/5 weiter modifiziert und zu einer Formulierung gebracht, die T. 10–11 aus C (Nr. I „Der Tag ist vergangen“ [Fassung2]) entspricht. Da T. 10–11 in B offensichtlich zunächst aus Aa:SkI/1 übernommen wurden und Korrekturen in B mit Bleistift auf die Formulierung von Aa:SkI/2 hindeuten, sind Aa:SkI/2–5 offensichtlich erst nach der Niederschrift von B und während oder nach den dort vorhandenen Korrekturen, vermutlich als Arbeitsvorlage für C entstanden. -

-

- Aa:SkI/2 übernimmt, wie erwähnt, bestimmte Merkmale der Korrekturen in B, die bei einem gleichbleibenden Metrum (das allerdings weder durch einen Taktstrich vor T. [12] kenntlich gemacht noch durch eine neue Taktartvorzeichnung explizit geändert wird) zu einer Erweiterung der vormals zweitaktigen zu einer dreitaktigen Figur führen. Im Klavier (System 13–12) wird die rhythmische Konstellation der Zweiklänge F/e im unteren System und es1/as1 im oberen System geändert sowie der letzte Zweiklang im unteren System aus Aa:SkI/1 bzw. B (Gis/cis) getilgt. -

-

- Aa:SkI/3 verkürzt die Figur wieder zu einer zweitaktigen, wobei in System 11 zunächst die Verlängerung des ersten Tons der Singstimme („e–[wig]“) wie in Aa:SkI/2 tendenziell übernommen, dann in System 12 wieder in die rhythmische Ausgangs-Konfiguration geführt wird. Die Klavierstimme (System 10–9) bringt in der letzten Korrekturschicht bereits die in Aa:SkI/5 formulierte und in C verwendete Variante. -

-

- Aa:SkI/4 erprobt weitere diastematische Varianten der zweitaktigen Figur der Singstimme (System 5 und 4) sowie eine rhythmische Modifizierung und Oktavierung des Zweiklangs es/as im Klavier (System 7–6). -

-

- Aa:SkI/5 bringt in der letzten Korrekturschicht die in C verwendete Variante. -

-

- [Die Einleitungen zu den weiteren Skizzen aus A erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.] -

-
-
diff --git a/src/app/views/edition-view/edition-outlets/intro/intro.component.ts b/src/app/views/edition-view/edition-outlets/intro/intro.component.ts deleted file mode 100644 index 0c96ef812f..0000000000 --- a/src/app/views/edition-view/edition-outlets/intro/intro.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; - -/** - * The Intro component. - * - * It contains the intro section - * of the edition view of the app. - */ -@Component({ - selector: 'awg-intro', - templateUrl: './intro.component.html', - styleUrls: ['./intro.component.css'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class IntroComponent {} diff --git a/src/app/views/edition-view/edition-outlets/report/report.component.html b/src/app/views/edition-view/edition-outlets/report/report.component.html index d20ead7077..454ad80ed5 100644 --- a/src/app/views/edition-view/edition-outlets/report/report.component.html +++ b/src/app/views/edition-view/edition-outlets/report/report.component.html @@ -3,21 +3,22 @@ - - - diff --git a/src/app/views/edition-view/edition-outlets/report/report.component.spec.ts b/src/app/views/edition-view/edition-outlets/report/report.component.spec.ts index 7584166dc6..cbf003db0e 100644 --- a/src/app/views/edition-view/edition-outlets/report/report.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/report/report.component.spec.ts @@ -2,6 +2,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Component, Input } from '@angular/core'; import { RouterTestingModule } from '@angular/router/testing'; + import { of as observableOf } from 'rxjs'; import Spy = jasmine.Spy; @@ -9,8 +10,14 @@ import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; import { CompileHtmlComponent } from '@awg-shared/compile-html'; import { ModalComponent } from '@awg-shared/modal/modal.component'; -import { SourceList, TextcriticsList } from '@awg-views/edition-view/models'; -import { EditionDataService } from '@awg-views/edition-view/services'; +import { + EditionWorks, + SourceDescriptionList, + SourceEvaluationList, + SourceList, + TextcriticsList +} from '@awg-views/edition-view/models'; +import { EditionDataService, EditionService } from '@awg-views/edition-view/services'; import { ReportComponent } from './report.component'; @@ -27,6 +34,10 @@ class HeadingStubComponent { class SourcesStubComponent { @Input() sourceListData: SourceList; + @Input() + sourceDescriptionListData: SourceDescriptionList; + @Input() + sourceEvaluationListData: SourceEvaluationList; // TODO: handle output } @@ -43,13 +54,19 @@ describe('ReportComponent', () => { let component: ReportComponent; let fixture: ComponentFixture; - let getDataSpy: Spy; + let getEditionReportDataSpy: Spy; + let getEditionWorkSpy: Spy; beforeEach(async(() => { - // create a fake service object with a `getData()` spy + // create a fake service object with a `getEditionReportData()` spy const mockEditionDataService = jasmine.createSpyObj('EditionDataService', ['getEditionReportData']); // make the spy return a synchronous Observable with the test data - getDataSpy = mockEditionDataService.getEditionReportData.and.returnValue(observableOf({})); // TODO: provide real test data + getEditionReportDataSpy = mockEditionDataService.getEditionReportData.and.returnValue(observableOf({})); // TODO: provide real test data + + // create a fake service object with a `getEditionWork()` spy + const mockEditionService = jasmine.createSpyObj('EditionService', ['getEditionWork']); + // make the spy return a synchronous Observable with the test data + getEditionWorkSpy = mockEditionService.getEditionWork.and.returnValue(observableOf(EditionWorks.op12)); // TODO: provide real test data TestBed.configureTestingModule({ imports: [NgbModalModule, RouterTestingModule], @@ -61,7 +78,10 @@ describe('ReportComponent', () => { TextcritisStubComponent, ModalComponent ], - providers: [{ provide: EditionDataService, useValue: mockEditionDataService }] + providers: [ + { provide: EditionDataService, useValue: mockEditionDataService }, + { provide: EditionService, useValue: mockEditionService } + ] }).compileComponents(); })); @@ -80,9 +100,14 @@ describe('ReportComponent', () => { fixture.detectChanges(); }); - it('should have called `getData()`', () => { + it('should have called `getEditionWork()`', () => { + // `getEditionReportData()` called immediately after init + expect(getEditionWorkSpy.calls.any()).toBe(true, 'getEditionWork() called'); + }); + + it('should have called `getEditionReportData()`', () => { // `getEditionReportData()` called immediately after init - expect(getDataSpy.calls.any()).toBe(true, 'getData called'); + expect(getEditionReportDataSpy.calls.any()).toBe(true, 'getEditionReportData() called'); }); }); }); diff --git a/src/app/views/edition-view/edition-outlets/report/report.component.ts b/src/app/views/edition-view/edition-outlets/report/report.component.ts index 7d9a5f96be..8a22d31f48 100644 --- a/src/app/views/edition-view/edition-outlets/report/report.component.ts +++ b/src/app/views/edition-view/edition-outlets/report/report.component.ts @@ -1,10 +1,18 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; +import { NavigationExtras, Router } from '@angular/router'; -import { Observable } from 'rxjs'; +import { Observable, throwError } from 'rxjs'; -import { SourceList, TextcriticsList } from '@awg-views/edition-view/models'; -import { EditionDataService } from '@awg-views/edition-view/services'; +import { + EditionConstants, + EditionWork, + SourceDescriptionList, + SourceEvaluationList, + SourceList, + TextcriticsList +} from '@awg-views/edition-view/models'; +import { EditionDataService, EditionService } from '@awg-views/edition-view/services'; +import { catchError, switchMap } from 'rxjs/operators'; /** * The Report component. @@ -21,25 +29,25 @@ import { EditionDataService } from '@awg-views/edition-view/services'; }) export class ReportComponent implements OnInit { /** - * Public variable: editionReportData$. + * Public variable: editionWork. * - * Observable that keeps the report data. + * It keeps the information about the current composition. */ - editionReportData$: Observable<[SourceList, TextcriticsList]>; + editionWork: EditionWork; /** - * Public variable: reportId. + * Public variable: editionReportData$. * - * It keeps the id of the report section. + * Observable that keeps the report data. */ - reportId = 'report'; + editionReportData$: Observable<[SourceList, SourceDescriptionList, SourceEvaluationList, TextcriticsList]>; /** - * Public variable: reportTitle. + * Public variable: errorObject. * - * It keeps the title of the report section. + * It keeps an errorObject for the service calls. */ - reportTitle = 'Kritischer Bericht'; + errorObject = null; /** * Constructor of the ReportComponent. @@ -48,9 +56,14 @@ export class ReportComponent implements OnInit { * to get the report data and a private Router instance. * * @param {EditionDataService} editionDataService Instance of the EditionDataService. + * @param {EditionService} editionService Instance of the EditionService. * @param {Router} router Instance of the Router. */ - constructor(private editionDataService: EditionDataService, private router: Router) {} + constructor( + private editionDataService: EditionDataService, + private editionService: EditionService, + private router: Router + ) {} /** * Angular life cycle hook: ngOnInit. @@ -71,19 +84,60 @@ export class ReportComponent implements OnInit { * @returns {void} Sets the editionReportData observable. */ getEditionReportData(): void { - this.editionReportData$ = this.editionDataService.getEditionReportData(); + this.editionReportData$ = this.editionService + // get current editionWork from editionService + .getEditionWork() + .pipe( + switchMap((work: EditionWork) => { + // set current editionWork + this.editionWork = work; + // get intro data from editionDataService + return this.editionDataService.getEditionReportData(this.editionWork); + }), + // error handling + catchError(err => { + this.errorObject = err; + return throwError(err); + }) + ); + } + + /** + * Public method: onReportFragmentNavigate. + * + * It navigates to the '/report/' route with the given fragmentId. + * + * @param {string} fragmentId The given fragment id. + * @returns {void} Navigates to the edition report. + */ + onReportFragmentNavigate(fragmentId: string) { + if (!fragmentId) { + fragmentId = ''; + } + const navigationExtras: NavigationExtras = { + fragment: fragmentId + }; + this.router.navigate([this.editionWork.baseRoute, this.editionWork.reportRoute], navigationExtras); } /** * Public method: onSvgSheetSelect. * - * It navigates to the '/edition/detail' + * It navigates to the '/edition/composition/{id}/detail' * route with the given id. * * @param {string} id The given svg sheet id. * @returns {void} Navigates to the edition detail. */ onSvgSheetSelect(id: string): void { - this.router.navigate(['/edition/detail', id]); + if (!id) { + id = ''; + } + const navigationExtras: NavigationExtras = { + queryParams: { sketch: id }, + queryParamsHandling: '' + }; + + this.router.navigate([this.editionWork.baseRoute, this.editionWork.detailRoute], navigationExtras); } } diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.html b/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.html index d3d65bc287..51f0442d7e 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.html +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.html @@ -1,35 +1,13 @@ -
-

A

-

Basel, Paul Sacher Stiftung, Sammlung Anton Webern.

-
- -
-

Aa

-

- 2 Blätter (Bl. 1–2). Archivalische Paginierung [1] bis [4] unten links (recto) bzw. rechts (verso) mit Bleistift. Bl. 2v mit Ausnahme der archivalischen Paginierung unbeschriftet. Rissspuren am linken und oberen Rand: Blätter von Bogen abgetrennt und im Format verändert. -

-

- Beschreibstoff: Notenpapier, 14 Systeme, Format: quer ca. 160–180 × 267 mm, Firmenzeichen:
- firm
- auf Bl. 1r unten links (Bl. 1);
- Notenpapier, 16 Systeme, Format: quer 175 × 270 mm, kein Firmenzeichen (Bl. 2). -

-

- Schreibstoff: Bleistift. -

-

- Inhalt:
- Bl. 1r System 2–4 | 6–9 | 10–14: Skizze zu Nr. I T. 1–2, [3–6] | [7–12] | [13–17] (SkI/1a).
- Bl. 1v System 14-12b (auf dem Kopf stehend): Skizze zu Nr. I T. 10, [11-12] (SkI/2).
- Bl. 1v System 12a-9a (auf dem Kopf stehend): Skizze zu Nr. I T. 10-11 (SkI/3).
- Bl. 1v System 9b-6 (auf dem Kopf stehend): Skizze zu Nr. I T. 10-11 (SkI/5).
- Bl. 1v System 7a-4 (auf dem Kopf stehend): Skizze zu Nr. I T. 10-11 (SkI/4).
- Bl. 2r System 6–10 | 12–15: Skizze zu Nr. I T. [18–22] | [23–24] (SkI/1b).
- Bl. 2v unbeschriftet. -

-
-
-

- [Die Beschreibung der weiteren Quellenbestandteile von A sowie der Quellen B bis G1 einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.] -

+
+
+

{{ sourceDescription.siglum }}

+

{{ sourceDescription.location }}

+
+

+
+
diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.spec.ts b/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.spec.ts index e144dfafad..9bc6ed1fde 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.spec.ts @@ -1,7 +1,9 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + import { RouterLinkStubDirective } from '@testing/router-stubs'; +import { CompileHtmlComponent } from '@awg-shared/compile-html'; import { SourceDescriptionComponent } from './source-description.component'; describe('SourceDescriptionComponent', () => { @@ -10,7 +12,7 @@ describe('SourceDescriptionComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [SourceDescriptionComponent, RouterLinkStubDirective] + declarations: [SourceDescriptionComponent, CompileHtmlComponent, RouterLinkStubDirective] }).compileComponents(); })); diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.ts b/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.ts index b9e9d07e7e..f444100adc 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-description/source-description.component.ts @@ -1,10 +1,12 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { EditionConstants, EditionWorks, SourceDescriptionList } from '@awg-views/edition-view/models'; + /** * The SourceDescription component. * * It contains the source description section - * of the criitical report + * of the critical report * of the edition view of the app. */ @Component({ @@ -14,6 +16,14 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output changeDetection: ChangeDetectionStrategy.OnPush }) export class SourceDescriptionComponent implements OnInit { + /** + * Input variable: sourceDescriptionListData. + * + * It keeps the source list data. + */ + @Input() + sourceDescriptionListData: SourceDescriptionList; + /** * Output variable: openModalRequest. * @@ -23,6 +33,43 @@ export class SourceDescriptionComponent implements OnInit { @Output() openModalRequest: EventEmitter = new EventEmitter(); + /** + * Output variable: selectSvgSheetRequest. + * + * It keeps an event emitter for the selected id of an svg sheet. + */ + @Output() + selectSvgSheetRequest: EventEmitter = new EventEmitter(); + + /** + * Readonly constant: firmSigns. + * + * It keeps the routes to the firm signs. + */ + readonly firmSigns = { + op12: { + A: [EditionConstants.firmJENo9Lin28] + }, + op25: { + A: [EditionConstants.firmJENo15Lin16] + } + }; + + /** + * Self-referring variable needed for CompileHtml library. + */ + ref: SourceDescriptionComponent; + + /** + * Constructor of the EditionDetailComponent. + * + * It declares the self-referring variable + * needed for CompileHtml library. + */ + constructor() { + this.ref = this; + } + /** * Angular life cycle hook: ngOnInit. * @@ -43,4 +90,17 @@ export class SourceDescriptionComponent implements OnInit { openModal(id: string): void { this.openModalRequest.emit(id); } + + /** + * Public method: selectSvgSheet. + * + * It emits a given id of a selected svg sheet + * to the {@link selectSvgSheetRequest}. + * + * @param {string} id The given sheet id. + * @returns {void} Emits the id. + */ + selectSvgSheet(id: string): void { + this.selectSvgSheetRequest.emit(id); + } } diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.html b/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.html index fb31062da7..48fcfd66e7 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.html +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.html @@ -1,41 +1,7 @@ -
-

- Die Skizzen in A enthalten u. a. datierte Verlaufsskizzen zu allen vier Liedern: Aa:SkI/1 (13. Januar 1915), Ab:SkII/1 (10. April 1917), Ac:SkIII/1 und Ac:SkIII/7 (31. Januar 1915) sowie Ae:SkIV/1 (31. März 1917). Eine im Konvolut von A ebenfalls enthaltene fragmentarische Skizze zu einer Vertonung von Schien mir’s als ich sah die Sonne“ (M 198) für Chor und Orchester (Ad) ist (möglicherweise nachträglich) auf „Winter 1913/14“ datiert und weist – abgesehen vom vertonten Text – keine Bezüge zu op. 12 Nr. III auf. -

-

- Die Verlaufsskizzen aus A bilden die Grundlage für die Reinschrift-Fassungen von Nr. I „Der Tag ist vergangen“ (Fassung 1) in B - sowie von Nr. II–IV in C. Die Reinschrift von Nr. I „Der Tag ist vergangen“ (Fassung 2) in C stellt eine gegenüber B veränderte, in Korrekturen in B und in Aa:SkI/2–5 vorformulierte Fassung dar. Die Korrekturen von Nr. II–IV in C betreffen die Überarbeitung zur (Druck-)Fassung in F und G, der Zustand ante correcturam ist jedoch nicht immer eindeutig zu erkennen. Nr. IV Gleich und Gleich (Fassung 1) in D ist eine autographe Abschrift des Liedes aus C ante correcturam. -

-

- Nr. I „Der Tag ist vergangen aus - C ist post correcturam Stichvorlage für - E. Die Korrekturen in - E1 betreffen die Überarbeitung von - Nr. I „Der Tag ist vergangen“ (Fassung 2) zur späteren (Druck-)Fassung in - F und - G. -

-

- F ist Stichvorlage für - G. -

-

- Hauptquelle für die Werkedition der Druckfassung der Vier Lieder op. 12 ist - G. -

-

- Hauptquelle für die Textedition von - Nr. I „Der Tag ist vergangen“ (Fassung 1) ist - B. -

-

- Hauptquelle für die Textedition von - Nr. I „Der Tag ist vergangen“ (Fassung 2) ist - E. -

-

- Hauptquelle für die Textedition von - Nr. IV Gleich und Gleich (Fassung 1) ist - D. -

+
+

diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.spec.ts b/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.spec.ts index d3c6ea58cd..97c0dfa509 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.spec.ts @@ -1,7 +1,9 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + import { RouterLinkStubDirective } from '@testing/router-stubs'; +import { CompileHtmlComponent } from '@awg-shared/compile-html'; import { SourceEvaluationComponent } from './source-evaluation.component'; describe('SourceEvaluationComponent', () => { @@ -10,7 +12,7 @@ describe('SourceEvaluationComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [SourceEvaluationComponent, RouterLinkStubDirective] + declarations: [SourceEvaluationComponent, CompileHtmlComponent, RouterLinkStubDirective] }).compileComponents(); })); diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.ts b/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.ts index ded43ea98f..113cafacac 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-evaluation/source-evaluation.component.ts @@ -1,10 +1,12 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; + +import { SourceEvaluationList } from '@awg-views/edition-view/models'; /** * The SourceEvaluation component. * * It contains the source evaluation section - * of the criitical report + * of the critical report * of the edition view of the app. */ @Component({ @@ -14,6 +16,22 @@ import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output } from changeDetection: ChangeDetectionStrategy.OnPush }) export class SourceEvaluationComponent implements OnInit { + /** + * Input variable: sourceEvaluationListData. + * + * It keeps the source evaluation data. + */ + @Input() + sourceEvaluationListData: SourceEvaluationList; + + /** + * Output variable: navigateToReportFragment. + * + * It keeps an event emitter for a fragment id of the edition report. + */ + @Output() + navigateToReportFragmentRequest: EventEmitter = new EventEmitter(); + /** * Output variable: openModalRequest. * @@ -23,6 +41,29 @@ export class SourceEvaluationComponent implements OnInit { @Output() openModalRequest: EventEmitter = new EventEmitter(); + /** + * Output variable: selectSvgSheetRequest. + * + * It keeps an event emitter for the selected id of an svg sheet. + */ + @Output() + selectSvgSheetRequest: EventEmitter = new EventEmitter(); + + /** + * Self-referring variable needed for CompileHtml library. + */ + ref: SourceEvaluationComponent; + + /** + * Constructor of the EditionDetailComponent. + * + * It declares the self-referring variable + * needed for CompileHtml library. + */ + constructor() { + this.ref = this; + } + /** * Angular life cycle hook: ngOnInit. * @@ -31,6 +72,19 @@ export class SourceEvaluationComponent implements OnInit { */ ngOnInit() {} + /** + * Public method: navigateToReportFragment. + * + * It emits a given id of a fragment of the edition report + * to the {@link navigateToReportFragmentRequest}. + * + * @param {string} id The given fragment id. + * @returns {void} Navigates to the edition report. + */ + navigateToReportFragment(id: string) { + this.navigateToReportFragmentRequest.emit(id); + } + /** * Public method: openModal. * @@ -43,4 +97,17 @@ export class SourceEvaluationComponent implements OnInit { openModal(id: string): void { this.openModalRequest.emit(id); } + + /** + * Public method: selectSvgSheet. + * + * It emits a given id of a selected svg sheet + * to the {@link selectSvgSheetRequest}. + * + * @param {string} id The given sheet id. + * @returns {void} Emits the id. + */ + selectSvgSheet(id: string): void { + this.selectSvgSheetRequest.emit(id); + } } diff --git a/src/app/views/edition-view/edition-outlets/report/sources/source-list/source-list.component.spec.ts b/src/app/views/edition-view/edition-outlets/report/sources/source-list/source-list.component.spec.ts index 5154471c0a..6eb9cabb66 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/source-list/source-list.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/source-list/source-list.component.spec.ts @@ -50,13 +50,13 @@ describe('SourceListComponent', () => { siglum: 'B', type: 'Autograph von Nr. I.', location: 'Basel, Paul Sacher Stiftung, Sammlung Anton Webern.', - linkTo: 'sourceNotA' + linkTo: 'op12_sourceNotA' }, { siglum: 'C', type: 'Autograph von Nr. I–IV.', location: 'Basel, Paul Sacher Stiftung, Sammlung Anton Webern.', - linkTo: 'sourceNotA' + linkTo: 'op12_sourceNotA' } ] }; diff --git a/src/app/views/edition-view/edition-outlets/report/sources/sources.component.html b/src/app/views/edition-view/edition-outlets/report/sources/sources.component.html index cfb51e45c6..f62d5bed4c 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/sources.component.html +++ b/src/app/views/edition-view/edition-outlets/report/sources/sources.component.html @@ -17,14 +17,27 @@ - + + - + + diff --git a/src/app/views/edition-view/edition-outlets/report/sources/sources.component.spec.ts b/src/app/views/edition-view/edition-outlets/report/sources/sources.component.spec.ts index f5e88c7129..cf155b1052 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/sources.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/sources.component.spec.ts @@ -8,7 +8,7 @@ import { RouterLinkStubDirective } from '@testing/router-stubs'; import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap'; -import { SourceList } from '@awg-views/edition-view/models'; +import { SourceDescriptionList, SourceEvaluationList, SourceList } from '@awg-views/edition-view/models'; import { SourcesComponent } from './sources.component'; @@ -24,13 +24,14 @@ class SourceListStubComponent { @Component({ selector: 'awg-source-description', template: '' }) class SourceDescriptionStubComponent { @Input() - showDescriptionPanel: boolean; - + sourceDescriptionListData: SourceDescriptionList; // TODO: handle outputs } @Component({ selector: 'awg-source-evaluation', template: '' }) class SourceEvaluationStubComponent { + @Input() + sourceEvaluationListData: SourceEvaluationList; // TODO: handle outputs } @@ -41,6 +42,8 @@ describe('SourcesComponent', () => { let compEl: any; let expectedSourceListData: SourceList; + let expectedSourceDescriptionListData: SourceDescriptionList; + let expectedSourceEvaluationListData: SourceEvaluationList; beforeEach(async(() => { TestBed.configureTestingModule({ @@ -71,6 +74,14 @@ describe('SourcesComponent', () => { expect(component.sourceListData).toBeUndefined('should be undefined'); }); + it('should not get sourceDescriptionListData input', () => { + expect(component.sourceDescriptionListData).toBeUndefined('should be undefined'); + }); + + it('should not get sourceEvaluationListData input', () => { + expect(component.sourceEvaluationListData).toBeUndefined('should be undefined'); + }); + it('should not contain source list component (stubbed)', () => { getAndExpectDebugElementByDirective(compDe, SourceListStubComponent, 0, 0); }); @@ -99,19 +110,39 @@ describe('SourcesComponent', () => { siglum: 'B', type: 'Autograph von Nr. I.', location: 'Basel, Paul Sacher Stiftung, Sammlung Anton Webern.', - linkTo: 'sourceNotA' + linkTo: 'op12_sourceNotA' }, { siglum: 'C', type: 'Autograph von Nr. I–IV.', location: 'Basel, Paul Sacher Stiftung, Sammlung Anton Webern.', - linkTo: 'sourceNotA' + linkTo: 'op12_sourceNotA' + } + ] + }; + expectedSourceDescriptionListData = { + sources: [ + { + id: 'sourceA', + siglum: 'A', + location: 'Basel, Paul Sacher Stiftung, Sammlung Anton Webern.', + description: [] + } + ] + }; + expectedSourceEvaluationListData = { + sources: [ + { + id: 'op12', + content: ['Die Skizzen in A sind zum Testen da.'] } ] }; // simulate the parent setting the input properties component.sourceListData = expectedSourceListData; + component.sourceDescriptionListData = expectedSourceDescriptionListData; + component.sourceEvaluationListData = expectedSourceEvaluationListData; // trigger initial data binding fixture.detectChanges(); diff --git a/src/app/views/edition-view/edition-outlets/report/sources/sources.component.ts b/src/app/views/edition-view/edition-outlets/report/sources/sources.component.ts index ee441a4cac..e3d3f526aa 100644 --- a/src/app/views/edition-view/edition-outlets/report/sources/sources.component.ts +++ b/src/app/views/edition-view/edition-outlets/report/sources/sources.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { SourceList } from '@awg-views/edition-view/models'; +import { SourceDescriptionList, SourceEvaluationList, SourceList } from '@awg-views/edition-view/models'; /** * The Sources component. @@ -25,6 +25,30 @@ export class SourcesComponent implements OnInit { @Input() sourceListData: SourceList; + /** + * Input variable: sourceDescriptionListData. + * + * It keeps the source description data. + */ + @Input() + sourceDescriptionListData: SourceDescriptionList; + + /** + * Input variable: sourceEvaluationListData. + * + * It keeps the source evaluation data. + */ + @Input() + sourceEvaluationListData: SourceEvaluationList; + + /** + * Output variable: navigateToReportFragment. + * + * It keeps an event emitter for a fragment id of the edition report. + */ + @Output() + navigateToReportFragmentRequest: EventEmitter = new EventEmitter(); + /** * Output variable: openModalRequest. * @@ -34,6 +58,14 @@ export class SourcesComponent implements OnInit { @Output() openModalRequest: EventEmitter = new EventEmitter(); + /** + * Output variable: selectSvgSheetRequest. + * + * It keeps an event emitter for the selected id of an svg sheet. + */ + @Output() + selectSvgSheetRequest: EventEmitter = new EventEmitter(); + /** * Angular life cycle hook: ngOnInit. * @@ -42,6 +74,19 @@ export class SourcesComponent implements OnInit { */ ngOnInit() {} + /** + * Public method: navigateToReportFragment. + * + * It emits a given fragment id of the edition report + * to the {@link navigateToReportFragmentRquest}. + * + * @param {string} fragmentId The given fragment id. + * @returns {void} Navigates to the edition report. + */ + navigateToReportFragment(fragmentId: string) { + this.navigateToReportFragmentRequest.emit(fragmentId); + } + /** * Public method: openModal. * @@ -55,4 +100,17 @@ export class SourcesComponent implements OnInit { openModal(id: string): void { this.openModalRequest.emit(id); } + + /** + * Public method: selectSvgSheet. + * + * It emits a given id of a selected svg sheet + * to the {@link selectSvgSheetRequest}. + * + * @param {string} id The given sheet id. + * @returns {void} Emits the id. + */ + selectSvgSheet(id: string): void { + this.selectSvgSheetRequest.emit(id); + } } diff --git a/src/app/views/edition-view/edition-outlets/report/textcritics/index.ts b/src/app/views/edition-view/edition-outlets/report/textcritics/index.ts index 991d3a4c29..5f0dc9a95d 100644 --- a/src/app/views/edition-view/edition-outlets/report/textcritics/index.ts +++ b/src/app/views/edition-view/edition-outlets/report/textcritics/index.ts @@ -1,9 +1,9 @@ /** * - * (EditionReport) Textcritics + * (EditionReport) TextcriticalComment * * This file exports components that are used - * for the (EditionReport) Textcritics view. + * for the (EditionReport) TextcriticalComment view. * */ diff --git a/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.html b/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.html index 7b8db91f17..44348f1185 100644 --- a/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.html +++ b/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.html @@ -1,25 +1,27 @@ -
-

Aa:SkI/1:

-

- [Der Textkritische Kommentar zu Aa:Sk1/1 erscheint im Zusammenhang der - vollständigen Edition der Vier Lieder op. 12 in AWG I/5.] -

-
+
+
+
+ {{ textcritic.id }} +
+
+

+
-
- - {{ textcritics.key }}: - - - + + +
diff --git a/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.spec.ts b/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.spec.ts index 1aaa736e90..3e1e26e648 100644 --- a/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.spec.ts @@ -1,11 +1,13 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Component, Input } from '@angular/core'; + import { RouterLinkStubDirective } from '@testing/router-stubs'; import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap'; -import { Textcritics } from '@awg-views/edition-view/models'; +import { CompileHtmlComponent } from '@awg-shared/compile-html'; +import { TextcriticalComment } from '@awg-views/edition-view/models'; import { TextcriticsComponent } from './textcritics.component'; @@ -13,7 +15,7 @@ import { TextcriticsComponent } from './textcritics.component'; @Component({ selector: 'awg-edition-tka-table', template: '' }) class EditionTkaTableStubComponent { @Input() - selectedTextcritics: Textcritics[]; + textcriticalComments: TextcriticalComment[]; // TODO: handle outputs } @@ -25,7 +27,12 @@ describe('TextcriticsComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [NgbAccordionModule], - declarations: [TextcriticsComponent, EditionTkaTableStubComponent, RouterLinkStubDirective] + declarations: [ + TextcriticsComponent, + EditionTkaTableStubComponent, + CompileHtmlComponent, + RouterLinkStubDirective + ] }).compileComponents(); })); diff --git a/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.ts b/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.ts index 215a145d65..b1ea27f768 100644 --- a/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.ts +++ b/src/app/views/edition-view/edition-outlets/report/textcritics/textcritics.component.ts @@ -1,9 +1,9 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { TextcriticsList } from '@awg-views/edition-view/models'; +import { TextcriticalComment, TextcriticsList } from '@awg-views/edition-view/models'; /** - * The Textcritics component. + * The TextcriticalComment component. * * It contains the textcritical comments section * of the critical report of the edition view of the app @@ -88,4 +88,17 @@ export class TextcriticsComponent implements OnInit { selectSvgSheet(id: string): void { this.selectSvgSheetRequest.emit(id); } + + /** + * Public method: hasComments. + * + * It checks if a given textcritical comment array + * is not empty. + * + * @param {string} comments The given TextCriticalComment array. + * @returns {boolean} The boolean result of the check. + */ + hasComments(comments: TextcriticalComment[]): boolean { + return comments && comments.constructor === Array && comments.length > 0; + } } diff --git a/src/app/views/edition-view/edition-routing.module.ts b/src/app/views/edition-view/edition-routing.module.ts deleted file mode 100644 index 2cf4ce813a..0000000000 --- a/src/app/views/edition-view/edition-routing.module.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { EditionViewComponent } from './edition-view.component'; -import { EditionDetailComponent } from './edition-outlets/edition-detail'; -import { EditionOverviewComponent } from './edition-outlets/edition-overview.component'; -import { IntroComponent } from './edition-outlets/intro'; -import { ReportComponent } from './edition-outlets/report'; - -/* routes of the EditionModule */ -const editionRoutes: Routes = [ - { - path: '', - component: EditionViewComponent, - children: [ - { - path: '', - component: EditionOverviewComponent, - children: [ - { path: 'intro', component: IntroComponent }, - { path: 'detail', component: EditionDetailComponent }, - { path: 'detail/:id', component: EditionDetailComponent }, - { path: 'report', component: ReportComponent } - ] - } - ] - } -]; - -/** - * Routed components of the {@link EditionModule}: - * {@link IntroComponent}, {@link EditionDetailComponent}, - * {@link ReportComponent}. - */ -export const routedEditionComponents = [ - EditionViewComponent, - EditionDetailComponent, - IntroComponent, - EditionOverviewComponent, - ReportComponent -]; - -/** - * Edition module routing. - * - * It activates the editionRoutes. - */ -@NgModule({ - imports: [RouterModule.forChild(editionRoutes)], - exports: [RouterModule] -}) -export class EditionRoutingModule {} diff --git a/src/app/views/edition-view/edition-view-routing.module.ts b/src/app/views/edition-view/edition-view-routing.module.ts new file mode 100644 index 0000000000..9632921f5e --- /dev/null +++ b/src/app/views/edition-view/edition-view-routing.module.ts @@ -0,0 +1,85 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { EditionViewComponent } from './edition-view.component'; +import { EditionDetailComponent } from './edition-outlets/edition-detail'; +import { EditionGraphComponent } from './edition-outlets/edition-graph'; +import { EditionIntroComponent } from './edition-outlets/edition-intro'; +import { EditionOverviewComponent } from './edition-outlets/edition-overview.component'; +import { EditionSectionComponent } from './edition-outlets/edition-section'; +import { EditionSeriesComponent } from './edition-outlets/edition-series'; +import { EditionTypeComponent } from './edition-outlets/edition-type'; +import { ReportComponent } from './edition-outlets/report'; + +import { EditionConstants } from './models/edition-constants'; + +/* routes of the EditionViewModule */ +const editionViewRoutes: Routes = [ + { + path: '', + component: EditionSectionComponent, + children: [ + { + // compositionID (op12, M317, etc. + path: 'composition/:compositionId', + component: EditionViewComponent, + children: [ + { + path: '', + component: EditionOverviewComponent, + children: [ + { + // value.of() needed for not string routes due to a bug in compodoc (or deeper dependencies) + // cf. https://github.com/compodoc/compodoc/issues/525#issuecomment-488822477 + path: EditionConstants.editionGraph.route.valueOf(), + component: EditionGraphComponent + }, + { + path: EditionConstants.editionIntro.route.valueOf(), + component: EditionIntroComponent + }, + { + path: EditionConstants.editionDetail.route.valueOf(), + component: EditionDetailComponent + }, + { path: EditionConstants.editionReport.route.valueOf(), component: ReportComponent }, + { + path: '', + redirectTo: '/' + EditionConstants.editionIntro.route.valueOf(), + pathMatch: 'full' + } + ] + } + ] + } + ] + } +]; + +/** + * Routed components of the {@link EditionViewModule}: + * {@link EditionIntroComponent}, {@link EditionDetailComponent}, + * {@link ReportComponent}. + */ +export const routedEditionViewComponents = [ + EditionViewComponent, + EditionDetailComponent, + EditionGraphComponent, + EditionIntroComponent, + EditionOverviewComponent, + EditionSectionComponent, + EditionSeriesComponent, + EditionTypeComponent, + ReportComponent +]; + +/** + * EditionView module routing. + * + * It activates the editionViewRoutes. + */ +@NgModule({ + imports: [RouterModule.forChild(editionViewRoutes)], + exports: [RouterModule] +}) +export class EditionViewRoutingModule {} diff --git a/src/app/views/edition-view/edition-view.component.html b/src/app/views/edition-view/edition-view.component.html index 41c52a5b3a..8609cda10d 100644 --- a/src/app/views/edition-view/edition-view.component.html +++ b/src/app/views/edition-view/edition-view.component.html @@ -1,7 +1,13 @@ - + + +
+ +
{{ editionWork.edition.short }} / {{ editionWork.series.full }} / {{ editionWork.section.full }}
+

{{ editionWork.work.full }}

+
diff --git a/src/app/views/edition-view/edition-view.component.spec.ts b/src/app/views/edition-view/edition-view.component.spec.ts index d74f742ea6..3de13d7752 100644 --- a/src/app/views/edition-view/edition-view.component.spec.ts +++ b/src/app/views/edition-view/edition-view.component.spec.ts @@ -1,10 +1,10 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Component, DebugElement, Input } from '@angular/core'; -import { Router } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { expectSpyCall, getAndExpectDebugElementByDirective } from '@testing/expect-helper'; -import { RouterOutletStubComponent } from '@testing/router-stubs'; +import { ActivatedRouteStub, RouterOutletStubComponent } from '@testing/router-stubs'; import { EditionViewComponent } from './edition-view.component'; @@ -24,17 +24,23 @@ describe('EditionViewComponent (DONE)', () => { let compEl: any; let mockRouter; + let mockActivatedRoute: ActivatedRouteStub; - const expectedTitle = 'Beispieledition ausgewählter Skizzen zu Vier Lieder op. 12, Nr. 1'; - const expectedId = 'edition'; + const expectedTitle = 'Beispieledition ausgewählter Skizzen'; + const expectedId = 'awg-edition-view'; beforeEach(async(() => { // router spy object mockRouter = jasmine.createSpyObj('Router', ['navigate']); + // mocked activated route + mockActivatedRoute = new ActivatedRouteStub(); TestBed.configureTestingModule({ declarations: [EditionViewComponent, HeadingStubComponent, RouterOutletStubComponent], - providers: [{ provide: Router, useValue: mockRouter }] + providers: [ + { provide: ActivatedRoute, useValue: mockActivatedRoute }, + { provide: Router, useValue: mockRouter } + ] }).compileComponents(); })); @@ -56,11 +62,11 @@ describe('EditionViewComponent (DONE)', () => { describe('BEFORE initial data binding', () => { it('should have title and id', () => { - expect(component.editionTitle).toBeDefined(); - expect(component.editionTitle).toBe(expectedTitle); + expect(component.editionViewTitle).toBeDefined(); + expect(component.editionViewTitle).toBe(expectedTitle); - expect(component.editionId).toBeDefined(); - expect(component.editionId).toBe(expectedId); + expect(component.editionViewId).toBeDefined(); + expect(component.editionViewId).toBe(expectedId); }); describe('#routeToSidenav', () => { diff --git a/src/app/views/edition-view/edition-view.component.ts b/src/app/views/edition-view/edition-view.component.ts index e9167cb537..1824756959 100644 --- a/src/app/views/edition-view/edition-view.component.ts +++ b/src/app/views/edition-view/edition-view.component.ts @@ -1,5 +1,9 @@ import { Component, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; + +import { EditionWork, EditionWorks } from '@awg-views/edition-view/models'; +import { EditionService } from '@awg-views/edition-view/services'; +import { Observable } from 'rxjs'; /** * The EditionView component. @@ -15,27 +19,38 @@ import { Router } from '@angular/router'; }) export class EditionViewComponent implements OnInit { /** - * Public variable: editionTitle. + * Public variable: editionViewTitle * * It keeps the title of the edition view section. */ - editionTitle = 'Beispieledition ausgewählter Skizzen zu Vier Lieder op. 12, Nr. 1'; + editionViewTitle = 'Beispieledition ausgewählter Skizzen'; /** - * Public variable: editionId. + * Public variable: editionViewId. * * It keeps the id of the edition view section. */ - editionId = 'edition'; + editionViewId = 'awg-edition-view'; + + /** + * Public variable: editionWork$. + * + * Observable that keeps the information + * about the current composition. + */ + editionWork$: Observable; /** * Constructor of the EditionViewComponent. * - * It declares a private Router instance. + * It declares private instances of + * EditionService, ActivatedRoute and Router. * + * @param {EditionService} editionService Instance of the EditionService. + * @param {ActivatedRoute} route Instance of the Angular ActivatedRoute. * @param {Router} router Instance of the Angular router. */ - constructor(private router: Router) {} + constructor(private editionService: EditionService, private route: ActivatedRoute, private router: Router) {} /** * Angular life cycle hook: ngOnInit. @@ -45,6 +60,11 @@ export class EditionViewComponent implements OnInit { */ ngOnInit() { this.routeToSidenav(); + this.route.paramMap.subscribe(params => { + const id: string = params.get('compositionId') ? params.get('compositionId') : ''; + this.editionService.updateEditionWork(EditionWorks[id]); + this.editionWork$ = this.editionService.getEditionWork(); + }); } /** diff --git a/src/app/views/edition-view/edition.module.ts b/src/app/views/edition-view/edition-view.module.ts similarity index 63% rename from src/app/views/edition-view/edition.module.ts rename to src/app/views/edition-view/edition-view.module.ts index 76ff54cc51..b9d48569ca 100644 --- a/src/app/views/edition-view/edition.module.ts +++ b/src/app/views/edition-view/edition-view.module.ts @@ -5,18 +5,18 @@ import { EditionDetailModule } from './edition-outlets/edition-detail/edition-de import { ReportModule } from './edition-outlets/report/report.module'; /* Routing Module */ -import { EditionRoutingModule, routedEditionComponents } from './edition-routing.module'; +import { EditionViewRoutingModule, routedEditionViewComponents } from './edition-view-routing.module'; /** - * The edition module. + * The editionView module. * * It embeds the edition components and their - * [routing definition]{@link EditionRoutingModule} + * [routing definition]{@link EditionViewRoutingModule} * as well as the {@link EditionDetailModule}, * {@link ReportModule} and {@link SharedModule}. */ @NgModule({ - imports: [SharedModule, EditionDetailModule, ReportModule, EditionRoutingModule], - declarations: [routedEditionComponents] + imports: [SharedModule, EditionDetailModule, ReportModule, EditionViewRoutingModule], + declarations: [routedEditionViewComponents] }) -export class EditionModule {} +export class EditionViewModule {} diff --git a/src/app/views/edition-view/models/edition-constants.ts b/src/app/views/edition-view/models/edition-constants.ts new file mode 100644 index 0000000000..8063f60a7a --- /dev/null +++ b/src/app/views/edition-view/models/edition-constants.ts @@ -0,0 +1,222 @@ +/** + * The EditionRoute class. + * + * It is used in the context of the edition view + * to store string constants of the editions. + */ +export class EditionRoute { + /** + * The route path of an edition route. + */ + route: string; + + /** + * The short label of an edition route. + */ + short: string; + + /** + * The full label of an edition route. + */ + full: string; +} + +/** + * The EditionConstants class. + * + * It is used in the context of the edition view + * to store string constants of the editions. + */ +export class EditionConstants { + /** + * The edition route for the edition. + */ + static readonly edition: EditionRoute = { + route: '/edition', + short: 'AWG', + full: 'Anton Webern Gesamtausgabe' + }; + + /** + * The edition route for a composition. + */ + static readonly composition: EditionRoute = { + route: '/composition', + short: 'Komposition', + full: 'Komposition' + }; + + /** + * The edition route for series I. + */ + static readonly series1: EditionRoute = { + route: '/series1', + short: 'Serie I', + full: 'Serie I (Werke mit Opuszahlen)' + }; + + /** + * The edition route for series II. + */ + static readonly series2: EditionRoute = { + route: '/series2', + short: 'Serie II', + full: 'Serie II (Nachgelassene Kompositionen und Fragmente)' + }; + + /** + * The edition route for series III. + */ + static readonly series3: EditionRoute = { + route: '/series3', + short: 'Serie III', + full: 'Serie III (Bearbeitungen von Werken anderer Komponisten)' + }; + + /** + * The edition route for section 1. + */ + static readonly section1: EditionRoute = { + route: '/section1', + short: 'Abteilung 1', + full: 'Abteilung 1 (Orchestermusik)' + }; + + /** + * The edition route for section 2. + */ + static readonly section2: EditionRoute = { + route: '/section2', + short: 'Abteilung 2', + full: 'Abteilung 2 (Kammer- und Klaviermusik)' + }; + + /** + * The edition route for section 3. + */ + static readonly section3: EditionRoute = { + route: '/section3', + short: 'Abteilung 3', + full: 'Abteilung 3 (Chormusik)' + }; + + /** + * The edition route for section 4. + */ + static readonly section4: EditionRoute = { + route: '/section4', + short: 'Abteilung 4', + full: 'Abteilung 4 (Vokalmusik mit Ensemblebegleitung)' + }; + + /** + * The edition route for section 5. + */ + static readonly section5 = { + route: '/section5', + short: 'Abteilung 5', + full: 'Abteilung 5 (Klavierlieder)' + }; + + /** + * The edition route for a text edition. + */ + static readonly textEdition: EditionRoute = { + route: '/texts', + short: 'Textedition', + full: 'Textedition' + }; + + /** + * The edition route for a sketch edition. + */ + static readonly sketchEdition: EditionRoute = { + route: '/sketches', + short: 'Skizzenedition', + full: 'Skizzenedition' + }; + + /** + * The edition route for the graph section of an edition. + */ + static readonly editionGraph: EditionRoute = { + route: 'graph', + short: 'Graph', + full: 'Graph' + }; + + /** + * The edition route for the intro section of an edition. + */ + static readonly editionIntro: EditionRoute = { + route: 'intro', + short: 'Einleitung', + full: 'Einleitung' + }; + + /** + * The edition route for the detail section of an edition. + */ + static readonly editionDetail: EditionRoute = { + route: 'detail', + short: 'Edierter Notentext', + full: 'Edierter Notentext' + }; + + /** + * The edition route for the report section of an edition. + */ + static readonly editionReport: EditionRoute = { + route: 'report', + short: 'Kritischer Bericht', + full: 'Kritischer Bericht' + }; + + /** + * ASSETS + */ + + /** + * The paths to the edition assets JSON files. + */ + static readonly editionAssets = { + baseRoute: 'assets/data/edition', + folioConvoluteFile: 'folio-convolute.json', + graphFile: 'graph.json', + introFile: 'intro.json', + svgSheetsFile: 'svg-sheets.json', + sourceListFile: 'source-list.json', + sourceDescriptionListFile: 'source-description.json', + sourceEvaluationListFile: 'source-evaluation.json', + textcriticsFile: 'textcritics.json' + }; + + /** + * The path to the assets image of a firm sign: JE No. 9, 28 Lines. + */ + static readonly firmJENo9Lin28: EditionRoute = { + route: 'assets/img/edition/series1/section5/op12/firm_je_no9_lin28.png', + short: '[JE] | No. 9 | 28 linig.', + full: + 'J. E. & Co. [diagonal ansteigend auf schildförmiger Papierrolle, rechts von einem Löwen gehalten, links und unten Blattgirlande] | No. 9 | 28 linig.' + }; + + /** + * The edition route to the assets image of a firm sign: JE No. 15, 16 Lines. + */ + static readonly firmJENo15Lin16: EditionRoute = { + route: 'assets/img/edition/series1/section5/op25/firm_je_no15_lin16.png', + short: '[JE] | No. 15 | 16 linig.', + full: + 'J. E. & Co. [diagonal ansteigend auf schildförmiger Papierrolle, rechts von einem Löwen gehalten, links und unten Blattgirlande] | No. 15 | 16 linig.' + }; + + /** + * The path to the assets image of the graph for op 25. + */ + static readonly graphImageOp25: EditionRoute = { + route: 'assets/img/edition/series1/section5/op25/graph_op25_1.png', + short: 'Graph op. 25/I', + full: 'Graph der Skizzen von Opus 25/I.' + }; +} diff --git a/src/app/views/edition-view/models/edition-svg-overlay.ts b/src/app/views/edition-view/models/edition-svg-overlay.model.ts similarity index 100% rename from src/app/views/edition-view/models/edition-svg-overlay.ts rename to src/app/views/edition-view/models/edition-svg-overlay.model.ts diff --git a/src/app/views/edition-view/models/edition-svg-sheet.model.ts b/src/app/views/edition-view/models/edition-svg-sheet.model.ts index c731fbf0ba..559ec70898 100644 --- a/src/app/views/edition-view/models/edition-svg-sheet.model.ts +++ b/src/app/views/edition-view/models/edition-svg-sheet.model.ts @@ -1,8 +1,10 @@ +import { Source } from '@awg-views/edition-view/models/source-list.model'; + /** * The EditionSvgSheet class. * * It is used in the context of the edition view - * to store the data of a svg sheet + * to store the data for a single svg sheet * from a svg sheet json file. */ export class EditionSvgSheet { @@ -26,3 +28,17 @@ export class EditionSvgSheet { */ alt: string; } + +/** + * The EditionSvgSheetList class. + * + * It is used in the context of the edition view + * to store the data for a svg sheet list + * from a svg sheet json file. + */ +export class EditionSvgSheetList { + /** + * The array of sheets from a svg sheet list. + */ + sheets: EditionSvgSheet[]; +} diff --git a/src/app/views/edition-view/models/edition-work.model.ts b/src/app/views/edition-view/models/edition-work.model.ts new file mode 100644 index 0000000000..122117ce16 --- /dev/null +++ b/src/app/views/edition-view/models/edition-work.model.ts @@ -0,0 +1,103 @@ +import { EditionConstants, EditionRoute } from './edition-constants'; + +/** + * The EditionWork class. + * + * It is used in the context of the edition view + * to store information about the url path of an edition. + */ +export class EditionWork { + /** + * The edition route for edition. + */ + edition: EditionRoute = EditionConstants.edition; + + /** + * The edition route for series. + */ + series: EditionRoute; + + /** + * The edition route for section. + */ + section: EditionRoute; + + /** + * The edition route for composition. + */ + composition: EditionRoute = EditionConstants.composition; + + /** + * The edition route for the current work. + */ + work: EditionRoute; + + /** + * The edition route for the type of an edition. + */ + type: EditionRoute; + + /** + * The route to the graph section of an edition. + */ + graphRoute: string = EditionConstants.editionGraph.route; + + /** + * The route to the intro section of an edition. + */ + introRoute: string = EditionConstants.editionIntro.route; + + /** + * The route to the detail section of an edition. + */ + detailRoute: string = EditionConstants.editionDetail.route; + + /** + * The route to the report section of an edition. + */ + reportRoute: string = EditionConstants.editionReport.route; + + /** + * The base route of a work. + * + * @example 'edition/{series/1/section/5/}composition/op12 + * TODO: Parts in {} muted at the moment. + */ + baseRoute: string; + + /** + * Constructor of the EditionWork class. + * + * It initializes the class with a composition Object from the EditionConstants. + * + * @param {EditionRoute} workRoute The given EditionRoute for the composition. + * @param {EditionRoute} seriesRoute The given EditionRoute for the series. + * @param {EditionRoute} sectionRoute The given EditionRoute for the section. + * @param {EditionRoute} typeRoute The given EditionRoute for the edition type. + */ + constructor( + workRoute: EditionRoute, + seriesRoute?: EditionRoute, + sectionRoute?: EditionRoute, + typeRoute?: EditionRoute + ) { + if (!workRoute) { + return; + } + + // set dynamic routes + const delimiter = '/'; + this.series = seriesRoute ? seriesRoute : new EditionRoute(); // EditionConstants.series1.path; + this.section = sectionRoute ? sectionRoute : new EditionRoute(); // EditionConstants.section1.path; + this.work = workRoute ? workRoute : new EditionRoute(); + this.type = typeRoute ? typeRoute : new EditionRoute(); // EditionConstants.textEdition.path; + + let rootPath = this.edition.route; // '/edition' + // rootPath += this.series.route; // '/series' + // rootPath += this.section.route; // '/section' + rootPath += this.composition.route; // '/composition' + // rootPath += this.type.route; // '/sketches' or // '/texts' + + this.baseRoute = rootPath + this.work.route + delimiter; + } +} diff --git a/src/app/views/edition-view/models/edition-works.ts b/src/app/views/edition-view/models/edition-works.ts new file mode 100644 index 0000000000..cafcf880bf --- /dev/null +++ b/src/app/views/edition-view/models/edition-works.ts @@ -0,0 +1,36 @@ +import { EditionConstants } from './edition-constants'; +import { EditionWork } from './edition-work.model'; + +/** + * The EditionWorksModel class. + * + * It is used in the context of the edition view + * to store work information of the editions. + */ +export class EditionWorks { + /** + * An EditionWork object for a composition: op. 12. + */ + static readonly op12: EditionWork = new EditionWork( + { + route: '/op12', + short: 'op. 12', + full: 'Vier Lieder op. 12' + }, + EditionConstants.series1, + EditionConstants.section5 + ); + + /** + * An EditionWork object for a composition: op. 25. + */ + static readonly op25: EditionWork = new EditionWork( + { + route: '/op25', + short: 'op. 25', + full: 'Drei Lieder nach Gedichten von Hildegard Jone op. 25' + }, + EditionConstants.series1, + EditionConstants.section5 + ); +} diff --git a/src/app/views/edition-view/models/folio.model.ts b/src/app/views/edition-view/models/folio.model.ts index e487e0927f..d55b754714 100644 --- a/src/app/views/edition-view/models/folio.model.ts +++ b/src/app/views/edition-view/models/folio.model.ts @@ -1,8 +1,46 @@ +/** + * The FolioConvoluteList class. + * + * It is used in the context of the edition convolutes + * to store the data for a convolute list + * from a convolute json file. + */ +export class FolioConvoluteList { + /** + * The array of FolioLists from a convolute list. + */ + convolutes: FolioConvolute[]; +} + +/** + * The FolioConvolute class. + * + * It is used in the context of the edition convolutes + * to store the data for a single convolute + * from a convolute json file. + */ +export class FolioConvolute { + /** + * The convolute's id (string). + */ + convoluteId: string; + + /** + * The array of folios from a convolute. + */ + folios: Folio[]; + + /** + * The link to a convolute description in the critical report. + */ + linkTo?: string; +} + /** * The Folio class. * * It is used in the context of the edition folio convolutes - * to store the top level data for a folio + * to store the top level data for a single folio * from a folio json file. */ export class Folio { diff --git a/src/app/views/edition-view/models/graph.model.ts b/src/app/views/edition-view/models/graph.model.ts new file mode 100644 index 0000000000..cccf09b4f1 --- /dev/null +++ b/src/app/views/edition-view/models/graph.model.ts @@ -0,0 +1,53 @@ +/** + * The Graph class. + * + * It is used in the context of the edition view + * to store the data for a single graph + * from a graph json file. + */ +export class Graph { + /** + * The id of a graph. + */ + id: string; + + /** + * The title of a graph. + */ + title: string; + + /** + * The description of a graph + * with additional information. + */ + description: string[]; + + /** + * The preset query for a graph. + */ + query: string; + + /** + * The preset triples for a graph. + */ + triples: string; + + /** + * A staticImage of a graph. + */ + staticImage: string; +} + +/** + * The GraphList class. + * + * It is used in the context of the edition view + * to store the data for a graph list + * from a graph json file. + */ +export class GraphList { + /** + * The array of graphs from a graph list. + */ + graph: Graph[]; +} diff --git a/src/app/views/edition-view/models/index.ts b/src/app/views/edition-view/models/index.ts index e2e3c346eb..ed98cf67df 100644 --- a/src/app/views/edition-view/models/index.ts +++ b/src/app/views/edition-view/models/index.ts @@ -7,32 +7,59 @@ * */ -import { Folio, FolioFormat, FolioContent, FolioSection } from './folio.model'; +import { EditionConstants } from './edition-constants'; + +import { EditionSvgOverlay, EditionSvgOverlayTypes } from './edition-svg-overlay.model'; +import { EditionSvgSheet, EditionSvgSheetList } from './edition-svg-sheet.model'; + +import { EditionWork } from './edition-work.model'; +import { EditionWorks } from './edition-works'; + +import { FolioConvoluteList, FolioConvolute, Folio, FolioFormat, FolioContent, FolioSection } from './folio.model'; import { FolioCalculation, FolioCalculationLine, FolioCalculationPoint } from './folio-calculation.model'; import { FolioSettings } from './folio-settings.model'; import { FolioSvgData } from './folio-svg-data.model'; -import { EditionSvgSheet } from './edition-svg-sheet.model'; -import { EditionSvgOverlay } from './edition-svg-overlay'; +import { Graph, GraphList } from './graph.model'; +import { Intro, IntroList } from './intro.model'; -import { Source, SourceList } from './source.model'; -import { Textcritics, TextcriticsList } from './textcritics.model'; +import { Source, SourceList } from './source-list.model'; +import { SourceDescription, SourceDescriptionList } from './source-description.model'; +import { SourceEvaluation, SourceEvaluationList } from './source-evaluation.model'; + +import { TextcriticalComment, Textcritics, TextcriticsList } from './textcritics.model'; import { ViewBox } from './view-box.model'; export { + EditionConstants, + EditionWork, + EditionSvgOverlay, + EditionSvgOverlayTypes, + EditionSvgSheet, + EditionSvgSheetList, + EditionWorks, + FolioConvoluteList, + FolioConvolute, Folio, FolioFormat, FolioContent, FolioSection, - FolioSvgData, - EditionSvgSheet, - EditionSvgOverlay, FolioCalculation, FolioCalculationLine, FolioCalculationPoint, FolioSettings, + FolioSvgData, + Graph, + GraphList, + Intro, + IntroList, Source, SourceList, + SourceDescription, + SourceDescriptionList, + SourceEvaluation, + SourceEvaluationList, + TextcriticalComment, Textcritics, TextcriticsList, ViewBox diff --git a/src/app/views/edition-view/models/intro.model.ts b/src/app/views/edition-view/models/intro.model.ts new file mode 100644 index 0000000000..12e53467ff --- /dev/null +++ b/src/app/views/edition-view/models/intro.model.ts @@ -0,0 +1,32 @@ +/** + * The Intro class. + * + * It is used in the context of the edition view + * to store the data for a single intro + * from a intro json file. + */ +export class Intro { + /** + * The id of an intro. + */ + id: string; + + /** + * The content array of an intro. + */ + content: string[]; +} + +/** + * The IntroList class. + * + * It is used in the context of the edition view + * to store the data for a intro list + * from a intro json file. + */ +export class IntroList { + /** + * The array of intros from a intro list. + */ + intro: Intro[]; +} diff --git a/src/app/views/edition-view/models/source-description.model.ts b/src/app/views/edition-view/models/source-description.model.ts new file mode 100644 index 0000000000..23abc34807 --- /dev/null +++ b/src/app/views/edition-view/models/source-description.model.ts @@ -0,0 +1,42 @@ +/** + * The SourceDescription class. + * + * It is used in the context of the edition view + * to store the data for a single source description + * from a source description json file. + */ +export class SourceDescription { + /** + * The id of a sourceDescription. + */ + id: string; + + /** + * The siglum of a sourceDescription. + */ + siglum: string; + + /** + * The physical location of a source. + */ + location: string; + + /** + * The description of a sourceDescription. + */ + description: string[]; +} + +/** + * The SourceDescriptionList class. + * + * It is used in the context of the edition view + * to store the data for a source description list + * from a source description json file. + */ +export class SourceDescriptionList { + /** + * The array of sources from a source description list. + */ + sources: SourceDescription[]; +} diff --git a/src/app/views/edition-view/models/source-evaluation.model.ts b/src/app/views/edition-view/models/source-evaluation.model.ts new file mode 100644 index 0000000000..ad5b48b831 --- /dev/null +++ b/src/app/views/edition-view/models/source-evaluation.model.ts @@ -0,0 +1,32 @@ +/** + * The SourceEvaluation class. + * + * It is used in the context of the edition view + * to store the data for a single source evaluation + * from a source evaluation json file. + */ +export class SourceEvaluation { + /** + * The id of a sourceEvaluation. + */ + id: string; + + /** + * The content array of a sourceEvaluation. + */ + content: string[]; +} + +/** + * The SourceEvaluationList class. + * + * It is used in the context of the edition view + * to store the data for a source evaluation list + * from a source evaluation json file. + */ +export class SourceEvaluationList { + /** + * The array of sources from a source evaluation list. + */ + sources: SourceEvaluation[]; +} diff --git a/src/app/views/edition-view/models/source.model.ts b/src/app/views/edition-view/models/source-list.model.ts similarity index 100% rename from src/app/views/edition-view/models/source.model.ts rename to src/app/views/edition-view/models/source-list.model.ts diff --git a/src/app/views/edition-view/models/textcritics.model.ts b/src/app/views/edition-view/models/textcritics.model.ts index 52e1be7167..202b1c4129 100644 --- a/src/app/views/edition-view/models/textcritics.model.ts +++ b/src/app/views/edition-view/models/textcritics.model.ts @@ -1,11 +1,11 @@ /** - * The Textcritics class. + * The TextcriticalComment class. * * It is used in the context of the edition view * to store the data for a single textcritical comment * from a textcritics json file. */ -export class Textcritics { +export class TextcriticalComment { /** * The measure that the textcritical comment is addressing. */ @@ -27,6 +27,30 @@ export class Textcritics { comment: string; } +/** + * The Textcritics class. + * + * It is used in the context of the edition view + * to store the data for a single textcritical comment + * from a textcritics json file. + */ +export class Textcritics { + /** + * The id of the textcritics. + */ + id: string; + + /** + * The description of the textcritics. + */ + description: string; + + /** + * The array of textcritical comments from a textcritics list. + */ + comments: TextcriticalComment[]; +} + /** * The TextcriticsList class. * @@ -36,7 +60,7 @@ export class Textcritics { */ export class TextcriticsList { /** - * The array of textcritical comments from a textcritics list. + * The array of textcritics from a textcritics list. */ - [key: string]: Textcritics[]; + textcritics: Textcritics[]; } diff --git a/src/app/views/edition-view/services/edition-data.service.spec.ts b/src/app/views/edition-view/services/edition-data.service.spec.ts index 2b3d00c916..bffa0d145f 100644 --- a/src/app/views/edition-view/services/edition-data.service.spec.ts +++ b/src/app/views/edition-view/services/edition-data.service.spec.ts @@ -3,12 +3,18 @@ import { HttpClientTestingModule, HttpTestingController } from '@angular/common/ import { HttpClient, HttpClientModule, HttpErrorResponse, HttpRequest } from '@angular/common/http'; import { Data } from '@angular/router'; -import { forkJoin, Observable, of } from 'rxjs'; - -import { Folio, EditionSvgSheet, SourceList, TextcriticsList, Source } from '@awg-views/edition-view/models'; +import { + EditionConstants, + EditionWorks, + EditionWork, + SourceList, + SourceDescriptionList, + SourceEvaluationList, + TextcriticsList, + Source +} from '@awg-views/edition-view/models'; import { EditionDataService } from './edition-data.service'; -import { ApiServiceError } from '@awg-core/services/api-service/api-service-error.model'; describe('EditionDataService', () => { let editionDataService: EditionDataService; @@ -16,12 +22,16 @@ describe('EditionDataService', () => { let httpClient: HttpClient; let httpTestingController: HttpTestingController; - const BASE = 'assets/data'; - const regexBase = new RegExp(BASE); - const folioFilePath = `${BASE}/folio.json`; - const sheetsFilePath = `${BASE}/svg-sheets.json`; - const sourcelistFilePath = `${BASE}/sourcelist.json`; - const textcriticsFilePath = `${BASE}/textcritics.json`; + let expectedEditionWork: EditionWork; + + const expectedBASE = `${EditionConstants.editionAssets.baseRoute}/series1/section5/op12`; // TODO: generate from EditionWorks + const regexBase = new RegExp(expectedBASE); + const expectedFolioConvoluteFilePath = `${expectedBASE}/${EditionConstants.editionAssets.folioConvoluteFile}`; + const expectedSheetsFilePath = `${expectedBASE}/${EditionConstants.editionAssets.svgSheetsFile}`; + const expectedSourceListFilePath = `${expectedBASE}/${EditionConstants.editionAssets.sourceListFile}`; + const expectedSourceDescriptionFilePath = `${expectedBASE}/${EditionConstants.editionAssets.sourceDescriptionListFile}`; + const expectedSourceEvaluationFilePath = `${expectedBASE}/${EditionConstants.editionAssets.sourceEvaluationListFile}`; + const expectedTextcriticsFilePath = `${expectedBASE}/${EditionConstants.editionAssets.textcriticsFile}`; beforeEach(() => { TestBed.configureTestingModule({ @@ -32,6 +42,9 @@ describe('EditionDataService', () => { editionDataService = TestBed.get(EditionDataService); httpClient = TestBed.get(HttpClient); httpTestingController = TestBed.get(HttpTestingController); + + // data + expectedEditionWork = EditionWorks.op12; }); // after every test, assert that there are no more pending requests @@ -68,7 +81,7 @@ describe('EditionDataService', () => { describe('request', () => { it(`... should perform an HTTP GET request to convolute, sheets & textcritics file`, async(() => { // call service function - editionDataService.getEditionDetailData().subscribe(); + editionDataService.getEditionDetailData(expectedEditionWork).subscribe(); // expect one request to to every file with given settings const call = httpTestingController.match((req: HttpRequest) => { @@ -82,58 +95,70 @@ describe('EditionDataService', () => { expect(call[0].request.responseType).toBe('json', 'should be json'); expect(call[1].request.responseType).toBe('json', 'should be json'); expect(call[2].request.responseType).toBe('json', 'should be json'); - expect(call[0].request.url).toBe(folioFilePath, `should be ${folioFilePath}`); - expect(call[1].request.url).toBe(sheetsFilePath, `should be ${sheetsFilePath}`); - expect(call[2].request.url).toBe(textcriticsFilePath, `should be ${textcriticsFilePath}`); + expect(call[0].request.url).toBe( + expectedFolioConvoluteFilePath, + `should be ${expectedFolioConvoluteFilePath}` + ); + expect(call[1].request.url).toBe(expectedSheetsFilePath, `should be ${expectedSheetsFilePath}`); + expect(call[2].request.url).toBe( + expectedTextcriticsFilePath, + `should be ${expectedTextcriticsFilePath}` + ); })); }); }); describe('#getEditionReportData', () => { describe('request', () => { - it(`... should perform an HTTP GET request to sourcelist & textcritics file`, async(() => { + it(`... should perform an HTTP GET request to sourceList, sourceDescription, sourceEvaluation & textcritics file`, async(() => { // call service function - editionDataService.getEditionReportData().subscribe(); + editionDataService.getEditionReportData(expectedEditionWork).subscribe(); // expect one request to to every file with given settings const call = httpTestingController.match((req: HttpRequest) => { return req.method === 'GET' && req.responseType === 'json' && regexBase.test(req.url); }); - expect(call.length).toBe(2); + expect(call.length).toEqual(4); expect(call[0].request.method).toBe('GET', 'should be GET'); expect(call[1].request.method).toBe('GET', 'should be GET'); + expect(call[2].request.method).toBe('GET', 'should be GET'); + expect(call[3].request.method).toBe('GET', 'should be GET'); expect(call[0].request.responseType).toBe('json', 'should be json'); expect(call[1].request.responseType).toBe('json', 'should be json'); - expect(call[0].request.url).toBe(sourcelistFilePath, `should be ${sourcelistFilePath}`); - expect(call[1].request.url).toBe(textcriticsFilePath, `should be ${textcriticsFilePath}`); + expect(call[2].request.responseType).toBe('json', 'should be json'); + expect(call[3].request.responseType).toBe('json', 'should be json'); + expect(call[0].request.url).toBe(expectedSourceListFilePath, `should be ${expectedSourceListFilePath}`); + expect(call[1].request.url).toBe( + expectedSourceDescriptionFilePath, + `should be ${expectedSourceDescriptionFilePath}` + ); + expect(call[2].request.url).toBe( + expectedSourceEvaluationFilePath, + `should be ${expectedSourceEvaluationFilePath}` + ); + expect(call[3].request.url).toBe( + expectedTextcriticsFilePath, + `should be ${expectedTextcriticsFilePath}` + ); })); }); describe('response', () => { describe('success', () => { - it(`... should return a forkJoined Observable`, async(() => { - const expectedResult = [new SourceList(), new TextcriticsList()]; - expectedResult[0].sources = []; - expectedResult[0].sources[0] = { - siglum: 'A', - type: 'Autograph', - location: 'CH-Bps', - linkTo: 'Textlink' - }; - expectedResult[1]['test'] = []; - expectedResult[1]['test'][0] = { - measure: '1', - system: '1', - position: '1. Note', - comment: 'Fehler' - }; + it('... should return a forkJoined Observable(SourceList, SourceDescriptionList, SourceEvaluationList, TextcriticsList)', async(() => { + const expectedResult = [ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]; // call service function (success) - editionDataService.getEditionReportData().subscribe(res => { + editionDataService.getEditionReportData(expectedEditionWork).subscribe(res => { expect(res).toBeTruthy(); - expect(res.length).toBe(2); - expect(res).toEqual(expectedResult); + expect(res.length).toEqual(expectedResult.length, `should be ${expectedResult.length}`); + expect(res).toEqual(expectedResult, `should be ${expectedResult}`); }); // expect one request to to every file with given settings @@ -141,29 +166,56 @@ describe('EditionDataService', () => { return req.method === 'GET' && req.responseType === 'json' && regexBase.test(req.url); }); - expect(call.length).toBe(2); + expect(call.length).toEqual(expectedResult.length); expect(call[0].request.method).toBe('GET', 'should be GET'); expect(call[1].request.method).toBe('GET', 'should be GET'); + expect(call[2].request.method).toBe('GET', 'should be GET'); + expect(call[3].request.method).toBe('GET', 'should be GET'); expect(call[0].request.responseType).toBe('json', 'should be json'); expect(call[1].request.responseType).toBe('json', 'should be json'); - expect(call[0].request.url).toBe(sourcelistFilePath, `should be ${sourcelistFilePath}`); - expect(call[1].request.url).toBe(textcriticsFilePath, `should be ${textcriticsFilePath}`); + expect(call[2].request.responseType).toBe('json', 'should be json'); + expect(call[3].request.responseType).toBe('json', 'should be json'); + expect(call[0].request.url).toBe( + expectedSourceListFilePath, + `should be ${expectedSourceListFilePath}` + ); + expect(call[1].request.url).toBe( + expectedSourceDescriptionFilePath, + `should be ${expectedSourceDescriptionFilePath}` + ); + expect(call[2].request.url).toBe( + expectedSourceEvaluationFilePath, + `should be ${expectedSourceEvaluationFilePath}` + ); + expect(call[3].request.url).toBe( + expectedTextcriticsFilePath, + `should be ${expectedTextcriticsFilePath}` + ); // mock input from HTTP request call[0].flush(expectedResult[0]); call[1].flush(expectedResult[1]); + call[2].flush(expectedResult[2]); + call[3].flush(expectedResult[3]); })); }); describe('fail', () => { - it(`... should return [[], []] if sourcelist & textcritics request failed`, async(() => { - const expectedResult = [new SourceList(), new TextcriticsList()]; + it(`... should return [[], [], [], []] if all requests failed`, async(() => { + const expectedResult = [ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]; // call service function (success) - editionDataService.getEditionReportData().subscribe((res: any) => { + editionDataService.getEditionReportData(expectedEditionWork).subscribe((res: any) => { expect(res.length).toBe(expectedResult.length, `should be ${expectedResult.length}`); expect(res[0]).toEqual([], `should be empty array`); expect(res[1]).toEqual([], `should be empty array`); + expect(res[2]).toEqual([], `should be empty array`); + expect(res[3]).toEqual([], `should be empty array`); }); // expect one request to to every file with given settings @@ -172,17 +224,26 @@ describe('EditionDataService', () => { }); call[0].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_SOURCELIST' })); - call[1].error(new ErrorEvent('ERROR_LOADING_TEXTCRITICS')); + call[1].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_SOURCELISTDESCRIPTION' })); + call[2].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_SOURCELISTEVALUATION' })); + call[3].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_TEXTCRITICS' })); })); - it(`... should return [sourcelist, []] if textcritics request failed`, async(() => { - const expectedResult = [new SourceList(), new TextcriticsList()]; + it(`... should return [sourceList, [], [], []] if all but sourceList requests failed`, async(() => { + const expectedResult = [ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]; // call service function (success) - editionDataService.getEditionReportData().subscribe((res: any) => { + editionDataService.getEditionReportData(expectedEditionWork).subscribe((res: any) => { expect(res.length).toBe(expectedResult.length, `should be ${expectedResult.length}`); expect(res[0]).toBe(expectedResult[0], `should be ${expectedResult[0]}`); expect(res[1]).toEqual([], `should be empty array`); + expect(res[2]).toEqual([], `should be empty array`); + expect(res[3]).toEqual([], `should be empty array`); }); // expect one request to to every file with given settings @@ -191,17 +252,26 @@ describe('EditionDataService', () => { }); call[0].flush(expectedResult[0]); - call[1].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_TEXTCRITICS' })); + call[1].error(new ErrorEvent('ERROR_LOADING_SOURCELISTDESCRIPTION')); + call[2].error(new ErrorEvent('ERROR_LOADING_SOURCELISTEVALUATION')); + call[3].error(new ErrorEvent('ERROR_LOADING_TEXTCRITICS')); })); - it(`... should return [[], textcritics] if sourcelist request failed`, async(() => { - const expectedResult = [new SourceList(), new TextcriticsList()]; + it(`... should return [sourcelist, SourceDescriptionList, SourceEvaluationList, []] if textcritics request failed`, async(() => { + const expectedResult = [ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]; // call service function (success) - editionDataService.getEditionReportData().subscribe((res: any) => { + editionDataService.getEditionReportData(expectedEditionWork).subscribe((res: any) => { expect(res.length).toBe(expectedResult.length, `should be ${expectedResult.length}`); - expect(res[0]).toEqual([], `should be empty array`); + expect(res[0]).toBe(expectedResult[0], `should be ${expectedResult[0]}`); expect(res[1]).toBe(expectedResult[1], `should be ${expectedResult[1]}`); + expect(res[2]).toBe(expectedResult[2], `should be ${expectedResult[2]}`); + expect(res[3]).toEqual([], `should be empty array`); }); // expect one request to to every file with given settings @@ -209,8 +279,66 @@ describe('EditionDataService', () => { return req.method === 'GET' && req.responseType === 'json' && regexBase.test(req.url); }); + call[0].flush(expectedResult[0]); call[1].flush(expectedResult[1]); + call[2].flush(expectedResult[2]); + call[3].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_TEXTCRITICS' })); + })); + + it(`... should return [sourceList, [], [], textcritics] if middle requests failed`, async(() => { + const expectedResult = [ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]; + + // call service function (success) + editionDataService.getEditionReportData(expectedEditionWork).subscribe((res: any) => { + expect(res.length).toEqual(expectedResult.length, `should be ${expectedResult.length}`); + expect(res[0]).toBe(expectedResult[0], `should be ${expectedResult[0]}`); + expect(res[1]).toEqual([], `should be empty array`); + expect(res[2]).toEqual([], `should be empty array`); + expect(res[3]).toBe(expectedResult[3], `should be ${expectedResult[3]}`); + }); + + // expect one request to to every file with given settings + const call = httpTestingController.match((req: HttpRequest) => { + return req.method === 'GET' && req.responseType === 'json' && regexBase.test(req.url); + }); + + call[0].flush(expectedResult[0]); + call[1].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_SOURCEDESCRIPTIONLIST' })); + call[2].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_SOURCEEVALUATIONLIST' })); + call[3].flush(expectedResult[3]); + })); + + it(`... should return [[], descriptionList, evaluationList, textcritics] if sourcelist request failed`, async(() => { + const expectedResult = [ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]; + + // call service function (success) + editionDataService.getEditionReportData(expectedEditionWork).subscribe((res: any) => { + expect(res.length).toEqual(expectedResult.length, `should be ${expectedResult.length}`); + expect(res[0]).toEqual([], `should be empty array`); + expect(res[1]).toBe(expectedResult[1], `should be ${expectedResult[1]}`); + expect(res[2]).toBe(expectedResult[2], `should be ${expectedResult[2]}`); + expect(res[3]).toBe(expectedResult[3], `should be ${expectedResult[3]}`); + }); + + // expect one request to to every file with given settings + const call = httpTestingController.match((req: HttpRequest) => { + return req.method === 'GET' && req.responseType === 'json' && regexBase.test(req.url); + }); + call[0].error(null, new HttpErrorResponse({ error: 'ERROR_LOADING_SOURCELIST' })); + call[1].flush(expectedResult[1]); + call[2].flush(expectedResult[2]); + call[3].flush(expectedResult[3]); })); }); }); diff --git a/src/app/views/edition-view/services/edition-data.service.ts b/src/app/views/edition-view/services/edition-data.service.ts index 5c71a05092..fd8e53dca3 100644 --- a/src/app/views/edition-view/services/edition-data.service.ts +++ b/src/app/views/edition-view/services/edition-data.service.ts @@ -4,7 +4,18 @@ import { HttpClient } from '@angular/common/http'; import { forkJoin as observableForkJoin, Observable, of as observableOf } from 'rxjs'; import { catchError, defaultIfEmpty, take } from 'rxjs/operators'; -import { Folio, EditionSvgSheet, SourceList, TextcriticsList } from '@awg-views/edition-view/models'; +import { + EditionConstants, + EditionWork, + EditionSvgSheetList, + FolioConvoluteList, + GraphList, + IntroList, + SourceList, + SourceDescriptionList, + SourceEvaluationList, + TextcriticsList +} from '@awg-views/edition-view/models'; /** * The EditionData service. @@ -24,35 +35,7 @@ export class EditionDataService { * * It keeps the base path to the JSON files. */ - private BASE = 'assets/data'; - - /** - * Private variable: folioFile. - * - * It keeps the path to the folio JSON file. - */ - private folioFile = 'folio.json'; - - /** - * Private variable: svgSheetsFile. - * - * It keeps the path to the svgSheets JSON file. - */ - private svgSheetsFile = 'svg-sheets.json'; - - /** - * Private variable: sourcelistFile. - * - * It keeps the path to the sourcelist JSON file. - */ - private sourcelistFile = 'sourcelist.json'; - - /** - * Private variable: textcriticsFile. - * - * It keeps the path to the textcritics JSON file. - */ - private textcriticsFile = 'textcritics.json'; + private BASE = ''; /** * Constructor of the EditionDataService. @@ -68,23 +51,72 @@ export class EditionDataService { * Public method: getEditionDetailData. * * It provides the data from a JSON file - * for the edition detail view - * (folios, edition svg sheets and textcritics list) + * for the current composition of the edition detail view + * (folio convolute, edition svg sheets and textcritics list) * as a fork-joined observable array. * - * @returns {Observable<[Folio[], EditionSvgSheet[], TextcriticsList]>} - * The fork-joined observable array with the Folio, - * EditionSvgSheet and TextcriticsList data. + * @param {EditionWork} editionWork The current composition input. + * + * @returns {Observable<[FolioConvoluteList, EditionSvgSheetList, TextcriticsList]>} + * The fork-joined observable array with the FolioConvoluteList, + * EditionSvgSheetList and TextcriticsList data. * Only the first emit is needed. */ - getEditionDetailData(): Observable<[Folio[], EditionSvgSheet[], TextcriticsList]> { - const folioData$: Observable = this.getFolioData(); - const svgSheetsData$: Observable = this.getSvgSheetsData(); + getEditionDetailData( + editionWork: EditionWork + ): Observable<[FolioConvoluteList, EditionSvgSheetList, TextcriticsList]> { + this.setBasePath(editionWork); + const folioData$: Observable = this.getFolioConvoluteData(); + const svgSheetsData$: Observable = this.getSvgSheetsData(); const textciticsListData$: Observable = this.getTextcriticsListData(); return observableForkJoin([folioData$, svgSheetsData$, textciticsListData$]).pipe( // default empty value - defaultIfEmpty([[new Folio()], [new EditionSvgSheet()], new TextcriticsList()]), + defaultIfEmpty([new FolioConvoluteList(), new EditionSvgSheetList(), new TextcriticsList()]), + // take only first request (JSON fetch) + take(1) + ); + } + + /** + * Public method: getEditionGraphData. + * + * It provides the data from a JSON file + * for the graph of the edition view. + * + * @param {EditionWork} editionWork The current composition input. + * + * @returns {Observable} The observable with the GraphList data. + */ + getEditionGraphData(editionWork: EditionWork): Observable { + this.setBasePath(editionWork); + const graphData$: Observable = this.getGraphData(); + + return graphData$.pipe( + // default empty value + defaultIfEmpty(new GraphList()), + // take only first request (JSON fetch) + take(1) + ); + } + + /** + * Public method: getEditionIntroData. + * + * It provides the data from a JSON file + * for the intro of the edition view. + * + * @param {EditionWork} editionWork The current composition input. + * + * @returns {Observable} The observable with the IntroList data. + */ + getEditionIntroData(editionWork: EditionWork): Observable { + this.setBasePath(editionWork); + const introData$: Observable = this.getIntroData(); + + return introData$.pipe( + // default empty value + defaultIfEmpty(new IntroList()), // take only first request (JSON fetch) take(1) ); @@ -95,51 +127,94 @@ export class EditionDataService { * * It provides the data from a JSON file * for the edition report view - * (source list and textcritics list) + * (source list, source description list, + * source evaluation list and textcritics list) * as a fork-joined observable array. * - * @returns {Observable<[SourceList, TextcriticsList]>} - * The fork-joined observable array with the SourceList + * @returns {Observable<[SourceList, SourceDescriptionList, SourceEvaluationList, TextcriticsList]>} + * The fork-joined observable array with the SourceList, SourceDescriptionList, SourceEvaluationList, * and TextcriticsList data. Only the first emit is needed. */ - getEditionReportData(): Observable<[SourceList, TextcriticsList]> { + getEditionReportData( + editionWork: EditionWork + ): Observable<[SourceList, SourceDescriptionList, SourceEvaluationList, TextcriticsList]> { + this.setBasePath(editionWork); const sourceListData$: Observable = this.getSourceListData(); + const sourceDescriptionListData$: Observable = this.getSourceDescriptionListData(); + const sourceEvaluationListData$: Observable = this.getSourceEvaluationListData(); const textciticsListData$: Observable = this.getTextcriticsListData(); - return observableForkJoin([sourceListData$, textciticsListData$]).pipe( + return observableForkJoin([ + sourceListData$, + sourceDescriptionListData$, + sourceEvaluationListData$, + textciticsListData$ + ]).pipe( // default empty value - defaultIfEmpty([new SourceList(), new TextcriticsList()]), + defaultIfEmpty([ + new SourceList(), + new SourceDescriptionList(), + new SourceEvaluationList(), + new TextcriticsList() + ]), // take only first request (JSON fetch) take(1) ); } /** - * Private method: getFolioData. + * Private method: setBasePath. + * + * It sets the base path to correct assets folder. + * + * @returns {void} It sets the BASE path. + */ + private setBasePath(editionWork: EditionWork): void { + const workRoute = editionWork.series.route + editionWork.section.route + editionWork.work.route; + this.BASE = EditionConstants.editionAssets.baseRoute + workRoute; + } + + /** + * Private method: getFolioConvoluteData. * * It sets the path to the JSON file with - * the folio data and triggers + * the folio convolute data and triggers * the method to get the JSON data. * - * @returns {Observable} The observable with the Folio data. + * @returns {Observable} The observable with the FolioConvolute data. */ - private getFolioData(): Observable { - const file = this.folioFile; + private getFolioConvoluteData(): Observable { + const file = EditionConstants.editionAssets.folioConvoluteFile; const url = `${this.BASE}/${file}`; return this.getJsonData(url); } /** - * Private method: getSvgSheetsData. + * Private method: getGraphData. * * It sets the path to the JSON file with - * the svg sheets data and triggers + * the graph data and triggers * the method to get the JSON data. * - * @returns {Observable} The observable with the EditionSvgSheet data. + * @returns {Observable} The observable with the Graph data. */ - private getSvgSheetsData(): Observable { - const file = this.svgSheetsFile; + private getGraphData(): Observable { + const file = EditionConstants.editionAssets.graphFile; + const url = `${this.BASE}/${file}`; + return this.getJsonData(url); + } + + /** + * Private method: getIntroData. + * + * It sets the path to the JSON file with + * the intro data and triggers + * the method to get the JSON data. + * + * @returns {Observable} The observable with the Intro data. + */ + private getIntroData(): Observable { + const file = EditionConstants.editionAssets.introFile; const url = `${this.BASE}/${file}`; return this.getJsonData(url); } @@ -154,7 +229,52 @@ export class EditionDataService { * @returns {Observable} The observable with the SourceList data. */ private getSourceListData(): Observable { - const file = this.sourcelistFile; + const file = EditionConstants.editionAssets.sourceListFile; + const url = `${this.BASE}/${file}`; + return this.getJsonData(url); + } + + /** + * Private method: getSourceDescriptionListData. + * + * It sets the path to the JSON file with + * the source description list data and triggers + * the method to get the JSON data. + * + * @returns {Observable} The observable with the SourceDescriptionList data. + */ + private getSourceDescriptionListData(): Observable { + const file = EditionConstants.editionAssets.sourceDescriptionListFile; + const url = `${this.BASE}/${file}`; + return this.getJsonData(url); + } + + /** + * Private method: getSourceEvaluationListData. + * + * It sets the path to the JSON file with + * the source evaluation list data and triggers + * the method to get the JSON data. + * + * @returns {Observable} The observable with the SourceEvaluationList data. + */ + private getSourceEvaluationListData(): Observable { + const file = EditionConstants.editionAssets.sourceEvaluationListFile; + const url = `${this.BASE}/${file}`; + return this.getJsonData(url); + } + + /** + * Private method: getSvgSheetsData. + * + * It sets the path to the JSON file with + * the svg sheets data and triggers + * the method to get the JSON data. + * + * @returns {Observable} The observable with the EditionSvgSheet data. + */ + private getSvgSheetsData(): Observable { + const file = EditionConstants.editionAssets.svgSheetsFile; const url = `${this.BASE}/${file}`; return this.getJsonData(url); } @@ -169,7 +289,7 @@ export class EditionDataService { * @returns {Observable} The observable with the TextcriticsList data. */ private getTextcriticsListData(): Observable { - const file = this.textcriticsFile; + const file = EditionConstants.editionAssets.textcriticsFile; const url = `${this.BASE}/${file}`; return this.getJsonData(url); } diff --git a/src/app/views/edition-view/services/edition.service.ts b/src/app/views/edition-view/services/edition.service.ts index b496d3b5f2..76270090ad 100644 --- a/src/app/views/edition-view/services/edition.service.ts +++ b/src/app/views/edition-view/services/edition.service.ts @@ -1,12 +1,14 @@ import { Injectable } from '@angular/core'; -import { EditionSvgOverlay, Textcritics } from '@awg-views/edition-view/models'; +import { Observable, ReplaySubject } from 'rxjs'; + +import { EditionWork, EditionSvgOverlay, TextcriticalComment } from '@awg-views/edition-view/models'; /** * The Edition service. * - * It handles the provision of the textcritical comments - * for a selected overlay item. + * It handles the provision of the current work and + * of the textcritical comments for a selected overlay item. * * Provided in: `root`. * @used in the {@link EditionDetailComponent}. @@ -16,23 +18,38 @@ import { EditionSvgOverlay, Textcritics } from '@awg-views/edition-view/models'; }) export class EditionService { /** - * Private static method: filterTextcritics. + * Private variable for the replay subject´s buffer size. + */ + private bufferSize = 1; + + /** + * Private replay subject to handle edition work. + */ + private editionWorkSubject = new ReplaySubject(this.bufferSize); + + /** + * Private readonly edition work stream as observable (`ReplaySubject`). + */ + private readonly editionWorkStream$ = this.editionWorkSubject.asObservable(); + + /** + * Private static method: filterTextcriticalComments. * - * It filters a textcritics object in regard of a selected overlay item. + * It filters a textcritical comments array in regard of a selected overlay item. * - * @param {Textcritics[]} textcritics The given textcritical comments to be filtered. - * @param {{ type: string; id: string }} overlay The given selected overlay item defined by `type` and `ìd`. + * @param {TextcriticalComment} textcriticalComment The given textcritical comment to be filtered. + * @param { type: string; id: string } overlay The given selected overlay item defined by `type` and `ìd`. * @param {number} filterIndex The given index position of the filter. * @returns {boolean} A boolean value if the input contains the overlay type and id */ - private static filterTextcritics( - textcritics: Textcritics, + private static filterTextcriticalComments( + textcriticalComment: TextcriticalComment, overlay: { type: string; id: string }, filterIndex: number ): boolean { // shortcuts & trimmed values - const measure = textcritics.measure.replace('[', '').replace(']', ''); - const system = textcritics.system.replace('[', '').replace(']', ''); + const measure = textcriticalComment.measure.replace('[', '').replace(']', ''); + const system = textcriticalComment.system.replace('[', '').replace(']', ''); // filter the comments by overlay type and id switch (overlay.type) { @@ -46,19 +63,55 @@ export class EditionService { } /** - * Public method: getTextcritics. + * Public method: getEditionWork. + * + * It provides the latest edition work from the edition work stream. + * + * @returns {Observable} The edition work stream as observable. + */ + getEditionWork(): Observable { + return this.editionWorkStream$; + } + + /** + * Public method: updateEditionWork. + * + * It updates the edition work stream with the given work. + * + * @returns {void} Sets the next edition work to the stream. + */ + updateEditionWork(editionWork: EditionWork): void { + this.editionWorkSubject.next(editionWork); + } + + /** + * Public method: clearEditionWork. + * + * It clears the edition work stream. + * + * @returns {void} Clears the edition work stream. + */ + clearEditionWork(): void { + this.editionWorkSubject.next(null); + } + + /** + * Public method: getTextcriticalComments. * * It provides the textcritical comments for a selected svg overlay. * - * @param {Textcritics[]} textcritics The given textcritical comments. + * @param {TextcriticalComment[]} textcriticalComments The given textcritical comments. * @param {EditionSvgOverlay} overlay The given svg overlay. - * @returns {Textcritics[]} Array with filtered textcritical comments. + * @returns {TextcriticalComment[]} Array with filtered textcritical comments. */ - getTextcritics(textcritics: Textcritics[], overlay: EditionSvgOverlay): Textcritics[] { + getTextcriticalComments( + textcriticalComments: TextcriticalComment[], + overlay: EditionSvgOverlay + ): TextcriticalComment[] { // filter the textcritics input array - return textcritics.filter((textcritic, filterIndex) => { + return textcriticalComments.filter((textcriticalComment, filterIndex) => { // get filtered results from private method - return EditionService.filterTextcritics(textcritic, overlay, filterIndex); + return EditionService.filterTextcriticalComments(textcriticalComment, overlay, filterIndex); }); } } diff --git a/src/app/views/home-view/home-view-routing.module.ts b/src/app/views/home-view/home-view-routing.module.ts new file mode 100644 index 0000000000..a505a57917 --- /dev/null +++ b/src/app/views/home-view/home-view-routing.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { HomeViewComponent } from '@awg-views/home-view/home-view.component'; + +/* routes of the PageNotFoundViewModule */ +const homeViewRoutes: Routes = [ + { + path: '', + component: HomeViewComponent + } +]; + +/** + * Routed components of the {@link HomeViewModule}: + * {@link HomeViewComponent}. + */ +export const routedHomeViewComponents = [HomeViewComponent]; + +/** + * HomeView module routing. + * + * It activates the homeViewRoutes. + */ +@NgModule({ + imports: [RouterModule.forChild(homeViewRoutes)], + exports: [RouterModule] +}) +export class HomeViewRoutingModule {} diff --git a/src/app/views/home-view/home-view.component.html b/src/app/views/home-view/home-view.component.html index ec11865ce3..1c531520ef 100644 --- a/src/app/views/home-view/home-view.component.html +++ b/src/app/views/home-view/home-view.component.html @@ -1,16 +1,14 @@ + + +
-

Anton Webern Gesamtausgabe

-

Serie I (Werke mit Opuszahlen)

-

Abteilung 5 (Klavierlieder)

-
+
AWG / Serie I (Werke mit Opuszahlen) / Abteilung 5 (Klavierlieder)
-
-

Vier Lieder op. 12

-

Skizzen

-

[Beispieledition ausgewählter Skizzen zu op. 12 Nr. I]

+

Vier Lieder op. 12 (Skizzen)

+

Drei Lieder op. 25 (Graph)

@@ -20,7 +18,7 @@

Skizzen

prospektiven Simulation [PDF] - vom 31. März 2015): + vom 31. März 2015 sowie vom 29. Januar 2016):

Die Bestandteile der AWG-Online-Editionen werden mithilfe der @@ -40,8 +38,9 @@

Skizzen

Datenstruktur wird zur Zeit in der Webern-SALSAH-Datenbank implementiert.

- Über den Menüpunkt Beispieledition sind die Einleitung, die edierten Notentexte sowie der Kritische - Bericht zugänglich. + Über den Menüpunkt Beispieledition sind ausgewählte Skizzen zu op. 12 sowie op. 25 zugänglich. + Bestandteile der Online-Edition umfassen Einleitungen, die edierten Notentexte, kritische Berichte sowie + Graphvisualisierungen.

Zusätzlich wird eine einfache Volltextsuche in der Datenbank angeboten, über die die dort hinterlegten @@ -49,8 +48,7 @@

Skizzen

Supplements, Chronologie) abgefragt werden können.

- Der Prototyp und die Suche werden in ihrer Funktionalität sukzessiv erweitert; so werden verknüpfte Inhalte - zukünftig in eigenen, frei anzuordnenden Fenstern erscheinen. + Der Prototyp und die Suche werden in ihrer Funktionalität sukzessiv erweitert.

diff --git a/src/app/views/home-view/home-view.component.spec.ts b/src/app/views/home-view/home-view.component.spec.ts index a19f596d68..03b7ef1c1e 100644 --- a/src/app/views/home-view/home-view.component.spec.ts +++ b/src/app/views/home-view/home-view.component.spec.ts @@ -1,6 +1,6 @@ /* tslint:disable:no-unused-variable */ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DebugElement } from '@angular/core'; +import { Component, DebugElement, Input } from '@angular/core'; import { Router } from '@angular/router'; import { @@ -10,12 +10,21 @@ import { } from '@testing/expect-helper'; import { RouterLinkStubDirective } from '@testing/router-stubs'; -import { MetaEdition, MetaSectionTypes } from '@awg-core/core-models'; +import { Meta, MetaContact, MetaEdition, MetaPage, MetaSectionTypes, MetaStructure } from '@awg-core/core-models'; import { METADATA } from '@awg-core/mock-data'; import { CoreService } from '@awg-core/services'; import { HomeViewComponent } from './home-view.component'; +// mock heading component +@Component({ selector: 'awg-heading', template: '' }) +class HeadingStubComponent { + @Input() + title: string; + @Input() + id: string; +} + describe('HomeViewComponent (DONE)', () => { let component: HomeViewComponent; let fixture: ComponentFixture; @@ -31,14 +40,17 @@ describe('HomeViewComponent (DONE)', () => { beforeEach(async(() => { // stub service for test purposes - mockCoreService = { getMetaDataSection: key => METADATA[key] }; + mockCoreService = { getMetaDataSection: sectionType => METADATA[sectionType] }; // router spy object mockRouter = jasmine.createSpyObj('Router', ['navigate']); TestBed.configureTestingModule({ - declarations: [HomeViewComponent, RouterLinkStubDirective], - providers: [{ provide: CoreService, useValue: mockCoreService }, { provide: Router, useValue: mockRouter }] + declarations: [HomeViewComponent, HeadingStubComponent, RouterLinkStubDirective], + providers: [ + { provide: CoreService, useValue: mockCoreService }, + { provide: Router, useValue: mockRouter } + ] }).compileComponents(); })); @@ -65,15 +77,18 @@ describe('HomeViewComponent (DONE)', () => { it('stub service and injected coreService should not be the same', () => { const coreService = TestBed.get(CoreService); expect(mockCoreService === coreService).toBe(false); + }); - // changing the stub service has no effect on the injected service - let changedEditionMetaData = new MetaEdition(); - changedEditionMetaData = { - editors: [{ name: 'Test Editor 2', contactUrl: '' }], - lastModified: '10. Oktober 2018' + it('changing the stub service has no effect on the injected service', () => { + const coreService = TestBed.get(CoreService); + const CHANGEDMETA: Meta = { + page: new MetaPage(), + edition: new MetaEdition(), + structure: new MetaStructure(), + contact: new MetaContact() }; + mockCoreService = { getMetaDataSection: sectionType => CHANGEDMETA[sectionType] }; - mockCoreService.getMetaDataSection = () => changedEditionMetaData; expect(coreService.getMetaDataSection(MetaSectionTypes.edition)).toBe(expectedEditionMetaData); }); @@ -95,8 +110,8 @@ describe('HomeViewComponent (DONE)', () => { }); describe('VIEW', () => { - it('... should contain three `div.para` & one `div.declamation` elements', () => { - getAndExpectDebugElementByCss(compDe, 'div.para', 3, 3); + it('... should contain two `div.para` & one `div.declamation` elements', () => { + getAndExpectDebugElementByCss(compDe, 'div.para', 2, 2); getAndExpectDebugElementByCss(compDe, 'div.declamation', 1, 1); }); diff --git a/src/app/views/home-view/home-view.module.ts b/src/app/views/home-view/home-view.module.ts new file mode 100644 index 0000000000..4f0a008081 --- /dev/null +++ b/src/app/views/home-view/home-view.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '@awg-shared/shared.module'; + +/* Routing Module */ +import { HomeViewRoutingModule, routedHomeViewComponents } from './home-view-routing.module'; + +/** + * The homeView module. + * + * It embeds the {@link HomeViewComponent} and its + * [routing definition]{@link HomeViewRoutingModule} + * as well as the {@link SharedModule}. + */ +@NgModule({ + imports: [SharedModule, HomeViewRoutingModule], + declarations: [routedHomeViewComponents] +}) +export class HomeViewModule {} diff --git a/src/app/views/page-not-found-view/page-not-found-view-routing.module.ts b/src/app/views/page-not-found-view/page-not-found-view-routing.module.ts new file mode 100644 index 0000000000..58881d1ff2 --- /dev/null +++ b/src/app/views/page-not-found-view/page-not-found-view-routing.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { PageNotFoundViewComponent } from '@awg-views/page-not-found-view/page-not-found-view.component'; + +/* routes of the PageNotFoundViewModule */ +const pageNotFoundViewRoutes: Routes = [ + { + path: '', + component: PageNotFoundViewComponent + } +]; + +/** + * Routed components of the {@link PageNotFoundViewModule}: + * {@link PageNotFoundViewComponent}. + */ +export const routedPageNotFoundViewComponents = [PageNotFoundViewComponent]; + +/** + * PageNotFound module routing. + * + * It activates the pageNotFoundViewRoutes. + */ +@NgModule({ + imports: [RouterModule.forChild(pageNotFoundViewRoutes)], + exports: [RouterModule] +}) +export class PageNotFoundViewRoutingModule {} diff --git a/src/app/views/page-not-found-view/page-not-found-view.module.ts b/src/app/views/page-not-found-view/page-not-found-view.module.ts new file mode 100644 index 0000000000..7ab488cb43 --- /dev/null +++ b/src/app/views/page-not-found-view/page-not-found-view.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '@awg-shared/shared.module'; + +/* Routing Module */ +import { PageNotFoundViewRoutingModule, routedPageNotFoundViewComponents } from './page-not-found-view-routing.module'; + +/** + * The pageNotFoundView module. + * + * It embeds the {@link PageNotFoundViewComponent} and its + * [routing definition]{@link PageNotFoundViewRoutingModule} + * as well as the {@link SharedModule}. + */ +@NgModule({ + imports: [SharedModule, PageNotFoundViewRoutingModule], + declarations: [routedPageNotFoundViewComponents] +}) +export class PageNotFoundViewModule {} diff --git a/src/app/views/structure-view/structure-routing.module.ts b/src/app/views/structure-view/structure-routing.module.ts deleted file mode 100644 index 4c9174934b..0000000000 --- a/src/app/views/structure-view/structure-routing.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { StructureViewComponent } from '@awg-views/structure-view/structure-view.component'; - -/* routes of the StructureModule */ -const structureRoutes: Routes = [ - { - path: '', - component: StructureViewComponent - } -]; - -/** - * Routed components of the {@link StructureModule}: - * {@link StructureViewComponent}. - */ -export const routedStructureComponents = [StructureViewComponent]; - -/** - * Structure module routing. - * - * It activates the structureRoutes. - */ -@NgModule({ - imports: [RouterModule.forChild(structureRoutes)], - exports: [RouterModule] -}) -export class StructureRoutingModule {} diff --git a/src/app/views/structure-view/structure-view-routing.module.ts b/src/app/views/structure-view/structure-view-routing.module.ts new file mode 100644 index 0000000000..8fe8631efc --- /dev/null +++ b/src/app/views/structure-view/structure-view-routing.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { StructureViewComponent } from '@awg-views/structure-view/structure-view.component'; + +/* routes of the StructureViewModule */ +const structureViewRoutes: Routes = [ + { + path: '', + component: StructureViewComponent + } +]; + +/** + * Routed components of the {@link StructureViewModule}: + * {@link StructureViewComponent}. + */ +export const routedStructureViewComponents = [StructureViewComponent]; + +/** + * StructureView module routing. + * + * It activates the structureViewRoutes. + */ +@NgModule({ + imports: [RouterModule.forChild(structureViewRoutes)], + exports: [RouterModule] +}) +export class StructureViewRoutingModule {} diff --git a/src/app/views/structure-view/structure-view.component.html b/src/app/views/structure-view/structure-view.component.html index 61e54f4769..958f4350b0 100644 --- a/src/app/views/structure-view/structure-view.component.html +++ b/src/app/views/structure-view/structure-view.component.html @@ -1,7 +1,7 @@ - +

diff --git a/src/app/views/structure-view/structure-view.component.spec.ts b/src/app/views/structure-view/structure-view.component.spec.ts index c454f7c149..cc94539e99 100644 --- a/src/app/views/structure-view/structure-view.component.spec.ts +++ b/src/app/views/structure-view/structure-view.component.spec.ts @@ -29,7 +29,7 @@ describe('StructureViewComponent (DONE)', () => { let mockRouter; const expectedTitle = 'Datenstrukturmodell'; - const expectedId = 'structure'; + const expectedId = 'awg-structure-view'; beforeEach(async(() => { // router spy object @@ -59,11 +59,11 @@ describe('StructureViewComponent (DONE)', () => { describe('BEFORE initial data binding', () => { it('should have title and id', () => { - expect(component.structureTitle).toBeDefined(); - expect(component.structureTitle).toBe(expectedTitle); + expect(component.structureViewTitle).toBeDefined(); + expect(component.structureViewTitle).toBe(expectedTitle); - expect(component.structureId).toBeDefined(); - expect(component.structureId).toBe(expectedId); + expect(component.structureViewId).toBeDefined(); + expect(component.structureViewId).toBe(expectedId); }); describe('#routeToSidenav', () => { diff --git a/src/app/views/structure-view/structure-view.component.ts b/src/app/views/structure-view/structure-view.component.ts index c03fc7e3d8..84c2e27057 100644 --- a/src/app/views/structure-view/structure-view.component.ts +++ b/src/app/views/structure-view/structure-view.component.ts @@ -15,12 +15,12 @@ import { Router } from '@angular/router'; }) export class StructureViewComponent implements OnInit { /** - * Public variable: structureTitle. + * Public variable: structureViewTitle. * * It keeps the title for the heading component * of the structure view section. */ - structureTitle = 'Datenstrukturmodell'; + structureViewTitle = 'Datenstrukturmodell'; /** * Public variable: structureId. @@ -28,7 +28,7 @@ export class StructureViewComponent implements OnInit { * It keeps the id for the heading component * of the structure view section. */ - structureId = 'structure'; + structureViewId = 'awg-structure-view'; /** * Constructor of the StructureViewComponent. diff --git a/src/app/views/structure-view/structure-view.module.ts b/src/app/views/structure-view/structure-view.module.ts new file mode 100644 index 0000000000..dc49b59170 --- /dev/null +++ b/src/app/views/structure-view/structure-view.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '@awg-shared/shared.module'; + +/* Routing Module */ +import { StructureViewRoutingModule, routedStructureViewComponents } from './structure-view-routing.module'; + +/** + * The structureView module. + * + * It embeds the {@link StructureViewComponent} and its + * [routing definition]{@link StructureViewRoutingModule} + * as well as the {@link SharedModule}. + */ +@NgModule({ + imports: [SharedModule, StructureViewRoutingModule], + declarations: [routedStructureViewComponents] +}) +export class StructureViewModule {} diff --git a/src/app/views/structure-view/structure.module.ts b/src/app/views/structure-view/structure.module.ts deleted file mode 100644 index ee778650da..0000000000 --- a/src/app/views/structure-view/structure.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { SharedModule } from '@awg-shared/shared.module'; - -/* Routing Module */ -import { StructureRoutingModule, routedStructureComponents } from './structure-routing.module'; - -/** - * The structure module. - * - * It embeds the {@link StructureViewComponent} and its - * [routing definition]{@link StructureRoutingModule} - * as well as the {@link SharedModule}. - */ -@NgModule({ - imports: [SharedModule, StructureRoutingModule], - declarations: [routedStructureComponents] -}) -export class StructureModule {} diff --git a/src/assets/data/edition/series1/section5/op12/folio-convolute.json b/src/assets/data/edition/series1/section5/op12/folio-convolute.json new file mode 100644 index 0000000000..f71baf2fbe --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/folio-convolute.json @@ -0,0 +1,158 @@ +{ + "convolutes": [ + { + "convoluteId": "A Skizzen (Basel, Paul Sacher Stiftung)", + "folios": [ + { + "folioId": "1r", + "systems": "14", + "format": { + "height": 180, + "width": 267 + }, + "content": [ + { + "sigle": "Aa:SkI/1a", + "measure": "1–2, [3–6]", + "sectionPartition": 1, + "sections": [ + { + "startSystem": 2, + "endSystem": 4 + } + ] + }, + { + "sigle": "Aa:SkI/1a", + "measure": "[7–12]", + "sectionPartition": 1, + "sections": [ + { + "position": 1, + "startSystem": 6, + "endSystem": 9 + } + ] + }, + { + "sigle": "Aa:SkI/1a", + "measure": "[13–17]", + "sectionPartition": 1, + "sections": [ + { + "position": 1, + "startSystem": 10, + "endSystem": 14 + } + ] + } + ] + }, + { + "folioId": "1v", + "systems": "14", + "format": { + "height": 180, + "width": 267 + }, + "content": [ + { + "sigle": "Aa:SkI/4", + "measure": "10–11", + "sectionPartition": 2, + "sections": [ + { + "position": 1, + "startSystem": 4, + "endSystem": 7 + } + ] + }, + { + "sigle": "Aa:SkI/5", + "measure": "10–11", + "sectionPartition": 2, + "sections": [ + { + "position": 2, + "startSystem": 6, + "endSystem": 9 + } + ] + }, + { + "sigle": "Aa:SkI/3", + "measure": "10–11", + "sectionPartition": 2, + "sections": [ + { + "position": 1, + "startSystem": 9, + "endSystem": 12 + } + ] + }, + { + "sigle": "Aa:SkI/2", + "measure": "10, [11–12]", + "sectionPartition": 2, + "sections": [ + { + "position": 2, + "startSystem": 12, + "endSystem": 14 + } + ] + } + ] + }, + { + "folioId": "2r", + "systems": "16", + "format": { + "height": "175", + "width": "270" + }, + "content": [ + { + "sigle": "Aa:SkI/1b", + "measure": "[18–22]", + "sections": [ + { + "startSystem": 6, + "endSystem": 10 + } + ] + }, + { + "sigle": "Aa:SkI/1b", + "measure": "[23–24]", + "sectionPartition": 1, + "sections": [ + { + "position": 1, + "startSystem": 12, + "endSystem": 15 + } + ] + } + ] + }, + { + "folioId": "2v", + "systems": "16", + "format": { + "height": "175", + "width": "270" + }, + "content": [] + } + ] + }, + { + "convoluteId": "B–H (siehe Kritischer Bericht)", + "folios": [], + "linkTo": "op12_sourceNotA" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op12/graph.json b/src/assets/data/edition/series1/section5/op12/graph.json new file mode 100644 index 0000000000..0bd47e9d7f --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/graph.json @@ -0,0 +1,13 @@ +{ + "graph": [ + { + "id": "Op12", + "title": "Skizzengraph Opus 12", + "description": [ + "[Die Graph-Visualisierung der Skizzen zu Vier Lieder op. 12 erscheint im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.]" + ], + "query": "", + "triples": "" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op12/intro.json b/src/assets/data/edition/series1/section5/op12/intro.json new file mode 100644 index 0000000000..277873e640 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/intro.json @@ -0,0 +1,19 @@ +{ + "intro": [ + { + "id": "op12", + "content": [ + "[Die Einleitung zum gesamten Werkkomplex Vier Lieder op. 12 erscheint im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.]", + "Die Skizzen in A enthalten datierte Verlaufsskizzen zu allen vier Liedern: Aa:SkI/1 (13. Januar 1915), Ab:SkII/1 (10. April 1917), Ac:SkIII/1 und Ac:SkIII/7 (31. Januar 1915) sowie Ae:SkIV/1 (31. März 1917). Darüber hinaus finden sich Skizzen zu einzelnen Stellen.", + "[Die Einleitung zu Aa:Sk1/1 erscheint im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.]", + + "In Aa:SkI/2 werden T. [11]–[12] aus Aa:SkI/1 bzw. T. 10–11 aus B (Nr. I „Der Tag ist vergangen“ [Fassung 1]) neu skizziert, in Aa:SkI/3, Aa:SkI/4 und Aa:SkI/5 weiter modifiziert und zu einer Formulierung gebracht, die T. 10–11 aus C (Nr. I „Der Tag ist vergangen“ [Fassung2]) entspricht. Da T. 10–11 in B offensichtlich zunächst aus Aa:SkI/1 übernommen wurden und Korrekturen in B mit Bleistift auf die Formulierung von Aa:SkI/2 hindeuten, sind Aa:SkI/2–5 offensichtlich erst nach der Niederschrift von B und während oder nach den dort vorhandenen Korrekturen, vermutlich als Arbeitsvorlage für C entstanden.", + "Aa:SkI/2 übernimmt, wie erwähnt, bestimmte Merkmale der Korrekturen in B, die bei einem gleichbleibenden Metrum (das allerdings weder durch einen Taktstrich vor T. [12] kenntlich gemacht noch durch eine neue Taktartvorzeichnung explizit geändert wird) zu einer Erweiterung der vormals zweitaktigen zu einer dreitaktigen Figur führen. Im Klavier (System 13–12) wird die rhythmische Konstellation der Zweiklänge F/e im unteren System und es1/as1 im oberen System geändert sowie der letzte Zweiklang im unteren System aus Aa:SkI/1 bzw. B (Gis/cis) getilgt.", + "Aa:SkI/3 verkürzt die Figur wieder zu einer zweitaktigen, wobei in System 11 zunächst die Verlängerung des ersten Tons der Singstimme („e–[wig]“) wie in Aa:SkI/2 tendenziell übernommen, dann in System 12 wieder in die rhythmische Ausgangs-Konfiguration geführt wird. Die Klavierstimme (System 10–9) bringt in der letzten Korrekturschicht bereits die in Aa:SkI/5 formulierte und in C verwendete Variante.", + "Aa:SkI/4 erprobt weitere diastematische Varianten der zweitaktigen Figur der Singstimme (System 5 und 4) sowie eine rhythmische Modifizierung und Oktavierung des Zweiklangs es/as im Klavier (System 7–6).", + "Aa:SkI/5 bringt in der letzten Korrekturschicht die in C verwendete Variante.", + "[Die Einleitungen zu den weiteren Skizzen aus A erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.]" + ] + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op12/source-description.json b/src/assets/data/edition/series1/section5/op12/source-description.json new file mode 100644 index 0000000000..9df7aed8dd --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/source-description.json @@ -0,0 +1,29 @@ +{ + "sources": [ + { + "id": "sourceA", + "siglum": "A", + "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", + "description": [] + }, + { + "id": "sourceAa", + "siglum": "Aa", + "location": "", + "description": [ + "2 Blätter (Bl. 1–2). Archivalische Paginierung [1] bis [4] unten links (recto) bzw. rechts (verso) mit Bleistift. Bl. 2v mit Ausnahme der archivalischen Paginierung unbeschriftet. Rissspuren am linken und oberen Rand: Blätter von Bogen abgetrennt und im Format verändert.", + "Beschreibstoff: Notenpapier, 14 Systeme, Format: quer ca. 160–180 × 267 mm, Firmenzeichen:

auf Bl. 1r unten links (Bl. 1);
Notenpapier, 16 Systeme, Format: quer 175 × 270 mm, kein Firmenzeichen (Bl. 2).", + "Schreibstoff: Bleistift.", + "Inhalt:
Bl. 1r System 2–4 | 6–9 | 10–14: Skizze zu Nr. I T. 1–2, [3–6] | [7–12] | [13–17] (SkI/1a).
\n Bl. 1v System 14-12b (auf dem Kopf stehend): Skizze zu Nr. I T. 10, [11-12] (SkI/2).
Bl. 1v System 12a-9a (auf dem Kopf stehend): Skizze zu Nr. I T. 10-11 (SkI/3).
Bl. 1v System 9b-6 (auf dem Kopf stehend): Skizze zu Nr. I T. 10-11 (SkI/5).
Bl. 1v System 7a-4 (auf dem Kopf stehend): Skizze zu Nr. I T. 10-11 (SkI/4).
Bl. 2r System 6–10 | 12–15: Skizze zu Nr. I T. [18–22] | [23–24] (SkI/1b).
Bl. 2v unbeschriftet." + ] + }, + { + "id": "notA", + "siglum": "", + "location": "", + "description": [ + "[Die Beschreibung der weiteren Quellenbestandteile von A sowie der Quellen B bis G1 einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.]" + ] + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op12/source-evaluation.json b/src/assets/data/edition/series1/section5/op12/source-evaluation.json new file mode 100644 index 0000000000..e62b4d56a8 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/source-evaluation.json @@ -0,0 +1,17 @@ +{ + "sources": [ + { + "id": "op12", + "content": [ + "Die Skizzen in A enthalten u. a. datierte Aa:SkI/1 (13. Januar 1915), Ab:SkII/1 (10. April 1917), Ac:SkIII/1 und Ac:SkIII/7 (31. Januar 1915) sowie Ae:SkIV/1 (31. März 1917). Eine im Konvolut von A ebenfalls enthaltene fragmentarische Skizze zu einer Vertonung von Schien mir’s als ich sah die Sonne“ (M 198) für Chor und Orchester (Ad) ist (möglicherweise nachträglich) auf „Winter 1913/14“ datiert und weist – abgesehen vom vertonten Text – keine Bezüge zu op. 12 Nr. III auf.", + "Die Verlaufsskizzen aus A bilden die Grundlage für die Reinschrift-Fassungen von Nr. I „Der Tag ist vergangen“ (Fassung 1) in B sowie von Nr. II–IV in C. Die Reinschrift von Nr. I „Der Tag ist vergangen“ (Fassung 2) in C stellt eine gegenüber B veränderte, in Korrekturen in B und in Aa:SkI/2–5 vorformulierte Fassung dar. Die Korrekturen von Nr. II–IV in C betreffen die Überarbeitung zur (Druck-)Fassung in F und G, der Zustand ante correcturam ist jedoch nicht immer eindeutig zu erkennen. Nr. IV Gleich und Gleich (Fassung 1) in D ist eine autographe Abschrift des Liedes aus C ante correcturam.", + "Nr. I „Der Tag ist vergangen aus C ist post correcturam Stichvorlage für E. Die Korrekturen in E1 betreffen die Überarbeitung von Nr. I „Der Tag ist vergangen“ (Fassung 2) zur späteren (Druck-)Fassung in F und G.", + "F ist Stichvorlage für G.", + "Hauptquelle für die Werkedition der Druckfassung der Vier Lieder op. 12 ist G.", + "Hauptquelle für die Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 1) ist B.", + "Hauptquelle für die Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 2) ist E.", + "Hauptquelle für die Textedition von Nr. IV Gleich und Gleich (Fassung 1) ist D." + ] + } + ] +} diff --git a/src/assets/data/sourcelist.json b/src/assets/data/edition/series1/section5/op12/source-list.json similarity index 80% rename from src/assets/data/sourcelist.json rename to src/assets/data/edition/series1/section5/op12/source-list.json index b7ced953fe..cecd4c66f9 100644 --- a/src/assets/data/sourcelist.json +++ b/src/assets/data/edition/series1/section5/op12/source-list.json @@ -10,49 +10,49 @@ "siglum": "B", "type": "Autograph von Nr. I.", "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "C", "type": "Autograph von Nr. I–IV.", "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "D", "type": "Autograph von Nr. IV.", "location": "London, British Library, O. W. Neighbour Collection.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "E", "type": "Druck von Nr. I, in: Musikblätter des Anbruch IV (Mai 1922).", "location": "", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "E1", - "type": "Handexemplar von E.", + "type": "Handexemplar von E.", "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "F", "type": "Autograph.", "location": "New York, NY, Pierpont Morgan Library, Dept. of Music Manuscripts and Books, Robert Owen Lehman Collection, W376.L716.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "G", "type": "Druck.", "location": "Wien: Universal Edition, 1925.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" }, { "siglum": "G1", - "type": "Handexemplar von G.", + "type": "Handexemplar von G.", "location": "Washington, DC, Library of Congress, Moldenhauer Archives, Box-Folder: 59/10.", - "linkTo": "sourceNotA" + "linkTo": "op12_sourceNotA" } ] } diff --git a/src/assets/data/edition/series1/section5/op12/svg-sheets.json b/src/assets/data/edition/series1/section5/op12/svg-sheets.json new file mode 100644 index 0000000000..7c023c1164 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/svg-sheets.json @@ -0,0 +1,28 @@ +{ + "sheets": [ + { + "id": "Aa:SkI/2", + "svg": "assets/img/edition/series1/section5/op12/SkI_2n_small_cut_opt.svg", + "image": "assets/img/edition/series1/section5/op12/SkI_2_small.jpg", + "alt": "Aa:SkI/2" + }, + { + "id": "Aa:SkI/3", + "svg": "assets/img/edition/series1/section5/op12/SkI_3n_small_cut_opt.svg", + "image": "assets/img/edition/series1/section5/op12/SkI_3_small.jpg", + "alt": "Aa:SkI/3" + }, + { + "id": "Aa:SkI/4", + "svg": "assets/img/edition/series1/section5/op12/SkI_4n_small_cut_opt.svg", + "image": "assets/img/edition/series1/section5/op12/SkI_4_small.jpg", + "alt": "Aa:SkI/4" + }, + { + "id": "Aa:SkI/5", + "svg": "assets/img/edition/series1/section5/op12/SkI_5n_small_cut_opt.svg", + "image": "assets/img/edition/series1/section5/op12/SkI_5_small.jpg", + "alt": "Aa:SkI/5" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op12/textcritics.json b/src/assets/data/edition/series1/section5/op12/textcritics.json new file mode 100644 index 0000000000..0a2d4acc7f --- /dev/null +++ b/src/assets/data/edition/series1/section5/op12/textcritics.json @@ -0,0 +1,101 @@ +{ + "textcritics": [ + { + "id": "Aa:SkI/1", + "description": [ + "[Der Textkritische Kommentar zu Aa:Sk1/1 erscheint im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.]" + ], + "comments": [] + }, + { + "id": "Aa:SkI/2", + "description": [], + "comments": [ + { + "measure": "10", + "system": "12", + "position": "1. Note", + "comment": "Viertelnote überschreibt Halbe Note." + }, + { + "measure": "10", + "system": "12", + "position": "2. Note", + "comment": "♮e oder ♭es (?). (Siehe auch System 13 2/4: e1/as1 oder [♭]es1/as1?) Vorgeschlagene Entzifferung mit Blick auf eindeutig entzifferbare Akzidenzien an entsprechender Stelle in Aa:SkI/1 T. [11], Aa:SkI/3 und Aa:SkI/5 sowie in den Reinschrift- bzw. Druckfassungen aus B, C, E, F und G." + }, + { + "measure": "[11]", + "system": "14", + "position": "(1/4)", + "comment": "punktierte Achtelpause, Sechzehntelnote ♭b radiert." + }, + { + "measure": "[12]", + "system": "13", + "position": "", + "comment": "radierte, nicht entzifferbare Schicht." + } + ] + }, + { + "id": "Aa:SkI/3", + "description": [], + "comments": [ + { + "measure": "10", + "system": "9", + "position": "2/4", + "comment": "c gestrichen; ♮e oder ♭es (?)." + }, + { + "measure": "11", + "system": "10", + "position": "1.-2. Note", + "comment": "Triole aus Viertelnote und Achtelnote überschreibt zwei zusammengebalkte Achtelnoten." + }, + { + "measure": "11", + "system": "10", + "position": "nach 2/4", + "comment": "Radierspuren." + } + ] + }, + { + "id": "Aa:SkI/4", + "description": [], + "comments": [ + { + "measure": "10", + "system": "6", + "position": "", + "comment": "Achtelfähnchen gestrichen." + }, + { + "measure": "10", + "system": "5", + "position": "3. Note", + "comment": "Ansatz zu Notenkopf c2 und f1(?)." + } + ] + }, + { + "id": "Aa:SkI/5", + "description": [], + "comments": [ + { + "measure": "10", + "system": "9", + "position": "3/8", + "comment": "♭ zu ces1 überschreibt ♮ zu c1. (Oder: ♭ces1 überschreibt ♮h?)." + }, + { + "measure": "11", + "system": "9", + "position": "1/4", + "comment": "sic: Text dir (statt mir)." + } + ] + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/folio-convolute.json b/src/assets/data/edition/series1/section5/op25/folio-convolute.json new file mode 100644 index 0000000000..b8955f705a --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/folio-convolute.json @@ -0,0 +1,55 @@ +{ + "convolutes": [ + { + "convoluteId": "A Skizzen (Basel, Paul Sacher Stiftung)", + "folios": [ + { + "folioId": "38v", + "systems": "16", + "format": { + "height": 270, + "width": 335 + }, + "content": [] + }, + { + "folioId": "39r", + "systems": "16", + "format": { + "height": 270, + "width": 335 + }, + "content": [] + } + ] + }, + { + "convoluteId": "C Reihentabelle (Basel, Paul Sacher Stiftung)", + "folios": [ + { + "folioId": "38v", + "systems": "16", + "format": { + "height": 270, + "width": 335 + }, + "content": [] + }, + { + "folioId": "39r", + "systems": "16", + "format": { + "height": 270, + "width": 335 + }, + "content": [] + } + ] + }, + { + "convoluteId": "B, D–E (siehe kritischer Bericht)", + "folios": [], + "linkTo": "op25_sourceNotA" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/graph.json b/src/assets/data/edition/series1/section5/op25/graph.json new file mode 100644 index 0000000000..880986cf85 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/graph.json @@ -0,0 +1,14 @@ +{ + "graph": [ + { + "id": "Op25", + "title": "Skizzengraph Opus 25", + "description": [ + "[Eine dynamische Graph-Visualisierung der Skizzen zu Drei Lieder nach Gedichten von Hildegard Jone op. 25 erscheint in Kürze (02/2020).]" + ], + "query": "", + "triples": "", + "staticImage": "\"graphOp25\"" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/intro.json b/src/assets/data/edition/series1/section5/op25/intro.json new file mode 100644 index 0000000000..610f262052 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/intro.json @@ -0,0 +1,10 @@ +{ + "intro": [ + { + "id": "op25", + "content": [ + "[Die Einleitung zum gesamten Werkkomplex Drei Lieder nach Gedichten von Hildegard Jone op. 25 erscheint im Zusammenhang der vollständigen Edition von Opus 25 in AWG I/5.]" + ] + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/source-description.json b/src/assets/data/edition/series1/section5/op25/source-description.json new file mode 100644 index 0000000000..889393445b --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/source-description.json @@ -0,0 +1,30 @@ +{ + "sources": [ + { + "id": "sourceA", + "siglum": "A", + "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", + "description": [ + "2 Seiten in Skizzenbuch 3: Bl. 38v–39r.", + "Beschreibstoff: Notenpapier, quer 270 × 335 mm, 16 Systeme, Firmenzeichen:

auf Bl. 39r unten links (Bl. 38–39).", + "Hauptschreibstoff: Bleistift.", + "Weitere Schreibstoffe: grüner Buntstift, roter Buntstift, schwarzer Buntstift.", + "Autographer Titel: „Wie bin ich froh!“ auf Bl. 38v oben links mit schwarzem Buntstift.", + "Gesicherte Datierung: 4. Juli 1936–16. Juli 1936", + "Taktzahlen: Taktzahlen 1–2, 3–6 und 9–15 in M 317 Sk4 sowie 2–3 in M 317 Sk4.1 mit schwarzem Buntstift; Taktzahlen 7–8 in M 317 Sk4 mit Bleistift und nachgezogen mit schwarzem Buntstift.
Taktzahl 52 (zu op. 24/1) auf Bl. 39r oben links mit schwarzem Buntstift.", + "Instrumentenvorsatz: Akkoladenstrich und teilweise Schlüsselvorsatz auf Bl. 38v System 1–4 (zu op. 24/1).
Akkoladenstrich und Schlüsselvorsatz auf Bl. 39r System 1–4 (zu op. 24/1), eingekreist und gestrichen mit rotem Buntstift.", + "Eintragungen: Reihe auf Bl. 38v System 5 links (zu M 317 Sk3.1.3) mit schwarzem Buntstift.", + "Inhalt:
Bl. 38v System 1b: T. 1–2: Skizze zu Nr. I T. 1–2 (M317 SkI/1).
Bl. 38v System 1a: Reihenfragment (Teil A); Zwölftonreihe Gcis (Teil B) (SkI/2).
...", + "[Weitere Inhaltsangaben folgen in Kürze (02/2020).]" + ] + }, + { + "id": "notA", + "siglum": "", + "location": "", + "description": [ + "[Die Beschreibung der Quellen B bis E einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.]" + ] + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/source-evaluation.json b/src/assets/data/edition/series1/section5/op25/source-evaluation.json new file mode 100644 index 0000000000..027d671a38 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/source-evaluation.json @@ -0,0 +1,10 @@ +{ + "sources": [ + { + "id": "op25", + "content": [ + "[Die Quellenbewertung zum gesamten Werkkomplex Drei Lieder nach Gedichten von Hildegard Jone op. 25 erscheint im Zusammenhang der vollständigen Edition von Opus 25 in AWG I/5.]" + ] + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/source-list.json b/src/assets/data/edition/series1/section5/op25/source-list.json new file mode 100644 index 0000000000..5bbadd5374 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/source-list.json @@ -0,0 +1,34 @@ +{ + "sources": [ + { + "siglum": "A", + "type": "Skizzen und Reihentabelle zu \"Wie bin ich froh!\" M 317 (in Skizzenbuch 3).", + "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", + "linkTo": "sourceA" + }, + { + "siglum": "B", + "type": "Autograph von \"Wie bin ich froh!\" M 317: Textfassung 1.", + "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", + "linkTo": "op25_sourceNotA" + }, + { + "siglum": "C", + "type": "Reihentabelle.", + "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", + "linkTo": "sourceC" + }, + { + "siglum": "D", + "type": "Skizzen zu \"Sterne, Ihr silbernen Bienen\" M 321 und \"Des Herzens Purpurvogel\" M 322 (in Skizzenbuch 4).", + "location": "Basel, Paul Sacher Stiftung, Sammlung Anton Webern.", + "linkTo": "op25_sourceNotA" + }, + { + "siglum": "E", + "type": "Autograph von Drei Lieder nach Gedichten von Hildegard Jone op. 25:\n I (\"Wie bin ich froh!\" M 317: Textfassung [1-->] 2)\n II (\"Des Herzens Purpurvogel\" M 322: einzige Textfassung)\n III (\"Sterne, Ihr silbernen Bienen\" M 321: einzige Textfassung).", + "location": "Wien, Universal Edition, UEQ 493.", + "linkTo": "op25_sourceNotA" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/svg-sheets.json b/src/assets/data/edition/series1/section5/op25/svg-sheets.json new file mode 100644 index 0000000000..86f960e2bf --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/svg-sheets.json @@ -0,0 +1,46 @@ +{ + "sheets": [ + { + "id": "A:SkI/1", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1.jpg", + "alt": "A:SkI/1" + }, + { + "id": "A:SkI/2", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk2_200123_1von1.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk2_200123_1von1.jpg", + "alt": "A:SkI/2" + }, + { + "id": "A:SkI/3", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk3_200123_1von1.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk3_200123_1von1.jpg", + "alt": "A:SkI/3" + }, + { + "id": "A:SkI/4a", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_1von4.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_1von4.jpg", + "alt": "A:SkI/4a" + }, + { + "id": "A:SkI/4b", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_2von4.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_2von4.jpg", + "alt": "A:SkI/4b" + }, + { + "id": "A:SkI/4c", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_3von4.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_3von4.jpg", + "alt": "A:SkI/4c" + }, + { + "id": "A:SkI/4d", + "svg": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_4von4.svg", + "image": "assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_4von4.jpg", + "alt": "A:SkI/4d" + } + ] +} diff --git a/src/assets/data/edition/series1/section5/op25/textcritics.json b/src/assets/data/edition/series1/section5/op25/textcritics.json new file mode 100644 index 0000000000..9e1017f598 --- /dev/null +++ b/src/assets/data/edition/series1/section5/op25/textcritics.json @@ -0,0 +1,32 @@ +{ + "textcritics": [ + { + "id": "A:Sk1", + "description": [ + "[Der Textkritische Kommentar zu A:Sk1 erscheint im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.]" + ], + "comments": [] + }, + { + "id": "A:Sk2", + "description": [ + "[Der Textkritische Kommentar zu A:Sk2 erscheint im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.]" + ], + "comments": [] + }, + { + "id": "A:Sk3", + "description": [ + "[Der Textkritische Kommentar zu A:Sk3 erscheint im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.]" + ], + "comments": [] + }, + { + "id": "A:Sk4", + "description": [ + "[Der Textkritische Kommentar zu A:Sk4 erscheint im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.]" + ], + "comments": [] + } + ] +} diff --git a/src/assets/data/folio.json b/src/assets/data/folio.json deleted file mode 100644 index 575cd58bb8..0000000000 --- a/src/assets/data/folio.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "convolute": [ - { - "folioId": "1r", - "systems": "14", - "format": { - "height": 180, - "width": 267 - }, - "content": [ - { - "sigle": "Aa:SkI/1a", - "measure": "1–2, [3–6]", - "sectionPartition": 1, - "sections": [ - { - "startSystem": 2, - "endSystem": 4 - } - ] - }, - { - "sigle": "Aa:SkI/1a", - "measure": "[7–12]", - "sectionPartition": 1, - "sections": [ - { - "position": 1, - "startSystem": 6, - "endSystem": 9 - } - ] - }, - { - "sigle": "Aa:SkI/1a", - "measure": "[13–17]", - "sectionPartition": 1, - "sections": [ - { - "position": 1, - "startSystem": 10, - "endSystem": 14 - } - ] - } - ] - }, - { - "folioId": "1v", - "systems": "14", - "format": { - "height": 180, - "width": 267 - }, - "content": [ - { - "sigle": "Aa:SkI/4", - "measure": "10–11", - "sectionPartition": 2, - "sections": [ - { - "position": 1, - "startSystem": 4, - "endSystem": 7 - } - ] - }, - { - "sigle": "Aa:SkI/5", - "measure": "10–11", - "sectionPartition": 2, - "sections": [ - { - "position": 2, - "startSystem": 6, - "endSystem": 9 - } - ] - }, - { - "sigle": "Aa:SkI/3", - "measure": "10–11", - "sectionPartition": 2, - "sections": [ - { - "position": 1, - "startSystem": 9, - "endSystem": 12 - } - ] - }, - { - "sigle": "Aa:SkI/2", - "measure": "10, [11–12]", - "sectionPartition": 2, - "sections": [ - { - "position": 2, - "startSystem": 12, - "endSystem": 14 - } - ] - } - ] - }, - { - "folioId": "2r", - "systems": "16", - "format": { - "height": "175", - "width": "270" - }, - "content": [ - { - "sigle": "Aa:SkI/1b", - "measure": "[18–22]", - "sections": [ - { - "startSystem": 6, - "endSystem": 10 - } - ] - }, - { - "sigle": "Aa:SkI/1b", - "measure": "[23–24]", - "sectionPartition": 1, - "sections": [ - { - "position": 1, - "startSystem": 12, - "endSystem": 15 - } - ] - } - ] - }, - { - "folioId": "2v", - "systems": "16", - "format": { - "height": "175", - "width": "270" - }, - "content": [] - } - ] -} diff --git a/src/assets/data/svg-sheets.json b/src/assets/data/svg-sheets.json deleted file mode 100644 index c2658ce2fc..0000000000 --- a/src/assets/data/svg-sheets.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "Aa:SkI/2": { - "id": "Aa:SkI/2", - "svg": "assets/img/edition/SkI_2n_small_cut_opt.svg", - "image": "assets/img/edition/SkI_2_small.jpg", - "alt": "Aa:SkI/2" - }, - "Aa:SkI/3": { - "id": "Aa:SkI/3", - "svg": "assets/img/edition/SkI_3n_small_cut_opt.svg", - "image": "assets/img/edition/SkI_3_small.jpg", - "alt": "Aa:SkI/3" - }, - "Aa:SkI/4": { - "id": "Aa:SkI/4", - "svg": "assets/img/edition/SkI_4n_small_cut_opt.svg", - "image": "assets/img/edition/SkI_4_small.jpg", - "alt": "Aa:SkI/4" - }, - "Aa:SkI/5": { - "id": "Aa:SkI/5", - "svg": "assets/img/edition/SkI_5n_small_cut_opt.svg", - "image": "assets/img/edition/SkI_5_small.jpg", - "alt": "Aa:SkI/5" - } -} diff --git a/src/assets/data/textcritics.json b/src/assets/data/textcritics.json deleted file mode 100644 index cd9f806707..0000000000 --- a/src/assets/data/textcritics.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "Aa:SkI/2": [ - { - "measure": "10", - "system": "12", - "position": "1. Note", - "comment": "Viertelnote überschreibt Halbe Note." - }, - { - "measure": "10", - "system": "12", - "position": "2. Note", - "comment": "♮e oder ♭es (?). (Siehe auch System 13 2/4: e1/as1 oder [♭]es1/as1?) Vorgeschlagene Entzifferung mit Blick auf eindeutig entzifferbare Akzidenzien an entsprechender Stelle in Aa:SkI/1 T. [11], Aa:SkI/3 und Aa:SkI/5 sowie in den Reinschrift- bzw. Druckfassungen aus B, C, E, F und G." - }, - { - "measure": "[11]", - "system": "14", - "position": "(1/4)", - "comment": "punktierte Achtelpause, Sechzehntelnote ♭b radiert." - }, - { - "measure": "[12]", - "system": "13", - "position": "", - "comment": "radierte, nicht entzifferbare Schicht." - } - ], - "Aa:SkI/3": [ - { - "measure": "10", - "system": "9", - "position": "2/4", - "comment": "c gestrichen; ♮e oder ♭es (?)." - }, - { - "measure": "11", - "system": "10", - "position": "1.-2. Note", - "comment": "Triole aus Viertelnote und Achtelnote überschreibt zwei zusammengebalkte Achtelnoten." - }, - { - "measure": "11", - "system": "10", - "position": "nach 2/4", - "comment": "Radierspuren." - } - ], - "Aa:SkI/4": [ - { - "measure": "10", - "system": "6", - "position": "", - "comment": "Achtelfähnchen gestrichen." - }, - { - "measure": "10", - "system": "5", - "position": "3. Note", - "comment": "Ansatz zu Notenkopf c2 und f1(?)." - } - ], - "Aa:SkI/5": [ - { - "measure": "10", - "system": "9", - "position": "3/8", - "comment": "♭ zu ces1 überschreibt ♮ zu c1. (Oder: ♭ces1 überschreibt ♮h?)." - }, - { - "measure": "11", - "system": "9", - "position": "1/4", - "comment": "sic: Text dir (statt mir)." - } - ] -} diff --git a/src/assets/img/edition/SkI_2.jpg b/src/assets/img/edition/series1/section5/op12/SkI_2.jpg similarity index 100% rename from src/assets/img/edition/SkI_2.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_2.jpg diff --git a/src/assets/img/edition/SkI_2_small.jpg b/src/assets/img/edition/series1/section5/op12/SkI_2_small.jpg similarity index 100% rename from src/assets/img/edition/SkI_2_small.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_2_small.jpg diff --git a/src/assets/img/edition/SkI_2n_small_cut_oT_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_2n_small_cut_oT_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_2n_small_cut_oT_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_2n_small_cut_oT_opt.svg diff --git a/src/assets/img/edition/SkI_2n_small_cut_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_2n_small_cut_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_2n_small_cut_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_2n_small_cut_opt.svg diff --git a/src/assets/img/edition/SkI_3.jpg b/src/assets/img/edition/series1/section5/op12/SkI_3.jpg similarity index 100% rename from src/assets/img/edition/SkI_3.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_3.jpg diff --git a/src/assets/img/edition/SkI_3_small.jpg b/src/assets/img/edition/series1/section5/op12/SkI_3_small.jpg similarity index 100% rename from src/assets/img/edition/SkI_3_small.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_3_small.jpg diff --git a/src/assets/img/edition/SkI_3n_small_cut_oT_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_3n_small_cut_oT_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_3n_small_cut_oT_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_3n_small_cut_oT_opt.svg diff --git a/src/assets/img/edition/SkI_3n_small_cut_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_3n_small_cut_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_3n_small_cut_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_3n_small_cut_opt.svg diff --git a/src/assets/img/edition/SkI_4.jpg b/src/assets/img/edition/series1/section5/op12/SkI_4.jpg similarity index 100% rename from src/assets/img/edition/SkI_4.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_4.jpg diff --git a/src/assets/img/edition/SkI_4_small.jpg b/src/assets/img/edition/series1/section5/op12/SkI_4_small.jpg similarity index 100% rename from src/assets/img/edition/SkI_4_small.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_4_small.jpg diff --git a/src/assets/img/edition/SkI_4n_small_cut_oT_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_4n_small_cut_oT_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_4n_small_cut_oT_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_4n_small_cut_oT_opt.svg diff --git a/src/assets/img/edition/SkI_4n_small_cut_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_4n_small_cut_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_4n_small_cut_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_4n_small_cut_opt.svg diff --git a/src/assets/img/edition/SkI_5.jpg b/src/assets/img/edition/series1/section5/op12/SkI_5.jpg similarity index 100% rename from src/assets/img/edition/SkI_5.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_5.jpg diff --git a/src/assets/img/edition/SkI_5_small.jpg b/src/assets/img/edition/series1/section5/op12/SkI_5_small.jpg similarity index 100% rename from src/assets/img/edition/SkI_5_small.jpg rename to src/assets/img/edition/series1/section5/op12/SkI_5_small.jpg diff --git a/src/assets/img/edition/SkI_5n_small_cut_oT_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_5n_small_cut_oT_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_5n_small_cut_oT_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_5n_small_cut_oT_opt.svg diff --git a/src/assets/img/edition/SkI_5n_small_cut_opt.svg b/src/assets/img/edition/series1/section5/op12/SkI_5n_small_cut_opt.svg similarity index 100% rename from src/assets/img/edition/SkI_5n_small_cut_opt.svg rename to src/assets/img/edition/series1/section5/op12/SkI_5n_small_cut_opt.svg diff --git a/src/assets/img/edition/firm_no9_lin28.png b/src/assets/img/edition/series1/section5/op12/firm_je_no9_lin28.png similarity index 100% rename from src/assets/img/edition/firm_no9_lin28.png rename to src/assets/img/edition/series1/section5/op12/firm_je_no9_lin28.png diff --git a/src/assets/img/edition/series1/section5/op25/Op25_Reihentabelle_200129_1von1.svg b/src/assets/img/edition/series1/section5/op25/Op25_Reihentabelle_200129_1von1.svg new file mode 100644 index 0000000000..6188a777e2 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/Op25_Reihentabelle_200129_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&&œnœnœbœ#œ#œnœnœnœbœnœnœ#œnœbœnœ#œ#œnœnœbœnœnœnœ#œnœnœ#œnœ#œbœnœnœbœnœnœ#œnœbœnœ#œ#œnœnœ#œnœnœbœn1Bl. 1r12335Unter-Quint472. Liedœ#œœnœbœnœnœnœ#œ#œbœnœnœ#œnœnœnœbœnœnœ#œ#œnœbœnœ#œnœnœbœnœnœbœ#œnœ#œnœnœnœbœnœnœ#œnœnœ#œ#œnœbœn2468Reihen op. 253 Lieder1934M 317 Sk5 / M 321 Sk1 / M 322 Sk1 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/firm_je_no15_lin16.png b/src/assets/img/edition/series1/section5/op25/firm_je_no15_lin16.png new file mode 100644 index 0000000000..ef250ce69f Binary files /dev/null and b/src/assets/img/edition/series1/section5/op25/firm_je_no15_lin16.png differ diff --git a/src/assets/img/edition/series1/section5/op25/graph_op25_1.png b/src/assets/img/edition/series1/section5/op25/graph_op25_1.png new file mode 100644 index 0000000000..b8da2ad61a Binary files /dev/null and b/src/assets/img/edition/series1/section5/op25/graph_op25_1.png differ diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1.svg new file mode 100644 index 0000000000..3984dfdf20 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk134Sk2Sk2.1Sk2.1.1Sk2.1.3Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk3.1&œnœnJœbœ#12 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1_a.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1_a.svg new file mode 100644 index 0000000000..a5066b25a4 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk1_200123_1von1_a.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk134Sk2Sk2.1Sk2.1.1Sk2.1.3Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk3.1&œnœnJœbœ#12 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_1_200123_1von1.svg new file mode 100644 index 0000000000..5a37d32ced --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk2.1.134Sk1Sk2.1Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk3.1Sk2Sk2.1.3&.œ#œn1œbJœ#œn2 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_200123_1von1.svg new file mode 100644 index 0000000000..501118ea34 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk2.134Sk2Sk2.1.1Sk2.1.3Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk3.1Sk1&œ#-œn-Jœb.Wiebinich68œnJœ#œnœbœœbfrohfroh!Nochœneinmal-œbœb&œn.jœn.jœn.œnœjœnœbœ&Jœnœn1234 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_2_1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_2_1_200123_1von1.svg new file mode 100644 index 0000000000..9a451909fb --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_2_1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317: Sk2.1.2.134Sk1Sk2.1Sk2.1.1Sk2.1.3Sk2.1.2Sk3Sk3.1.2Sk3.1Sk2œbœn&œn3 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_2_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_2_200123_1von1.svg new file mode 100644 index 0000000000..1cb9ad6d37 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_2_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk2.1.234Sk1Sk2.1Sk2.1.1Sk2.1.3Sk2.1.2.1Sk3Sk3.1.2Sk3.1Sk2œbœ&œnœnœ#œn3 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_3_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_3_200123_1von1.svg new file mode 100644 index 0000000000..083b3dc958 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_1_3_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk2.1.334Sk1Sk2.1Sk2.1.1Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk3.1Sk2c f gis a \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_200123_1von1.svg new file mode 100644 index 0000000000..ef653bc92f --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk2_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&?4. VII. 34œ#œnœ#œ#œBl. 38v1A234Wie bin ich froh!‟œ#œnœ#œ#œnœbœbœnœnœnœnœnBM 317 Sk234Sk1Sk2.1Sk2.1.1Sk2.1.3Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk3.1nœn \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_1_200123_1von1.svg new file mode 100644 index 0000000000..e10eb70f96 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1Bl. 38v56&&œnœbœnœnœb.œnJœn4oder˙#5M 317 Sk3.1.1Sk3.1Sk3.1.3Sk3.1.3.1œ \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_200123_1von1.svg new file mode 100644 index 0000000000..cca552beb8 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk3.134Sk1Sk2.1Sk2.1.1Sk2.1.2Sk2.1.2.1Sk3Sk3.1.2Sk2Sk2.1.3œ#œn3&œnœbœn.œnœn˙#jœnu.Iœnœbœb3œnœbœbleuchtetso5jœb&œœnœSk3.1.1Sk3.1.334{5}{6}jnochein - mal \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_2_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_2_200123_1von1.svg new file mode 100644 index 0000000000..3b86d466e4 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_2_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk3.1.234Sk1Sk2.1Sk2.1.1Sk2.1.2Sk2.1.2.1Sk3Sk3.1Sk2Sk2.1.3.œnœnJœbmalwirdmir&43gilt.œnJœnalles.œ#Grün!-345˙ \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_3_1_2001023_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_3_1_2001023_1von1.svg new file mode 100644 index 0000000000..f441ce6705 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_3_1_2001023_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1Bl. 38v6œnœnœbœ#œ#œnœnœnœbœnœnœ#M 317 Sk3.1.3.1Sk3.1.3Sk3.1.1& \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_3__2001023_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_3__2001023_1von1.svg new file mode 100644 index 0000000000..1f19437609 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_1_3__2001023_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&œnœnœbœ#œ#œnœœnœbœœnœœnnœ#œnœbœnœ#œ#œnœnœbœnœœnnœœnnœ#Bl. 38v56173ReiheAœ#œœnœœnœbœnœnœnœ#œ#œbœnœnœ#œœnnœœnœnœbœnœnœ#œ#œnœbœn42BM 317 Sk3.1.3Sk3.1Sk3.1.1Sk3.1.3.1 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_200123_1von1.svg new file mode 100644 index 0000000000..a649df3472 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk3_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?4. VII. 34Bl. 38v1234Wie bin ich froh!‟M 317 Sk334Sk1Sk2.1Sk2.1.1Sk2.1.2Sk2.1.2.1Sk3.1.2Sk3.1Sk2Sk2.1.334œnœnJœbWiebinich.œ#œœ#3frohœn.jœn.jœ.œ#jœœnœb12345n \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_1_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_1_200123_1von1.svg new file mode 100644 index 0000000000..a29f6394de --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_1_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1Bl. 38v13141516&&44&giltœn-œnJœ#œ#-Wiebinichfroh!Œœnœnœœ#.œ#.œœnb3Œœœnn?21f2œ#œnœnœnœb33œnœnœ#3{3}p3M 317 Sk4.1Sk4 T. {1A}–3Af# \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_1von4.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_1von4.svg new file mode 100644 index 0000000000..fd1d165c56 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_1von4.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&?œnœœnbBl. 38v9101112œ#œœn#{1A}œ#œnœn3Œ&œn-œb-œœ#n?&œœn#œn?&{1B}Œ&œ#œnœnœn.œb3343434SLebhaft q = f4œœ#nœn-œb-?&œœn#?8p1Crit1œnœnJœbWiebinichŒœnœnœbœ#.œ#.œœnb3Œœœnn&?22tempo4 u. 1.œ#œ#œn3froh3A3M 317 Sk4 T. {1A}–3AfSk4.1.1 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_2von4.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_2von4.svg new file mode 100644 index 0000000000..b5133c6092 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_2von4.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&?434343424242434343444444&&&Bl. 39r12345678352œnœ#œnjœnœn-œb-3nocheinmalwirdmirœnœnœ#œnœbœœnn3œœn#?œœnn&Jœ#.œœbn&?3Bffzartpp4gilt.œnjœnallesœnœnœ#.œ#-33&&&&44pgilt.œjœn-grünund˙#œn-Œœœnb-œœnb-œnœbœœœ#nn3?œnœbœnœœœn#b33?ŒœnœnœbŒ3œnœbœnŒŒ3353334444viel langsamerrit53fffpfpzart1œnœ#œ#ŒÓ3leuchtetso!œœœbnŒœnœœ#3œœœn#nœnœnœbœ 3?Œœœ#nœnœnœ#œnœb33&Œœœn#3?&364444tempo6ffS3--M 317 Sk4 T. 3B–6&3884441u. 111&3Sk4 T. 7–12n \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_3von4.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_3von4.svg new file mode 100644 index 0000000000..0f1700b484 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_3von4.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&?Œœn-œnœbœnœ#Œœn-œnjœbnochüber œbœœ#nœœnnœnœ#?&?œœn#œœn#44434Bl. 39r8910111277rit1314fœ#œ#œndieBlumenœnœ#œ#œnœnblühnŒœ#œnœnœbœn3&Œ&?34?88tempoSfœnœbœnjœnœnœ#333mirdieWelt!nocheinœœ#nœbœœnœ#œn3œœn#&?Jœ#&99giltŒfSœ#œnœn-œ#-3malbinichœœnnœœnnœœnbœœbn&241010f.œ#Jœ#ganzinsœnœnœ#œ#-33&&1111rit34fœnœnœnœbœn3wWerdenhingestelltŒœbœnœnŒ3œ#œnœnœbœnœn441212molto4œnœb----M 317 Sk4 T. 7–12fSk4.2Sk4 T. 13–15pp3222Sk4 T. 3B–61-ffp8bmolto [xx] \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_4von4.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_4von4.svg new file mode 100644 index 0000000000..0554864596 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_200123_4von4.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&434343œœ#jœœnœ#Jœnundbinaufœœ#nœœn#œnœb33Œœœ#œœ#nŒ&?&1313viel langsamerBl. 39r13141516π.œbœnœn.œbjœnErden.JœœnœbœnœœJœœ#nœ#œnœœœ1414fœnœnœ#jœn1515ŒpMaria Enzersdorf16. VII. 34-M 317 Sk4 T. 13–15bu. 43giltu 4u 43bu. 3Sk4.2Sk4 T. 7–12Sk4.3 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_2_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_2_200123_1von1.svg new file mode 100644 index 0000000000..02fadd2094 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_2_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 143Bl. 39r13&œM 317 Sk4.2Sk4 T. 13–15Sk4 T. 7–1213 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_3_200123_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_3_200123_1von1.svg new file mode 100644 index 0000000000..36ee2d2d56 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_1_Sk4_3_200123_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1Bl. 39r141516??œœ#nœœn#œnœ#œœM 317 Sk4.3Sk4 T. 13–15Maria Enzersdorf16. VII. 34Sk4 T. 7–12#13 \ No newline at end of file diff --git a/src/assets/img/edition/series1/section5/op25/op25_Reihentabelle_200124_1von1.svg b/src/assets/img/edition/series1/section5/op25/op25_Reihentabelle_200124_1von1.svg new file mode 100644 index 0000000000..34d8097173 --- /dev/null +++ b/src/assets/img/edition/series1/section5/op25/op25_Reihentabelle_200124_1von1.svg @@ -0,0 +1 @@ +Zeichenfläche 1&&&&œnœnœbœ#œ#œnœnœnœbœnœnœ#œnœbœnœ#œ#œnœnœbœnœnœnœ#œnœnœ#œnœ#œbœnœnœbœnœnœ#œnœbœnœ#œ#œnœnœ#œnœnœbœn1Bl. 1r12335Unter-Quint472. Liedœ#œœnœbœnœnœnœ#œ#œbœnœnœ#œnœnœnœbœnœnœ#œ#œnœbœnœ#œnœnœbœnœnœbœ#œnœ#œnœnœnœbœnœnœ#œnœnœ#œ#œnœbœn2Reihen op. 254683 Lieder1934M 317 Sk5 / M 321 Sk1 / M 322 Sk1AB \ No newline at end of file diff --git a/src/testing/router-stubs.ts b/src/testing/router-stubs.ts index 1795a269b2..85803e6539 100644 --- a/src/testing/router-stubs.ts +++ b/src/testing/router-stubs.ts @@ -1,7 +1,7 @@ /* tslint:disable:no-input-rename */ /* tslint:disable:directive-selector component-selector */ import { Component, Directive, HostListener, Injectable, Input, NgModule } from '@angular/core'; -import { NavigationExtras } from '@angular/router'; +import { NavigationExtras, QueryParamsHandling } from '@angular/router'; import { AppModule } from '@awg-app/app.module'; @@ -22,6 +22,18 @@ export class RouterLinkStubDirective { @Input('routerLink') linkParams: any; + /** + * Input with query parameters. + */ + @Input('queryParams') + queryParams?: any; + + /** + * Input with query param handling option. + */ + @Input('queryParamsHandling') + queryParamsHandling?: QueryParamsHandling = ''; + /** * The router params after navigation. */ diff --git a/tsconfig.app.json b/tsconfig.app.json index 7747e9d0ef..487f1188fb 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -12,6 +12,6 @@ "@awg-views/*": ["app/views/*"] } }, - "include": ["src/**/*.ts"], + "include": ["src/main.ts", "src/polyfills.ts", "src/**/*.ts"], "exclude": ["src/test.ts", "src/**/*.spec.ts", "src/testing/"] } diff --git a/tsconfig.json b/tsconfig.json index 7a2c95236d..5e86b4bcf9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,6 @@ "sourceMap": true, "declaration": false, "downlevelIteration": true, - "emitDecoratorMetadata": true, "experimentalDecorators": true, "module": "esnext", "moduleResolution": "node", @@ -22,5 +21,9 @@ "@awg-views/*": ["app/views/*"], "@testing/*": ["testing/*"] } + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true } } diff --git a/tslint.json b/tslint.json index e0807d6149..2626df329b 100644 --- a/tslint.json +++ b/tslint.json @@ -3,7 +3,7 @@ "rules": { "array-type": false, "deprecation": { - "severity": "warn" + "severity": "warning" }, "component-class-suffix": true, "contextual-lifecycle": true, @@ -26,7 +26,6 @@ "no-non-null-assertion": true, "no-redundant-jsdoc": false, "no-switch-case-fall-through": true, - "no-use-before-declare": true, "no-var-requires": false, "object-literal-sort-keys": false, "ordered-imports": false, diff --git a/yarn.lock b/yarn.lock index 43c8e287ba..70ad680dde 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,149 +2,159 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.800.6": - version "0.800.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.800.6.tgz#24d65f1e079f294312fe76dc11eaabf5e5d43eff" - integrity sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g== +"@angular-devkit/architect@0.803.21": + version "0.803.21" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.803.21.tgz#0e76b6f646ebdbd9bb88d3972b2ca66fed950f7d" + integrity sha512-E2K/YexIWVyKM/xmyxvDjkJf+wX9u4c8YYpNaK4htsRzA06juc7N1MhlL/jURZiRl5b/K9sapYeq3tMX76saxA== dependencies: - "@angular-devkit/core" "8.0.6" + "@angular-devkit/core" "8.3.21" rxjs "6.4.0" -"@angular-devkit/build-angular@~0.800.6": - version "0.800.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.800.6.tgz#96515da8cb83f28b3afae8b3fd73392f2b54925d" - integrity sha512-b6WPGN8PReRizeTe5sR3XS2sqTqfCeFIDXI4sPy3T3XdmO1dB/UP8trsHXifuNTNSVIID4X0hDwXuz36Lk+4Jw== - dependencies: - "@angular-devkit/architect" "0.800.6" - "@angular-devkit/build-optimizer" "0.800.6" - "@angular-devkit/build-webpack" "0.800.6" - "@angular-devkit/core" "8.0.6" - "@ngtools/webpack" "8.0.6" - ajv "6.10.0" - autoprefixer "9.5.1" - browserslist "4.5.5" - caniuse-lite "1.0.30000974" - circular-dependency-plugin "5.0.2" +"@angular-devkit/build-angular@~0.803.21": + version "0.803.21" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.803.21.tgz#f3d12ea09748b05eb2d835a7de7997599fb6b752" + integrity sha512-flfgflvfpwdsm3x/U7QnfbtyZPEbsVipzQAoao1Zo58Beq1a+NsKsWbjrF/x4TSoI2czt0OVWXNytlfXM7LMhg== + dependencies: + "@angular-devkit/architect" "0.803.21" + "@angular-devkit/build-optimizer" "0.803.21" + "@angular-devkit/build-webpack" "0.803.21" + "@angular-devkit/core" "8.3.21" + "@babel/core" "7.7.5" + "@babel/preset-env" "7.7.6" + "@ngtools/webpack" "8.3.21" + ajv "6.10.2" + autoprefixer "9.6.1" + browserslist "4.6.6" + cacache "12.0.2" + caniuse-lite "1.0.30000989" + circular-dependency-plugin "5.2.0" clean-css "4.2.1" - copy-webpack-plugin "5.0.2" - core-js "3.0.1" - file-loader "3.0.1" - glob "7.1.3" + copy-webpack-plugin "5.1.1" + core-js "3.2.1" + file-loader "4.2.0" + find-cache-dir "3.0.0" + glob "7.1.4" istanbul-instrumenter-loader "3.0.1" + jest-worker "24.9.0" karma-source-map-support "1.4.0" less "3.9.0" - less-loader "4.1.0" - license-webpack-plugin "2.1.1" + less-loader "5.0.0" + license-webpack-plugin "2.1.2" loader-utils "1.2.3" - mini-css-extract-plugin "0.6.0" + mini-css-extract-plugin "0.8.0" minimatch "3.0.4" - open "6.2.0" + open "6.4.0" parse5 "4.0.0" - postcss "7.0.14" + postcss "7.0.17" postcss-import "12.0.1" postcss-loader "3.0.0" - raw-loader "1.0.0" + raw-loader "3.1.0" + regenerator-runtime "0.13.3" rxjs "6.4.0" - sass "1.19.0" - sass-loader "7.1.0" - semver "6.0.0" + sass "1.22.9" + sass-loader "7.2.0" + semver "6.3.0" + source-map "0.7.3" source-map-loader "0.2.4" - source-map-support "0.5.12" + source-map-support "0.5.13" speed-measure-webpack-plugin "1.3.1" - stats-webpack-plugin "0.7.0" - style-loader "0.23.1" + style-loader "1.0.0" stylus "0.54.5" stylus-loader "3.0.2" - terser-webpack-plugin "1.2.3" + terser "4.3.9" + terser-webpack-plugin "1.4.3" tree-kill "1.2.1" - webpack "4.30.0" - webpack-dev-middleware "3.6.2" - webpack-dev-server "3.3.1" + webpack "4.39.2" + webpack-dev-middleware "3.7.2" + webpack-dev-server "3.9.0" webpack-merge "4.2.1" - webpack-sources "1.3.0" + webpack-sources "1.4.3" webpack-subresource-integrity "1.1.0-rc.6" - worker-plugin "3.1.0" + worker-plugin "3.2.0" -"@angular-devkit/build-optimizer@0.800.6": - version "0.800.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.800.6.tgz#2a801d0bb03296cd34e866d783a86b0e6ac0250b" - integrity sha512-f8u9c5VA+bxbYREKX6EY8QsbIT8ziDRHlhJ1n6H2nUTaQi+THtbPfrDsf3S3aVACfkkY+LEGGl135XEPr5PoxA== +"@angular-devkit/build-optimizer@0.803.21": + version "0.803.21" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.803.21.tgz#ecb3b6bba4b13ffbfbdbefb5997f690aa3635203" + integrity sha512-gNN6kPaF4phZco3TmsrNr9tIEKXYsoSeoaUiDUfgmCYwa7fAqM8Ojh7HX6IQuB2PpVmEwKGlCcSh6xDtB33NjA== dependencies: loader-utils "1.2.3" - source-map "0.5.6" - typescript "3.4.4" - webpack-sources "1.3.0" + source-map "0.7.3" + tslib "1.10.0" + typescript "3.5.3" + webpack-sources "1.4.3" -"@angular-devkit/build-webpack@0.800.6": - version "0.800.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.800.6.tgz#74a22b4928b73e3106408977a813ad76a6354c9b" - integrity sha512-FwNGa99dxL9dACv/eLTP6u50tlPLG01yqp/JFAgxS0OmDkEMjSBLNgS8b8qhTo8XMhMsMWzb8yIUwV1PcSj6qg== +"@angular-devkit/build-webpack@0.803.21": + version "0.803.21" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.803.21.tgz#fd45754c0123f44fcde8fa6411ebea52d98054f0" + integrity sha512-zCFVla/Xdk8qGVybvnHtoKml2h0/ShasSjT55VNZO1XaTCMqYkQEwwqSGEiVajpauafWjKrKxxBhsmWoI4efAA== dependencies: - "@angular-devkit/architect" "0.800.6" - "@angular-devkit/core" "8.0.6" + "@angular-devkit/architect" "0.803.21" + "@angular-devkit/core" "8.3.21" rxjs "6.4.0" - webpack-merge "4.2.1" -"@angular-devkit/core@8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.6.tgz#540ff673f1808fc09538c8aa6c01f08750921301" - integrity sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA== +"@angular-devkit/core@8.3.21": + version "8.3.21" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.3.21.tgz#447022813e46333e930816c287722d06b9c4dd3a" + integrity sha512-BYyVbrbys535FplX0+GVOlYBg/cyk1U5SRhSxRRFZYi9epVlEBBPk8/6wV4cQPGb6EwXkVj7YtPWXjXcGfzWmA== dependencies: - ajv "6.10.0" + ajv "6.10.2" fast-json-stable-stringify "2.0.0" - magic-string "0.25.2" + magic-string "0.25.3" rxjs "6.4.0" source-map "0.7.3" -"@angular-devkit/schematics@8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.6.tgz#e50805582f4a082079201dffd8940e001f3721e0" - integrity sha512-FGPcVKxNvtdFB0A6oHyxtWeugL83nW+kPATlAimgh1hu7TCP94dDpflCV9o/lgZlH817xTYXrhToXJaMZSnDPw== +"@angular-devkit/schematics@8.3.21": + version "8.3.21" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.3.21.tgz#80d515f480180be18a4130ea691f90153bcab3ea" + integrity sha512-+wH0362CRr/SijVX4w2baY2ANZ4scQ1k2xO8lT+NMeZQkw3IJQPOfwk1IaqiAs2xuBJZcSDH1Gn80+Jh4Dit7w== dependencies: - "@angular-devkit/core" "8.0.6" + "@angular-devkit/core" "8.3.21" rxjs "6.4.0" -"@angular/animations@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.1.2.tgz#2e4fec78a9345d9f1d93e9d464911c71f8c80046" - integrity sha512-szR5qzRe6vS1qrPhV2p5fMp5vQxT2SaljXGs3Xgt2Tl23om0XVNcqK0I8NNuK/ehuJ5LXQ1fJHniGcmN2aUw0g== +"@angular/animations@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.2.14.tgz#76736b21e56165e6ca4925fb69605bdcc56aba7d" + integrity sha512-3Vc9TnNpKdtvKIXcWDFINSsnwgEMiDmLzjceWg1iYKwpeZGQahUXPoesLwQazBMmxJzQiA4HOMj0TTXKZ+Jzkg== dependencies: tslib "^1.9.0" -"@angular/cli@~8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.0.6.tgz#151147040d46d3a20618a7b494e440268e39b899" - integrity sha512-COBpeoXyLt8FiOhsmoEnDfQcm0aTdUSUHsH3zNkVTcyxpRzZVspTDGzxhK0UsCpddXS/MMjJiXph6SJ1el3qaQ== +"@angular/cli@~8.3.21": + version "8.3.21" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.3.21.tgz#cbb05b86b7f34ecd81d52ccad922359e66a16a15" + integrity sha512-ZZpA7mMfIobFT06rBNxm8vucAh8W2s0huJZ4iL0BPujnhIr71PL+gDwssySWDEz2q6i4CkH9QRH76DHhtL6VSQ== dependencies: - "@angular-devkit/architect" "0.800.6" - "@angular-devkit/core" "8.0.6" - "@angular-devkit/schematics" "8.0.6" - "@schematics/angular" "8.0.6" - "@schematics/update" "0.800.6" + "@angular-devkit/architect" "0.803.21" + "@angular-devkit/core" "8.3.21" + "@angular-devkit/schematics" "8.3.21" + "@schematics/angular" "8.3.21" + "@schematics/update" "0.803.21" "@yarnpkg/lockfile" "1.1.0" + ansi-colors "4.1.1" debug "^4.1.1" ini "1.3.5" - inquirer "6.3.1" + inquirer "6.5.1" npm-package-arg "6.1.0" - open "6.2.0" - pacote "9.5.0" - read-package-tree "5.2.2" - semver "6.0.0" + npm-pick-manifest "3.0.2" + open "6.4.0" + pacote "9.5.5" + read-package-tree "5.3.1" + rimraf "3.0.0" + semver "6.3.0" symbol-observable "1.2.0" universal-analytics "^0.4.20" uuid "^3.3.2" -"@angular/common@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.1.2.tgz#43a7fd1179d179cae9142a3e6ae60a26a34dd062" - integrity sha512-bywFofN5RjcvygYEC/3eo+bfUnYBmARA6DPau8fm6D2ZGpXrWXJ3Thd99ZesuuffvpniaIHlAjbHGI83XSnixQ== +"@angular/common@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.2.14.tgz#027e52b2951c14082d6e3af1a4ffa1356220e439" + integrity sha512-Qmt+aX2quUW54kaNT7QH7WGXnFxr/cC2C6sf5SW5SdkZfDQSiz8IaItvieZfXVQUbBOQKFRJ7TlSkt0jI/yjvw== dependencies: tslib "^1.9.0" -"@angular/compiler-cli@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.1.2.tgz#1b20c3e53520bf8bbece4ba88171dec79eb78e9c" - integrity sha512-Dxm99iuv265AlUf3aX3nRl+Iqrj3RvlQgPOYLsV1EEVnA2+4Mjj52zbKgdOOOfhCF48imVbaU45Sh8p2l1xdOw== +"@angular/compiler-cli@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.2.14.tgz#1997bec04a6b9d022954e5747505fe8906994594" + integrity sha512-XDrTyrlIZM+0NquVT+Kbg5bn48AaWFT+B3bAT288PENrTdkuxuF9AhjFRZj8jnMdmaE4O2rioEkXBtl6z3zptA== dependencies: canonical-path "1.0.0" chokidar "^2.1.1" @@ -157,59 +167,59 @@ tslib "^1.9.0" yargs "13.1.0" -"@angular/compiler@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.1.2.tgz#db91a652a5c725b553ef946976446121c024bd0b" - integrity sha512-oRkHrstOV6imbb4mGf6q20d4N4iYfBbI6WfxtPL4dz08GipGg4Zvekn4e3R01vzhFBxssGcgmeEtFQJh/UzI8g== +"@angular/compiler@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.2.14.tgz#46db7a9d1c17f236126518ff26480c160d5a6183" + integrity sha512-ABZO4E7eeFA1QyJ2trDezxeQM5ZFa1dXw1Mpl/+1vuXDKNjJgNyWYwKp/NwRkLmrsuV0yv4UDCDe4kJOGbPKnw== dependencies: tslib "^1.9.0" -"@angular/core@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.1.2.tgz#d05a4965093a9ce7e7776088dc2b9e7e885e8d9f" - integrity sha512-Gm/UIUnIkeah39vxi4enVH/CUcPZOgGDyw4RNagw4pH8dTP8V0RUz8uteOr3DS+Eh49BcHkrT2oU5MBZSZ3lvw== +"@angular/core@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.2.14.tgz#35566f5b19480369229477e7e0e0fde740bd5204" + integrity sha512-zeePkigi+hPh3rN7yoNENG/YUBUsIvUXdxx+AZq+QPaFeKEA2FBSrKn36ojHFrdJUjKzl0lPMEiGC2b6a6bo6g== dependencies: tslib "^1.9.0" -"@angular/forms@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.1.2.tgz#49e1327b431adb7533a31435fc41bfea5cf502bf" - integrity sha512-DHqbWt6AGnLkNajLZUAH4yQrxZdgUkjzEW6oxwvS2PxmLIrppz4TYWizfAVQndZ1Ddl7Eo1zRoRzqqHT90XyGA== +"@angular/forms@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.2.14.tgz#7d357c346a3884881beb044c50ec4a09d3d7ee8e" + integrity sha512-zhyKL3CFIqcyHJ/TQF/h1OZztK611a6rxuPHCrt/5Sn1SuBTJJQ1pPTkOYIDy6IrCrtyANc8qB6P17Mao71DNQ== dependencies: tslib "^1.9.0" -"@angular/language-service@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-8.1.2.tgz#bdc7a9664ebef837ebaaeb583f66704e06fbeabe" - integrity sha512-9DR5TclsEpMIzCmagLHKYDTAqcZUkZKPjkngqIAUJg5R4IUjsuYn8NZX+agoOrS4ky6Dy9FXGYUC+QB0iEiycg== +"@angular/language-service@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-8.2.14.tgz#e18b27a6841577ce489ad31540150da5a444ca37" + integrity sha512-7EhN9JJbAJcH2xCa+rIOmekjiEuB0qwPdHuD5qn/wwMfRzMZo+Db4hHbR9KHrLH6H82PTwYKye/LLpDaZqoHOA== -"@angular/platform-browser-dynamic@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.1.2.tgz#10297054900daf8728e9ad8531d7ea40d1270bc7" - integrity sha512-NmbGMwKPbYq3ZFt6nOqRslJsQNRS2E94cjkSLseEb5wauUmdUBX9stoHu8BOhvd+EIEcYhD7uxPB+L/qPsH46g== +"@angular/platform-browser-dynamic@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.14.tgz#4439a79fe10ec45170e6940a28835e9ff0918950" + integrity sha512-mO2JPR5kLU/A3AQngy9+R/Q5gaF9csMStBQjwsCRI0wNtlItOIGL6+wTYpiTuh/ux+WVN1F2sLcEYU4Zf1ud9A== dependencies: tslib "^1.9.0" -"@angular/platform-browser@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.1.2.tgz#5e136f10656a950d5a8e65da68a7270fadc83875" - integrity sha512-n61OtH3B0e+LTHCfHPjB7hiuo0ZxKxZvNWigczGyLZf2abga5jac2bNrdZnU8zXC44AUfasUD2qDS2IPIhNbqA== +"@angular/platform-browser@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.2.14.tgz#31f082e8ba977f9b89964d721c38cbc32ce0e433" + integrity sha512-MtJptptyKzsE37JZ2VB/tI4cvMrdAH+cT9pMBYZd66YSZfKjIj5s+AZo7z8ncoskQSB1o3HMfDjSK7QXGx1mLQ== dependencies: tslib "^1.9.0" -"@angular/platform-server@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-8.1.2.tgz#96b127fb9274b1ee4e43af05ae72393015ac43ef" - integrity sha512-wZdKqormXipsm1Qd4K6CT3pyA38jE1F7xK+1+VVoLYCQuSGMermZ2SE+M7DpxK8ZpT53r5HfwJZCt5xrEKvyoQ== +"@angular/platform-server@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-8.2.14.tgz#393e42d82022ad072b652999696bd5fa0b5c6928" + integrity sha512-gGAgxMmac5CyLcwgB+qCD1o75An0NmpREh/lxPgz6n6Zs9JqdqpZROLSIHqGBaU6MWo1qiOfS6L08HwYPx7ipQ== dependencies: domino "^2.1.2" tslib "^1.9.0" xhr2 "^0.1.4" -"@angular/router@^8.0.3": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.1.2.tgz#83dbab106918225da9a3e03945380483f244085e" - integrity sha512-+SWoYZHyDBBUydDTbIu+hyoGzWtSA4VUsriUPWEOCplzQiabFhWxVvcT00mO0cim4XfupL1tmiPjE66sivLYBw== +"@angular/router@~8.2.14": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.2.14.tgz#5f9f9707710983c2143aead79dcd2da520ae3eb8" + integrity sha512-DHA2BhODqV7F0g6ZKgFaZgbsqzHHWRcfWchCOrOVKu2rYiKUTwwHVLBgZAhrpNeinq2pWanVYSIhMr7wy+LfEA== dependencies: tslib "^1.9.0" @@ -220,6 +230,26 @@ dependencies: "@babel/highlight" "^7.0.0" +"@babel/core@7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.5.tgz#ae1323cd035b5160293307f50647e83f8ba62f7e" + integrity sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helpers" "^7.7.4" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/generator@^7.4.0", "@babel/generator@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" @@ -231,6 +261,65 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" + integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== + dependencies: + "@babel/types" "^7.7.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" + integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" + integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-call-delegate@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" + integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== + dependencies: + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-create-regexp-features-plugin@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" + integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== + dependencies: + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" + +"@babel/helper-define-map@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" + integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" + integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== + dependencies: + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" @@ -240,6 +329,15 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" + integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== + dependencies: + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" @@ -247,6 +345,94 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-get-function-arity@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" + integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-hoist-variables@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" + integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-member-expression-to-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" + integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-module-imports@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" + integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" + integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-simple-access" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" + integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" + integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" + integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-wrap-function" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-replace-supers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" + integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-simple-access@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" + integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== + dependencies: + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -254,6 +440,32 @@ dependencies: "@babel/types" "^7.4.4" +"@babel/helper-split-export-declaration@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" + integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-wrap-function@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" + integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helpers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" + integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== + dependencies: + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -268,6 +480,403 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== +"@babel/parser@^7.7.4", "@babel/parser@^7.7.5": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" + integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== + +"@babel/plugin-proposal-async-generator-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" + integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" + +"@babel/plugin-proposal-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" + integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + +"@babel/plugin-proposal-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" + integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.7.4" + +"@babel/plugin-proposal-object-rest-spread@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz#9f27075004ab99be08c5c1bd653a2985813cb370" + integrity sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" + integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz#433fa9dac64f953c12578b29633f456b68831c4e" + integrity sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-async-generators@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" + integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" + integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" + integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" + integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" + integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-top-level-await@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" + integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" + integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" + integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + +"@babel/plugin-transform-block-scoped-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" + integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" + integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" + integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-define-map" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" + integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" + integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz#3e9713f1b69f339e87fa796b097d73ded16b937b" + integrity sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-duplicate-keys@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" + integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" + integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" + integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" + integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" + integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" + integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" + integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== + dependencies: + "@babel/helper-module-transforms" "^7.7.5" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" + integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== + dependencies: + "@babel/helper-module-transforms" "^7.7.5" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.7.4" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" + integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== + dependencies: + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" + integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== + dependencies: + "@babel/helper-module-transforms" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" + integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + +"@babel/plugin-transform-new-target@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" + integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" + integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + +"@babel/plugin-transform-parameters@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz#7a884b2460164dc5f194f668332736584c760007" + integrity sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew== + dependencies: + "@babel/helper-call-delegate" "^7.7.4" + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" + integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" + integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" + integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-shorthand-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" + integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" + integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" + integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" + integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" + integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" + integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/preset-env@7.7.6": + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.6.tgz#39ac600427bbb94eec6b27953f1dfa1d64d457b2" + integrity sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.7.4" + "@babel/plugin-proposal-dynamic-import" "^7.7.4" + "@babel/plugin-proposal-json-strings" "^7.7.4" + "@babel/plugin-proposal-object-rest-spread" "^7.7.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/plugin-syntax-top-level-await" "^7.7.4" + "@babel/plugin-transform-arrow-functions" "^7.7.4" + "@babel/plugin-transform-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions" "^7.7.4" + "@babel/plugin-transform-block-scoping" "^7.7.4" + "@babel/plugin-transform-classes" "^7.7.4" + "@babel/plugin-transform-computed-properties" "^7.7.4" + "@babel/plugin-transform-destructuring" "^7.7.4" + "@babel/plugin-transform-dotall-regex" "^7.7.4" + "@babel/plugin-transform-duplicate-keys" "^7.7.4" + "@babel/plugin-transform-exponentiation-operator" "^7.7.4" + "@babel/plugin-transform-for-of" "^7.7.4" + "@babel/plugin-transform-function-name" "^7.7.4" + "@babel/plugin-transform-literals" "^7.7.4" + "@babel/plugin-transform-member-expression-literals" "^7.7.4" + "@babel/plugin-transform-modules-amd" "^7.7.5" + "@babel/plugin-transform-modules-commonjs" "^7.7.5" + "@babel/plugin-transform-modules-systemjs" "^7.7.4" + "@babel/plugin-transform-modules-umd" "^7.7.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" + "@babel/plugin-transform-new-target" "^7.7.4" + "@babel/plugin-transform-object-super" "^7.7.4" + "@babel/plugin-transform-parameters" "^7.7.4" + "@babel/plugin-transform-property-literals" "^7.7.4" + "@babel/plugin-transform-regenerator" "^7.7.5" + "@babel/plugin-transform-reserved-words" "^7.7.4" + "@babel/plugin-transform-shorthand-properties" "^7.7.4" + "@babel/plugin-transform-spread" "^7.7.4" + "@babel/plugin-transform-sticky-regex" "^7.7.4" + "@babel/plugin-transform-template-literals" "^7.7.4" + "@babel/plugin-transform-typeof-symbol" "^7.7.4" + "@babel/plugin-transform-unicode-regex" "^7.7.4" + "@babel/types" "^7.7.4" + browserslist "^4.6.0" + core-js-compat "^3.4.7" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + "@babel/runtime@^7.3.1": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" @@ -275,6 +884,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.6.3": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" + integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -284,6 +900,15 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" +"@babel/template@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" + integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/traverse@^7.4.3": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" @@ -299,6 +924,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" + integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" @@ -308,176 +948,188 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@commitlint/cli@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-8.1.0.tgz#a3d4236c0ac961d7026a53d728b179c696d6a045" - integrity sha512-83K5C2nIAgoZlzMegf0/MEBjX+ampUyc/u79RxgX9ZYjzos+RQtNyO7I43dztVxPXSwAnX9XRgoOfkGWA4nbig== +"@babel/types@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" + integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== dependencies: - "@commitlint/format" "^8.1.0" - "@commitlint/lint" "^8.1.0" - "@commitlint/load" "^8.1.0" - "@commitlint/read" "^8.1.0" + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@commitlint/cli@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-8.3.4.tgz#aabcd997124bd0656ebd2a805ec9e92cfb663d78" + integrity sha512-lYL61eO5CG5Du3YTOt8eXg959awIpl/u2KL+msctbooUGTDtiknvBb1r7dbdpUYwVMWcgdKQsk9heB+FRdygfA== + dependencies: + "@commitlint/format" "^8.3.4" + "@commitlint/lint" "^8.3.4" + "@commitlint/load" "^8.3.4" + "@commitlint/read" "^8.3.4" babel-polyfill "6.26.0" - chalk "2.3.1" + chalk "2.4.2" get-stdin "7.0.0" - lodash "4.17.14" + lodash "4.17.15" meow "5.0.0" resolve-from "5.0.0" resolve-global "1.0.0" -"@commitlint/config-angular-type-enum@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-angular-type-enum/-/config-angular-type-enum-8.1.0.tgz#f1d7d32100a18637a5b42066ee373efad4c376ef" - integrity sha512-TW0mc5PHJ7JVWRDQ/BDUgRoK9gvoHIoFRdAZA2qcRqw/ojh1CBIwx5bGqQYNAiuPevCo6oHoDwUJkIB2haLx1Q== +"@commitlint/config-angular-type-enum@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-angular-type-enum/-/config-angular-type-enum-8.3.4.tgz#2ccc316ed072935c71e0abae916a72f70e43feae" + integrity sha512-V8DJ9G3vd8/g55euhwqNPv9gycqbNGfJsswpga7RP0tetzcekkXeE9fXnFBJklqzXrjwUmP8Of5eEsGmbt39IQ== -"@commitlint/config-angular@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-angular/-/config-angular-8.1.0.tgz#ed338308cd53186a93e78ed92394c8a89cc50962" - integrity sha512-r/VD79p7kELa33/giFW2NXcklQ7J85nlEtUWCx6R+abyvUHjrhPQDfPXuHaFU2hVH7NxX5ziBYf2k0TbrUD7Ww== +"@commitlint/config-angular@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-angular/-/config-angular-8.3.4.tgz#cea40e8184d36648eb09f9f7c8eefd92ab14f205" + integrity sha512-mFg1Yj2xFDBJJyltGP3RLqZOk89HuNK1ttOcRA9lsTjTVVu4MrNv5sQ1LkW645xn4Vy9zgxlB0CrR4LXEg5QpQ== dependencies: - "@commitlint/config-angular-type-enum" "^8.1.0" + "@commitlint/config-angular-type-enum" "^8.3.4" -"@commitlint/ensure@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-8.1.0.tgz#6c669f85c3005ed15c8141d83cf5312c43001613" - integrity sha512-dBU4CcjN0vJSDNOeSpaHNgQ1ra444u4USvI6PTaHVAS4aeDpZ5Cds1rxkZNsocu48WNycUu0jP84+zjcw2pPLQ== +"@commitlint/ensure@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-8.3.4.tgz#6931677e4ca0fde71686ae3b7a367261647a341d" + integrity sha512-8NW77VxviLhD16O3EUd02lApMFnrHexq10YS4F4NftNoErKbKaJ0YYedktk2boKrtNRf/gQHY/Qf65edPx4ipw== dependencies: - lodash "4.17.14" + lodash "4.17.15" -"@commitlint/execute-rule@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-8.1.0.tgz#e8386bd0836b3dcdd41ebb9d5904bbeb447e4715" - integrity sha512-+vpH3RFuO6ypuCqhP2rSqTjFTQ7ClzXtUvXphpROv9v9+7zH4L+Ex+wZLVkL8Xj2cxefSLn/5Kcqa9XyJTn3kg== +"@commitlint/execute-rule@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-8.3.4.tgz#1b63f0713b197889d90b76f9eea1abc010d256b1" + integrity sha512-f4HigYjeIBn9f7OuNv5zh2y5vWaAhNFrfeul8CRJDy82l3Y+09lxOTGxfF3uMXKrZq4LmuK6qvvRCZ8mUrVvzQ== -"@commitlint/format@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-8.1.0.tgz#c3f3ca78bb74cbc1cce1368c0974b0cb8f31b98e" - integrity sha512-D0cmabUTQIKdABgt08d9JAvO9+lMRAmkcsZx8TMScY502R67HCw77JhzRDcw1RmqX5rN8JO6ZjDHO92Pbwlt+Q== +"@commitlint/format@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-8.3.4.tgz#7cd1f0ba5a3289c8d14d7dac29ee1fc1597fe1d9" + integrity sha512-809wlQ/ND6CLZON+w2Rb3YM2TLNDfU2xyyqpZeqzf2reJNpySMSUAeaO/fNDJSOKIsOsR3bI01rGu6hv28k+Nw== dependencies: chalk "^2.0.1" -"@commitlint/is-ignored@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-8.1.0.tgz#c0583fa3c641b2d4898be1443e70e9c467429de2" - integrity sha512-HUSxx6kuLbqrQ8jb5QRzo+yR+CIXgA9HNcIcZ1qWrb+O9GOixt3mlW8li1IcfIgfODlaWoxIz0jYCxR08IoQLg== +"@commitlint/is-ignored@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-8.3.4.tgz#a78dee0dda732219fa513669480df77e92643402" + integrity sha512-9RTWJvOW2ZvOh09xRnw7wQhcSp24ekeChDPAoZV13d5cTay0qcGFFthvwHs6URstKuu6Iasoxswtq0HmTWvoAg== dependencies: "@types/semver" "^6.0.1" - semver "6.1.1" + semver "6.3.0" -"@commitlint/lint@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-8.1.0.tgz#ad10f4885c06f14c71de11dcd6bf2ca54a395141" - integrity sha512-WYjbUgtqvnlVH3S3XPZMAa+N7KO0yQ+GuUG20Qra+EtER6SRYawykmEs4wAyrmY8VcFXUnKgSlIQUsqmGKwNZQ== +"@commitlint/lint@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-8.3.4.tgz#fed31a63656a2d7def88e8963691ce788899216e" + integrity sha512-ws1JLs7rNAcwlfYLKh0xhs3RNMcT4dYjyG0US/JenmSCrttzfAct+7IvdkAjkj6/3jsOn6fYaV4MhE6hfdPC9A== dependencies: - "@commitlint/is-ignored" "^8.1.0" - "@commitlint/parse" "^8.1.0" - "@commitlint/rules" "^8.1.0" + "@commitlint/is-ignored" "^8.3.4" + "@commitlint/parse" "^8.3.4" + "@commitlint/rules" "^8.3.4" babel-runtime "^6.23.0" - lodash "4.17.14" + lodash "4.17.15" -"@commitlint/load@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-8.1.0.tgz#63b72ae5bb9152b8fa5b17c5428053032a9a49c8" - integrity sha512-ra02Dvmd7Gp1+uFLzTY3yGOpHjPzl5T9wYg/xrtPJNiOWXvQ0Mw7THw+ucd1M5iLUWjvdavv2N87YDRc428wHg== +"@commitlint/load@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-8.3.4.tgz#6a0832362451b959f6aa47da8e44c2e05572b114" + integrity sha512-B4MylKvT02UE3VHC5098OHxsrgkADUy5AD4Cdkiy7oX/edWypEmvK7Wuns3B9dwluWP/iFM6daoWtpkCVZoRwQ== dependencies: - "@commitlint/execute-rule" "^8.1.0" - "@commitlint/resolve-extends" "^8.1.0" + "@commitlint/execute-rule" "^8.3.4" + "@commitlint/resolve-extends" "^8.3.4" babel-runtime "^6.23.0" chalk "2.4.2" cosmiconfig "^5.2.0" - lodash "4.17.14" + lodash "4.17.15" resolve-from "^5.0.0" -"@commitlint/message@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-8.1.0.tgz#8fb8046ddaa7e5c846a79da7cdbd15cf1a7770ae" - integrity sha512-AjHq022G8jQQ/3YrBOjwVBD4xF75hvC3vcvFoBIb7cC8vad1QWq+1w+aks0KlEK5IW+/+7ORZXIH+oyW7h3+8A== +"@commitlint/message@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-8.3.4.tgz#b4e50d14aa6e15a5ad0767b952a7953f3681d768" + integrity sha512-nEj5tknoOKXqBsaQtCtgPcsAaf5VCg3+fWhss4Vmtq40633xLq0irkdDdMEsYIx8rGR0XPBTukqzln9kAWCkcA== -"@commitlint/parse@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-8.1.0.tgz#833243c6d848e7a7e775a283b38697166ed2fd22" - integrity sha512-n4fEbZ5kdK5HChvne7Mj8rGGkKMfA4H11IuWiWmmMzgmZTNb/B04LPrzdUm4lm3f10XzM2JMM7PLXqofQJOGvA== +"@commitlint/parse@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-8.3.4.tgz#d741f8b9104b35d0f4c10938165b20cbf167f81e" + integrity sha512-b3uQvpUQWC20EBfKSfMRnyx5Wc4Cn778bVeVOFErF/cXQK725L1bYFvPnEjQO/GT8yGVzq2wtLaoEqjm1NJ/Bw== dependencies: conventional-changelog-angular "^1.3.3" - conventional-commits-parser "^2.1.0" + conventional-commits-parser "^3.0.0" lodash "^4.17.11" -"@commitlint/read@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-8.1.0.tgz#effe07c965ba1735a5f7f8b7b19ac4d98c887507" - integrity sha512-PKsGMQFEr2sX/+orI71b82iyi8xFqb7F4cTvsLxzB5x6/QutxPVM3rg+tEVdi6rBKIDuqRIp2puDZQuREZs3vg== +"@commitlint/read@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-8.3.4.tgz#81a34283d8cd7b2acdf57829a91761e9c7791455" + integrity sha512-FKv1kHPrvcAG5j+OSbd41IWexsbLhfIXpxVC/YwQZO+FR0EHmygxQNYs66r+GnhD1EfYJYM4WQIqd5bJRx6OIw== dependencies: - "@commitlint/top-level" "^8.1.0" + "@commitlint/top-level" "^8.3.4" "@marionebl/sander" "^0.6.0" babel-runtime "^6.23.0" - git-raw-commits "^1.3.0" + git-raw-commits "^2.0.0" -"@commitlint/resolve-extends@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-8.1.0.tgz#ed67f2ee484160ac8e0078bae52f172625157472" - integrity sha512-r/y+CeKW72Oa9BUctS1+I/MFCDiI3lfhwfQ65Tpfn6eZ4CuBYKzrCRi++GTHeAFKE3y8q1epJq5Rl/1GBejtBw== +"@commitlint/resolve-extends@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-8.3.4.tgz#815b646efbf9bc77c44925f619336da0027d7a68" + integrity sha512-M34RLaAW1eGWgtkVtotHfPaJa+cZIARe8twKItd7RhWs7n/1W2py9GTFIiIEq95LBN1uah5vm1WQHsfLqPZYHA== dependencies: "@types/node" "^12.0.2" import-fresh "^3.0.0" - lodash "4.17.14" + lodash "4.17.15" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-8.1.0.tgz#009c64a8a23feb4647e5a25057997be62a272c8a" - integrity sha512-hlM8VfNjsOkbvMteFyqn0c3akiUjqG09Iid28MBLrXl/d+8BR3eTzwJ4wMta4oz/iqGyrIywvg1FpHrV977MPA== +"@commitlint/rules@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-8.3.4.tgz#41da7e16c6b89af268fe81c87a158c1fd2ac82b1" + integrity sha512-xuC9dlqD5xgAoDFgnbs578cJySvwOSkMLQyZADb1xD5n7BNcUJfP8WjT9W1Aw8K3Wf8+Ym/ysr9FZHXInLeaRg== dependencies: - "@commitlint/ensure" "^8.1.0" - "@commitlint/message" "^8.1.0" - "@commitlint/to-lines" "^8.1.0" + "@commitlint/ensure" "^8.3.4" + "@commitlint/message" "^8.3.4" + "@commitlint/to-lines" "^8.3.4" babel-runtime "^6.23.0" -"@commitlint/to-lines@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-8.1.0.tgz#5bf2597f46acacec4b1b3dba832ac8934798b22a" - integrity sha512-Lh4OH1bInI8GME/7FggS0/XkIMEJdTObMbXRyPRGaPcWH5S7zpB6y+b4qjzBHXAbEv2O46QAAMjZ+ywPQCpmYQ== +"@commitlint/to-lines@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-8.3.4.tgz#ce24963b6d86dbe51d88d5e3028ab28f38562e2e" + integrity sha512-5AvcdwRsMIVq0lrzXTwpbbG5fKRTWcHkhn/hCXJJ9pm1JidsnidS1y0RGkb3O50TEHGewhXwNoavxW9VToscUA== -"@commitlint/top-level@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-8.1.0.tgz#f1950de73a1f76ef5c9e753a6b77402e0755d677" - integrity sha512-EvQuofuA/+0l1w9pkG/PRyIwACmZdIh9qxyax7w7mR8qqmSHscqf2jARIylh1TOx0uI9egO8MuPLiwC1RwyREA== +"@commitlint/top-level@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-8.3.4.tgz#803fc6e8f5be5efa5f3551761acfca961f1d8685" + integrity sha512-nOaeLBbAqSZNpKgEtO6NAxmui1G8ZvLG+0wb4rvv6mWhPDzK1GNZkCd8FUZPahCoJ1iHDoatw7F8BbJLg4nDjg== dependencies: find-up "^4.0.0" -"@compodoc/compodoc@^1.1.9": - version "1.1.10" - resolved "https://registry.yarnpkg.com/@compodoc/compodoc/-/compodoc-1.1.10.tgz#53f47acaa337fe464c524744f539c73aabcf1175" - integrity sha512-dBAHD2gdIVYIa2a0Y5/Pgyoy/XQDLnqC3lUrd6Crp9HnCTMXIfHWygOUTo0u8wWhxqXhLo9ZMwGRsC9tK61dvA== +"@compodoc/compodoc@^1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@compodoc/compodoc/-/compodoc-1.1.11.tgz#44df8522479e5039911d8b2f10c24198831c5ede" + integrity sha512-3PGTf64Eug1SIcdQole2KkVftBMFjKzecBytLHy4+MQYcblAQM0O3a4GoxuWwN7cTawVq4eqSJTtf6My1I/oHA== dependencies: "@compodoc/ngd-transformer" "^2.0.0" chalk "^2.4.2" cheerio "^1.0.0-rc.3" - chokidar "^3.0.2" - colors "^1.3.3" - commander "^2.20.0" + chokidar "^3.1.1" + colors "^1.4.0" + commander "^3.0.2" cosmiconfig "^5.2.1" + decache "^4.5.1" fancy-log "^1.3.3" findit2 "^2.2.3" fs-extra "^8.0.1" glob "^7.1.4" - handlebars "^4.1.2" + handlebars "^4.3.3" html-entities "^1.2.1" - i18next "^17.0.3" + i18next "^17.0.16" inside "^1.0.0" json5 "^2.1.0" live-server "^1.2.1" - lodash "^4.17.11" + lodash "^4.17.15" + loglevel "^1.6.4" + loglevel-plugin-prefix "^0.8.4" lunr "^2.3.6" marked "^0.7.0" minimist "^1.2.0" opencollective-postinstall "^2.0.2" os-name "^3.1.0" - pdfmake "^0.1.57" - semver "^6.1.1" + pdfmake "^0.1.60" + semver "^6.3.0" traverse "^0.6.6" ts-simple-ast "12.4.0" - uuid "^3.3.2" + uuid "^3.3.3" "@compodoc/ngd-core@~2.0.0": version "2.0.0" @@ -506,31 +1158,38 @@ is-absolute "^1.0.0" is-negated-glob "^1.0.0" -"@fortawesome/angular-fontawesome@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.4.0.tgz#ab794362a5e37124b834564dcb55ed1c0ce0413a" - integrity sha512-DYVXdCzwQo6d0CxVMRK+10LpBAvYN9xigWeQW4wKYq/Czd5es46nPMKixB5rHfNViECwwlM2gTM61K4DpxlJxg== +"@fortawesome/angular-fontawesome@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.5.0.tgz#5dbc01714b4af45a2ecb8dd63a6f8b462a8337e1" + integrity sha512-5IR/jNMddiEpgApcqSMfp7l5kZqOtxQYzkSLW6iZ4MZHbQQ+Kc9tu9qi2hro6VFSk/sPxeYEzkzGZUNrMYiwOg== dependencies: tslib "^1.9.0" -"@fortawesome/fontawesome-common-types@^0.2.19": - version "0.2.19" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.19.tgz#754a0f85e1290858152e1c05700ab502b11197f1" - integrity sha512-nd2Ul/CUs8U9sjofQYAALzOGpgkVJQgEhIJnOHaoyVR/LeC3x2mVg4eB910a4kS6WgLPebAY0M2fApEI497raQ== +"@fortawesome/fontawesome-common-types@^0.2.26": + version "0.2.26" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.26.tgz#6e0b13a752676036f8196f8a1500d53a27b4adc1" + integrity sha512-CcM/fIFwZlRdiWG/25xE/wHbtyUuCtqoCTrr6BsWw7hH072fR++n4L56KPydAr3ANgMJMjT8v83ZFIsDc7kE+A== -"@fortawesome/fontawesome-svg-core@^1.2.19": - version "1.2.19" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.19.tgz#0eca1ce9285c3d99e6e340633ee8f615f9d1a2e0" - integrity sha512-D4ICXg9oU08eF9o7Or392gPpjmwwgJu8ecCFusthbID95CLVXOgIyd4mOKD9Nud5Ckz+Ty59pqkNtThDKR0erA== +"@fortawesome/fontawesome-svg-core@^1.2.26": + version "1.2.26" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.26.tgz#671569271d6b532cdea5e3deb8ff16f8b7ac251d" + integrity sha512-3Dfd/v2IztP1TxKOxZiB5+4kaOZK9mNy0KU1vVK7nFlPWz3gzxrCWB+AloQhQUoJ8HhGqbzjliK89Vl7PExGbw== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.19" + "@fortawesome/fontawesome-common-types" "^0.2.26" -"@fortawesome/free-solid-svg-icons@^5.9.0": - version "5.9.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.9.0.tgz#1c73e7bac17417d23f934d83f7fff5b100a7fda9" - integrity sha512-U8YXPfWcSozsCW0psCtlRGKjjRs5+Am5JJwLOUmVHFZbIEWzaz4YbP84EoPwUsVmSAKrisu3QeNcVOtmGml0Xw== +"@fortawesome/free-solid-svg-icons@^5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.12.0.tgz#8decac5844e60453cc0c7c51437d1461df053a35" + integrity sha512-CnpsWs6GhTs9ekNB3d8rcO5HYqRkXbYKf2YNiAlTWbj5eVlPqsd/XH1F9If8jkcR1aegryAbln/qYeKVZzpM0g== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.19" + "@fortawesome/fontawesome-common-types" "^0.2.26" + +"@kolkov/ngx-gallery@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@kolkov/ngx-gallery/-/ngx-gallery-1.0.9.tgz#38f66bb501fe5b3fac83ae6e49aee1d803ecdf0b" + integrity sha512-2B8qb2MvMAHtkThOtfUqNHbk9WqjJw93JGrOSVRI7VBDdoc5pwrwTWdSRAyILfGrocRL+H3Z4EcKlI79FXwm3w== + dependencies: + tslib "^1.9.0" "@marionebl/sander@^0.6.0": version "0.6.1" @@ -549,51 +1208,56 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@ng-bootstrap/ng-bootstrap@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-4.2.1.tgz#aa87f2ee6c4def0be087d4f456930b1e0761d91a" - integrity sha512-7etP9X9jKIkbuDzU3ngI2jQhHQDZxIu0ErvlkHb7u7YH9akIOLVkXvz2mTMvcFABWZhze64UjFuEgR46b6WGSw== +"@ng-bootstrap/ng-bootstrap@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-5.1.5.tgz#862f82c0c51c02076538fd266141f45e4209e608" + integrity sha512-DpeKD2LOv2LFSzYOOiWd6qv52i7KS2VY9SQs4533OPspJKq7mKo6zZ3jgAV+tPP+Bit1+pF3hkVpfh+rFMCejA== dependencies: tslib "^1.9.0" -"@ngtools/webpack@8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-8.0.6.tgz#c6b5416710913b24b741a17c8f255e54f42c9abf" - integrity sha512-ulu+5lLt4RjmcCXbmaGCjqjuOWt18DVek/Sq4HFE9E7zP+n7HercsU6h+9PrtaZThj9NB0B7A+afRB5aAQN/bQ== +"@ngtools/webpack@8.3.21": + version "8.3.21" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-8.3.21.tgz#d28f2b66a8aeced5260c42ae722192ec5d5e4e56" + integrity sha512-DGqmFQ52sV4uB3y3spQTNLa69oU5cwd1yIqMB4GSM+Qp+hozdzrPA2gVH90N2DDhWe8icsSQHAtZQiR9+BDL8g== dependencies: - "@angular-devkit/core" "8.0.6" + "@angular-devkit/core" "8.3.21" enhanced-resolve "4.1.0" rxjs "6.4.0" tree-kill "1.2.1" - webpack-sources "1.3.0" + webpack-sources "1.4.3" "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@schematics/angular@8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.0.6.tgz#13b81ac1130396dc9676f8119e9d10cc7f615237" - integrity sha512-F0/MrbvrJQJIjt0GwEkmf9PZUX0xQlCjlDcH6U7yBni0/+R5Gd5g3G0f12fsSa2iAwpwrLkKpiQluj29eFituQ== +"@schematics/angular@8.3.21": + version "8.3.21" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.3.21.tgz#4902e0b6e8be47006859009bf96a026e3d39dd27" + integrity sha512-KahQ+dHvTsGOZwY6IdzqJZLDEn0G89rrK3OY+7okZujoaLM+LXhxlPoznW1udnZJVTa3VNxYGx11fkgLtRJRqA== dependencies: - "@angular-devkit/core" "8.0.6" - "@angular-devkit/schematics" "8.0.6" + "@angular-devkit/core" "8.3.21" + "@angular-devkit/schematics" "8.3.21" -"@schematics/update@0.800.6": - version "0.800.6" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.800.6.tgz#42bde01071bab9311632dc511a1234c8ecf7908b" - integrity sha512-vrzGIJtMiwLWl96+aJXMYrPgPtktLRpY8ZiNnlLm3pMDmeg08uButRh/pQGt02HuO/apTNJ5g0bmG8K5wS4I5A== +"@schematics/update@0.803.21": + version "0.803.21" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.803.21.tgz#572c955bb132348bca03a128491ae264b0068a0a" + integrity sha512-D3BRvEBF2cJEgogvFaNOfqtTFHHv/ctSRfOeAYWjUxILtb+2DpuZ9h5QYDFhN9MPgz/vRaOqFORa3sEZCRkX4g== dependencies: - "@angular-devkit/core" "8.0.6" - "@angular-devkit/schematics" "8.0.6" + "@angular-devkit/core" "8.3.21" + "@angular-devkit/schematics" "8.3.21" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" - pacote "9.5.0" + pacote "9.5.5" rxjs "6.4.0" - semver "6.0.0" + semver "6.3.0" semver-intersect "1.4.0" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -620,7 +1284,7 @@ dependencies: "@types/jasmine" "*" -"@types/minimatch@*": +"@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== @@ -635,10 +1299,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.9.5.tgz#162b864bc70be077e6db212b322754917929e976" integrity sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ== -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/q@^0.0.32": version "0.0.32" @@ -851,26 +1515,50 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== +acorn-node@^1.3.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" acorn-walk@^6.1.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn-walk@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.0.0.tgz#c8ba6f0f1aac4b0a9e32d1f0af12be769528f36b" + integrity sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg== + acorn@^5.0.0: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.5, acorn@^6.0.7: +acorn@^6.0.7: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== +acorn@^6.2.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== + +acorn@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= + adm-zip@^0.4.9: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -907,15 +1595,15 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +ajv@6.10.2, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -932,30 +1620,19 @@ ajv@^5.0.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.1.0, ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -angular-cli-ghpages@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/angular-cli-ghpages/-/angular-cli-ghpages-0.5.3.tgz#25b2fea04f0ab6c4e9ab7fea8237bb8195bab8c9" - integrity sha512-6ttpK5gghBXaWVnfXV9Ol0LRFwbmLwKPykjGn3HsHHyAENhJ5aGUSO89TlgOJWHaVW0x57SH3HHZr6wgSnw4/g== +angular-cli-ghpages@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/angular-cli-ghpages/-/angular-cli-ghpages-0.6.2.tgz#1caec218f77cc7faa58e69fe5d64e77db2a688bf" + integrity sha512-T4O8VMcj9M7MlFWvg1emeNzLnylKuDkEcBkdymDZNRwVGaYEHkte1UQwbph5QhIHPFOjyT9DHOj9fx1Cp3fCQA== dependencies: - commander "2.9.0" - denodeify "1.2.1" - fs-extra "3.0.1" - gh-pages "0.12.0" + commander "^3.0.0-0" + fs-extra "^8.1.0" + gh-pages "^2.1.0" ansi-align@^2.0.0: version "2.0.0" @@ -964,6 +1641,11 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-colors@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" @@ -976,10 +1658,12 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" ansi-gray@^0.1.1: version "0.1.1" @@ -1008,6 +1692,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1020,6 +1709,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -1033,10 +1730,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09" - integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -1113,10 +1810,10 @@ array-differ@^1.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= -array-differ@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" - integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== array-filter@~0.0.0: version "0.0.1" @@ -1138,6 +1835,11 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-from@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" + integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" @@ -1153,13 +1855,18 @@ array-reduce@~0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-union@^1.0.1, array-union@^1.0.2: +array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1180,6 +1887,11 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1253,19 +1965,7 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.2.tgz#612a4ab45ef42a70cde806bad86ee6db047e8385" - integrity sha1-YSpKtF70KnDN6Aa62G7m2wR+g4U= - dependencies: - lodash "^4.14.0" - -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.5.0, async@^2.6.2: +async@^2.5.0, async@^2.6.1, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -1282,17 +1982,18 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357" - integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ== +autoprefixer@9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" + integrity sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw== dependencies: - browserslist "^4.5.4" - caniuse-lite "^1.0.30000957" + browserslist "^4.6.3" + caniuse-lite "^1.0.30000980" + chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.14" - postcss-value-parser "^3.3.1" + postcss "^7.0.17" + postcss-value-parser "^4.0.0" aws-sign2@~0.7.0: version "0.7.0" @@ -1304,7 +2005,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -axobject-query@^2.0.2: +axobject-query@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== @@ -1505,6 +2206,13 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -2160,10 +2868,10 @@ boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -bootstrap@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.3.1.tgz#280ca8f610504d99d7b6b4bfc4b68cec601704ac" - integrity sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag== +bootstrap@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01" + integrity sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA== boxen@^1.2.1: version "1.3.0" @@ -2202,14 +2910,14 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2: +braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brfs@^1.3.0, brfs@^1.4.0: +brfs@^1.4.0: version "1.6.1" resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ== @@ -2219,6 +2927,16 @@ brfs@^1.3.0, brfs@^1.4.0: static-module "^2.2.0" through2 "^2.0.0" +brfs@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brfs/-/brfs-2.0.2.tgz#44237878fa82aa479ce4f5fe2c1796ec69f07845" + integrity sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ== + dependencies: + quote-stream "^1.0.1" + resolve "^1.1.5" + static-module "^3.0.2" + through2 "^2.0.0" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2306,16 +3024,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.5.5: - version "4.5.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.5.tgz#fe1a352330d2490d5735574c149a85bc18ef9b82" - integrity sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA== - dependencies: - caniuse-lite "^1.0.30000960" - electron-to-chromium "^1.3.124" - node-releases "^1.1.14" - -browserslist@^4.5.4: +browserslist@4.6.6: version "4.6.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== @@ -2324,6 +3033,15 @@ browserslist@^4.5.4: electron-to-chromium "^1.3.191" node-releases "^1.1.25" +browserslist@^4.6.0, browserslist@^4.6.3, browserslist@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" + integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== + dependencies: + caniuse-lite "^1.0.30001017" + electron-to-chromium "^1.3.322" + node-releases "^1.1.44" + browserstack@^1.5.1: version "1.5.2" resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.2.tgz#17d8bb76127a1cc0ea416424df80d218f803673f" @@ -2408,16 +3126,38 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.0.2, cacache@^11.3.1, cacache@^11.3.2, cacache@^11.3.3: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== +cacache@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c" + integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" glob "^7.1.4" graceful-fs "^4.1.15" + infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" @@ -2462,7 +3202,7 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callsite@1.0.0: +callsite@1.0.0, callsite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= @@ -2514,12 +3254,17 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@1.0.30000974: - version "1.0.30000974" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8" - integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww== +caniuse-lite@1.0.30000989: + version "1.0.30000989" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" + integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== + +caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30001017: + version "1.0.30001019" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz#857e3fccaad2b2feb3f1f6d8a8f62d747ea648e1" + integrity sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g== -caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000960, caniuse-lite@^1.0.30000984: +caniuse-lite@^1.0.30000984: version "1.0.30000984" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz#dc96c3c469e9bcfc6ad5bdd24c77ec918ea76fe0" integrity sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA== @@ -2539,15 +3284,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" - integrity sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g== - dependencies: - ansi-styles "^3.2.0" - escape-string-regexp "^1.0.5" - supports-color "^5.2.0" - chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2568,6 +3304,14 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2590,7 +3334,22 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2.1.1, chokidar@^2.1.5: +"chokidar@>=2.0.0 <4.0.0", chokidar@^3.1.1, chokidar@^3.2.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + +chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2.1.1: version "2.1.6" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== @@ -2609,27 +3368,31 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2. optionalDependencies: fsevents "^1.2.7" -chokidar@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" - integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: - anymatch "^3.0.1" - braces "^3.0.2" - glob-parent "^5.0.0" - is-binary-path "^2.1.0" - is-glob "^4.0.1" + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" normalize-path "^3.0.0" - readdirp "^3.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - fsevents "^2.0.6" + fsevents "^1.2.7" chownr@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== -chrome-trace-event@^1.0.0: +chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== @@ -2654,10 +3417,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-dependency-plugin@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" - integrity sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA== +circular-dependency-plugin@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93" + integrity sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw== class-utils@^0.3.5: version "0.3.6" @@ -2681,12 +3444,12 @@ cli-boxes@^1.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" @@ -2720,15 +3483,23 @@ cliui@^5.0.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" - integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - for-own "^1.0.0" is-plain-object "^2.0.4" - kind-of "^6.0.0" - shallow-clone "^1.0.0" + kind-of "^6.0.2" + shallow-clone "^3.0.0" clone@^1.0.1: version "1.0.4" @@ -2755,14 +3526,14 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codelyzer@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-5.1.0.tgz#a0eb89497622679ea4c53b6974aa45598f06a4b5" - integrity sha512-QiyY2/oDQnYx4mAVEDqr+z9MwrOto18tQFjExiuRChXCy0yvngS5fQpWIxvAGpbOmZFiR1PRTRLbEI71u10maA== +codelyzer@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-5.2.1.tgz#44fd431e128009f38c761828c33ebacba9549d32" + integrity sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA== dependencies: app-root-path "^2.2.1" aria-query "^3.0.0" - axobject-query "^2.0.2" + axobject-query "2.0.2" css-selector-tokenizer "^0.7.1" cssauron "^1.4.0" damerau-levenshtein "^1.0.4" @@ -2778,13 +3549,6 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -collections@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/collections/-/collections-0.2.2.tgz#1f23026b2ef36f927eecc901e99c5f0d48fa334e" - integrity sha1-HyMCay7zb5J+7MkB6ZxfDUj6M04= - dependencies: - weak-map "1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2792,11 +3556,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" @@ -2807,11 +3583,16 @@ colors@1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= -colors@^1.1.0, colors@^1.3.3, colors@latest: +colors@^1.1.0, colors@latest: version "1.3.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== +colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2819,18 +3600,16 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= - dependencies: - graceful-readlink ">= 1.0.0" - -commander@^2.11.0, commander@^2.12.1, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.0: +commander@^2.11.0, commander@^2.12.1, commander@^2.18.0, commander@^2.20.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^3.0.0-0, commander@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2978,71 +3757,73 @@ conventional-changelog-angular@^1.3.3: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-angular@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" - integrity sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA== +conventional-changelog-angular@^5.0.5: + version "5.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" + integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA== dependencies: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-atom@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz#dc88ce650ffa9ceace805cbe70f88bfd0cb2c13a" - integrity sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ== +conventional-changelog-atom@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.3.tgz#3bd14280aa09fe3ec49a0e8fe97b5002db02aad4" + integrity sha512-szZe2ut97qNO6vCCMkm1I/tWu6ol4Rr8a9Lx0y/VlpDnpY0PNp+oGpFgU55lplhx+I3Lro9Iv4/gRj0knfgjzg== dependencies: q "^1.5.1" -conventional-changelog-codemirror@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz#acc046bc0971460939a0cc2d390e5eafc5eb30da" - integrity sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ== +conventional-changelog-codemirror@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.3.tgz#ebc088154684f8f5171446b8d546ba6b460d46f2" + integrity sha512-t2afackdgFV2yBdHhWPqrKbpaQeVnz2hSJKdWqjasPo5EpIB6TBL0er3cOP1mnGQmuzk9JSvimNSuqjWGDtU5Q== dependencies: q "^1.5.1" -conventional-changelog-config-spec@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-config-spec/-/conventional-changelog-config-spec-1.0.0.tgz#fc17bf0ab7b7f2a6b0c91bccc1bd55819d3ee79e" - integrity sha512-RR3479x5Qw7XWkmNDYx/kOnsQJW+FZBIakURG/Dg7FkTaCrGjAkgfH96pQs9SyOEZI07USEXy7FjUDWYP8bt3Q== +conventional-changelog-config-spec@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz#874a635287ef8b581fd8558532bf655d4fb59f2d" + integrity sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ== -conventional-changelog-conventionalcommits@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-3.0.2.tgz#3a380a14ecd6f5056da6d460e30dd6c0c9f1aebe" - integrity sha512-w1+fQSDnm/7+sPKIYC5nfRVYDszt+6HdWizrigSqWFVIiiBVzkHGeqDLMSHc+Qq9qssHVAxAak5206epZyK87A== +conventional-changelog-conventionalcommits@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.2.3.tgz#22855b32d57d0328951c1c2dc01b172a5f24ea37" + integrity sha512-atGa+R4vvEhb8N/8v3IoW59gCBJeeFiX6uIbPu876ENAmkMwsenyn0R21kdDHJFLQdy6zW4J6b4xN8KI3b9oww== dependencies: compare-func "^1.3.1" + lodash "^4.17.15" q "^1.5.1" -conventional-changelog-core@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.2.tgz#de41e6b4a71011a18bcee58e744f6f8f0e7c29c0" - integrity sha512-cssjAKajxaOX5LNAJLB+UOcoWjAIBvXtDMedv/58G+YEmAXMNfC16mmPl0JDOuVJVfIqM0nqQiZ8UCm8IXbE0g== +conventional-changelog-core@^4.0.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.1.4.tgz#39be27fca6ef20a0f998d7a3a1e97cfa8a055cb6" + integrity sha512-LO58ZbEpp1Ul+y/vOI8rJRsWkovsYkCFbOCVgi6UnVfU8WC0F8K8VQQwaBZWWUpb6JvEiN4GBR5baRP2txZ+Vg== dependencies: - conventional-changelog-writer "^4.0.5" - conventional-commits-parser "^3.0.2" + add-stream "^1.0.0" + conventional-changelog-writer "^4.0.11" + conventional-commits-parser "^3.0.8" dateformat "^3.0.0" get-pkg-repo "^1.0.0" git-raw-commits "2.0.0" git-remote-origin-url "^2.0.0" - git-semver-tags "^2.0.2" - lodash "^4.2.1" + git-semver-tags "^3.0.1" + lodash "^4.17.15" normalize-package-data "^2.3.5" q "^1.5.1" read-pkg "^3.0.0" read-pkg-up "^3.0.0" through2 "^3.0.0" -conventional-changelog-ember@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz#284ffdea8c83ea8c210b65c5b4eb3e5cc0f4f51a" - integrity sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg== +conventional-changelog-ember@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.4.tgz#c29b78e4af7825cbecb6c3fd6086ca5c09471ac1" + integrity sha512-q1u73sO9uCnxN4TSw8xu6MRU8Y1h9kpwtcdJuNRwu/LSKI1IE/iuNSH5eQ6aLlQ3HTyrIpTfUuVybW4W0F17rA== dependencies: q "^1.5.1" -conventional-changelog-eslint@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.2.tgz#e9eb088cda6be3e58b2de6a5aac63df0277f3cbe" - integrity sha512-Yi7tOnxjZLXlCYBHArbIAm8vZ68QUSygFS7PgumPRiEk+9NPUeucy5Wg9AAyKoBprSV3o6P7Oghh4IZSLtKCvQ== +conventional-changelog-eslint@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.4.tgz#8f4736a23e0cd97e890e76fccc287db2f205f2ff" + integrity sha512-CPwTUENzhLGl3auunrJxiIEWncAGaby7gOFCdj2gslIuOFJ0KPJVOUhRz4Da/I53sdo/7UncUJkiLg94jEsjxg== dependencies: q "^1.5.1" @@ -3053,58 +3834,58 @@ conventional-changelog-express@^2.0.1: dependencies: q "^1.5.1" -conventional-changelog-jquery@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz#7eb598467b83db96742178e1e8d68598bffcd7ae" - integrity sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ== +conventional-changelog-jquery@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.6.tgz#460236ad8fb1d29ff932a14fe4e3a45379b63c5e" + integrity sha512-gHAABCXUNA/HjnZEm+vxAfFPJkgtrZvCDIlCKfdPVXtCIo/Q0lN5VKpx8aR5p8KdVRQFF3OuTlvv5kv6iPuRqA== dependencies: q "^1.5.1" -conventional-changelog-jshint@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz#11c0e8283abf156a4ff78e89be6fdedf9bd72202" - integrity sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg== +conventional-changelog-jshint@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.3.tgz#ef6e2caf2ee6ffdfda78fcdf7ce87cf6c512d728" + integrity sha512-Pc2PnMPcez634ckzr4EOWviwRSpZcURaK7bjyD9oK6N5fsC/a+3G7LW5m/JpcHPhA9ZxsfIbm7uqZ3ZDGsQ/sw== dependencies: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-preset-loader@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.1.1.tgz#65bb600547c56d5627d23135154bcd9a907668c4" - integrity sha512-K4avzGMLm5Xw0Ek/6eE3vdOXkqnpf9ydb68XYmCc16cJ99XMMbc2oaNMuPwAsxVK6CC1yA4/I90EhmWNj0Q6HA== +conventional-changelog-preset-loader@^2.2.0, conventional-changelog-preset-loader@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz#580fa8ab02cef22c24294d25e52d7ccd247a9a6a" + integrity sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ== -conventional-changelog-writer@^4.0.5: - version "4.0.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.6.tgz#24db578ac8e7c89a409ef9bba12cf3c095990148" - integrity sha512-ou/sbrplJMM6KQpR5rKFYNVQYesFjN7WpNGdudQSWNi6X+RgyFUcSv871YBYkrUYV9EX8ijMohYVzn9RUb+4ag== +conventional-changelog-writer@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" + integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== dependencies: compare-func "^1.3.1" conventional-commits-filter "^2.0.2" dateformat "^3.0.0" - handlebars "^4.1.0" + handlebars "^4.4.0" json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" + lodash "^4.17.15" + meow "^5.0.0" semver "^6.0.0" split "^1.0.0" through2 "^3.0.0" -conventional-changelog@3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.8.tgz#091382b5a0820bf8ec8e75ad2664a3688c31b07d" - integrity sha512-fb3/DOLLrQdNqN0yYn/lT6HcNsAa9A+VTDBqlZBMQcEPPIeJIMI+DBs3yu+eiYOLi22w9oShq3nn/zN6qm1Hmw== - dependencies: - conventional-changelog-angular "^5.0.3" - conventional-changelog-atom "^2.0.1" - conventional-changelog-codemirror "^2.0.1" - conventional-changelog-conventionalcommits "^3.0.2" - conventional-changelog-core "^3.2.2" - conventional-changelog-ember "^2.0.2" - conventional-changelog-eslint "^3.0.2" +conventional-changelog@3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.12.tgz#ede5b6803cfa8af6c7ea97e54ce5519508903afb" + integrity sha512-zyGKwii8Z5zOq1nGFm5jn9Ou1jQ6UBoRT0+nqBIU8fEzh64+AcVxrY97tVuK77Ati0xwpBiFHpDXAW7pkq1jEw== + dependencies: + conventional-changelog-angular "^5.0.5" + conventional-changelog-atom "^2.0.3" + conventional-changelog-codemirror "^2.0.3" + conventional-changelog-conventionalcommits "^4.2.1" + conventional-changelog-core "^4.0.2" + conventional-changelog-ember "^2.0.4" + conventional-changelog-eslint "^3.0.4" conventional-changelog-express "^2.0.1" - conventional-changelog-jquery "^3.0.4" - conventional-changelog-jshint "^2.0.1" - conventional-changelog-preset-loader "^2.1.1" + conventional-changelog-jquery "^3.0.6" + conventional-changelog-jshint "^2.0.3" + conventional-changelog-preset-loader "^2.2.0" conventional-commits-filter@^2.0.2: version "2.0.2" @@ -3114,53 +3895,61 @@ conventional-commits-filter@^2.0.2: lodash.ismatch "^4.4.0" modify-values "^1.0.0" -conventional-commits-parser@^2.1.0: - version "2.1.7" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" - integrity sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ== +conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.5, conventional-commits-parser@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" + integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== dependencies: JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^4.0.0" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^5.0.0" split2 "^2.0.0" - through2 "^2.0.0" + through2 "^3.0.0" trim-off-newlines "^1.0.0" -conventional-commits-parser@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.3.tgz#c3f972fd4e056aa8b9b4f5f3d0e540da18bf396d" - integrity sha512-KaA/2EeUkO4bKjinNfGUyqPTX/6w9JGshuQRik4r/wJz7rUw3+D3fDG6sZSEqJvKILzKXFQuFkpPLclcsAuZcg== +conventional-recommended-bump@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.0.2.tgz#086e3380e8d66ca2b962d84af863a28d532f355a" + integrity sha512-9qWhAweJbT6CAHcCprBYzUb3tySsaRrUx0ckpMprHbtWOBfl3gxakUCBNd/4T3m2Iv9Cb8Y4P2Px3cR5ysXPDw== dependencies: - JSONStream "^1.0.4" - is-text-path "^2.0.0" - lodash "^4.2.1" + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.2.0" + conventional-commits-filter "^2.0.2" + conventional-commits-parser "^3.0.5" + git-raw-commits "2.0.0" + git-semver-tags "^3.0.0" meow "^4.0.0" - split2 "^2.0.0" - through2 "^3.0.0" - trim-off-newlines "^1.0.0" + q "^1.5.1" -conventional-recommended-bump@5.0.0, conventional-recommended-bump@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.0.tgz#019d45a1f3d2cc14a26e9bad1992406ded5baa23" - integrity sha512-CsfdICpbUe0pmM4MTG90GPUqnFgB1SWIR2HAh+vS+JhhJdPWvc0brs8oadWoYGhFOQpQwe57JnvzWEWU0m2OSg== +conventional-recommended-bump@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.0.5.tgz#be7ec24b43bef57108042ea1d49758b58beabc03" + integrity sha512-srkferrB4kACPEbKYltZwX1CQZAEqbQkabKN444mavLRVMetzwJFJf23/+pwvtMsWbd+cc4HaleV1nHke0f8Rw== dependencies: concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.1.1" + conventional-changelog-preset-loader "^2.3.0" conventional-commits-filter "^2.0.2" - conventional-commits-parser "^3.0.2" + conventional-commits-parser "^3.0.8" git-raw-commits "2.0.0" - git-semver-tags "^2.0.2" - meow "^4.0.0" + git-semver-tags "^3.0.1" + meow "^5.0.0" q "^1.5.1" -convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0: +convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3193,27 +3982,36 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz#56186dfddbf9aa1b29c97fa4c796c1be98870da4" - integrity sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw== +copy-webpack-plugin@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" + integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== dependencies: - cacache "^11.3.1" - find-cache-dir "^2.0.0" + cacache "^12.0.3" + find-cache-dir "^2.1.0" glob-parent "^3.1.0" globby "^7.1.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" + is-glob "^4.0.1" + loader-utils "^1.2.3" minimatch "^3.0.4" normalize-path "^3.0.0" - p-limit "^2.1.0" - serialize-javascript "^1.4.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" webpack-log "^2.0.0" -core-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" - integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== +core-js-compat@^3.4.7: + version "3.6.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.2.tgz#314ca8b84d5e71c27c19f1ecda966501b1cf1f10" + integrity sha512-+G28dzfYGtAM+XGvB1C5AS1ZPKfQ47HLhcdeIQdZgQnJVdp7/D0m+W/TErwhgsX6CujRUk/LebB6dCrKrtJrvQ== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" + integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0: version "2.6.9" @@ -3243,6 +4041,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -3309,6 +4118,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + cross-var@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cross-var/-/cross-var-1.1.0.tgz#f0f0d4bb235d95138d1a539842d290f00db71cd6" @@ -3405,6 +4223,14 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + damerau-levenshtein@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" @@ -3460,7 +4286,7 @@ debug@3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3472,6 +4298,13 @@ debuglog@^1.0.1: resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= +decache@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/decache/-/decache-4.5.1.tgz#94a977a88a4188672c96550ec4889582ceecdf49" + integrity sha512-5J37nATc6FmOTLbcsr9qx7Nm28qQyg1SK4xyEHqM0IBkNhWFp0Sm+vKoWYHD8wq+OUEb9jLyaKFfzzd1A9hcoA== + dependencies: + callsite "^1.0.0" + decamelize-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -3520,7 +4353,7 @@ default-require-extensions@^2.0.0: dependencies: strip-bom "^3.0.0" -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -3562,7 +4395,7 @@ del@^2.2.0: pinkie-promise "^2.0.0" rimraf "^2.2.8" -del@^4.1.0: +del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== @@ -3585,11 +4418,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -denodeify@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3830,16 +4658,26 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.6.1, ejs@^2.6.2: +ejs@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6" integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q== -electron-to-chromium@^1.3.124, electron-to-chromium@^1.3.191: +ejs@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.1.tgz#30c8f6ee9948502cc32e85c37a3f8b39b5a614a5" + integrity sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw== + +electron-to-chromium@^1.3.191: version "1.3.194" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.194.tgz#a96452a96d4539131957aade9f634a45721f2819" integrity sha512-w0LHR2YD9Ex1o+Sz4IN2hYzCB8vaFtMNW+yJcBf6SZlVqgFahkne/4rGVJdk4fPF98Gch9snY7PiabOh+vqHNg== +electron-to-chromium@^1.3.322: + version "1.3.328" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.328.tgz#a619575c42f1d5b443103664f25ffa5a80190ee5" + integrity sha512-x4XefnFxDxFwaQ01d/pppJP9meWhOIJ/gtI6/4jqkpsadq79uL7NYSaX64naLmJqvzUBjSrO3IM2+1b/W9KdPg== + elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -3853,11 +4691,21 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +email-addresses@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-3.1.0.tgz#cabf7e085cbdb63008a70319a74e6136188812fb" + integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -3960,6 +4808,23 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.17.0-next.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" + integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + es-abstract@^1.4.3: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" @@ -3981,6 +4846,45 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -3993,6 +4897,33 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-set@^0.1.5, es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4003,6 +4934,18 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escodegen@^1.11.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" + integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^1.8.1: version "1.11.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" @@ -4038,7 +4981,7 @@ escodegen@~1.9.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@^4.0.0: +eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== @@ -4078,6 +5021,11 @@ estraverse@~1.5.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= +estree-is-function@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/estree-is-function/-/estree-is-function-1.0.0.tgz#c0adc29806d7f18a74db7df0f3b2666702e37ad2" + integrity sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA== + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -4098,6 +5046,14 @@ eve@~0.5.1: resolved "https://registry.yarnpkg.com/eve/-/eve-0.5.4.tgz#67d080b9725291d7e389e34c26860dd97f1debaa" integrity sha1-Z9CAuXJSkdfjieNMJoYN2X8d66o= +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + event-stream@3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" @@ -4149,19 +5105,6 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -4175,6 +5118,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" + integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4193,7 +5151,7 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -express@^4.16.3, express@^4.16.4: +express@^4.16.3, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -4229,6 +5187,13 @@ express@^4.16.3, express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -4365,20 +5330,42 @@ figures@3.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== dependencies: escape-string-regexp "^1.0.5" -file-loader@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.2.0.tgz#5fb124d2369d7075d70a9a5abecd12e60a95215e" + integrity sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.0.0" + +filename-reserved-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + integrity sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q= + +filenamify-url@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filenamify-url/-/filenamify-url-1.0.0.tgz#b32bd81319ef5863b73078bed50f46a4f7975f50" + integrity sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A= + dependencies: + filenamify "^1.0.0" + humanize-url "^1.0.0" + +filenamify@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + integrity sha1-qfL/0RxQO+0wABUCknI3jx8TZaU= + dependencies: + filename-reserved-regex "^1.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" fileset@^2.0.3: version "2.0.3" @@ -4423,7 +5410,16 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0: +find-cache-dir@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.0.0.tgz#cd4b7dd97b7185b7e17dbfe2d6e4115ee3eeb8fc" + integrity sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -4432,12 +5428,13 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-up@3.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" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - locate-path "^3.0.0" + locate-path "^5.0.0" + path-exists "^4.0.0" find-up@^1.0.0: version "1.1.2" @@ -4447,20 +5444,19 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" + locate-path "^3.0.0" findit2@^2.2.3: version "2.2.3" @@ -4487,7 +5483,12 @@ follow-redirects@^1.0.0: dependencies: debug "^3.2.6" -fontkit@^1.0.0: +font-awesome@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" + integrity sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM= + +fontkit@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/fontkit/-/fontkit-1.8.0.tgz#deb9351619e90ddc91707b6156a9f14c8ab11554" integrity sha512-EFDRCca7khfQWYu1iFhsqeABpi87f03MBdkT93ZE6YhqCdMzb5Eojb6c4dlJikGv5liuhByyzA7ikpIPTSBWbQ== @@ -4504,23 +5505,11 @@ fontkit@^1.0.0: unicode-properties "^1.0.0" unicode-trie "^0.3.0" -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -4577,15 +5566,6 @@ fs-access@1.0.1, fs-access@^1.0.0: dependencies: null-check "^1.0.0" -fs-extra@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - fs-extra@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -4613,7 +5593,7 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.0.1: +fs-extra@^8.0.1, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -4652,10 +5632,10 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -fsevents@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" - integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== +fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" @@ -4698,6 +5678,11 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== +get-assigned-identifiers@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" + integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== + 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" @@ -4741,6 +5726,13 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -4753,18 +5745,17 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -gh-pages@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-0.12.0.tgz#d951e3ed98b85699d4b0418eb1a15b1a04988dc1" - integrity sha1-2VHj7Zi4VpnUsEGOsaFbGgSYjcE= +gh-pages@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-2.2.0.tgz#74ebeaca8d2b9a11279dcbd4a39ddfff3e6caa24" + integrity sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA== dependencies: - async "2.1.2" - commander "2.9.0" + async "^2.6.1" + commander "^2.18.0" + email-addresses "^3.0.1" + filenamify-url "^1.0.0" + fs-extra "^8.1.0" globby "^6.1.0" - graceful-fs "4.1.10" - q "1.4.1" - q-io "1.13.2" - rimraf "^2.5.4" git-raw-commits@2.0.0: version "2.0.0" @@ -4777,16 +5768,16 @@ git-raw-commits@2.0.0: split2 "^2.0.0" through2 "^2.0.0" -git-raw-commits@^1.3.0: - version "1.3.6" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" - integrity sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg== +git-raw-commits@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.3.tgz#f040e67b8445962d4d168903a9e84c4240c17655" + integrity sha512-SoSsFL5lnixVzctGEi2uykjA7B5I0AhO9x6kdzvGRHbxsa6JSEgrgy1esRKsfOKE1cgyOJ/KDR2Trxu157sb8w== dependencies: dargs "^4.0.1" lodash.template "^4.0.2" - meow "^4.0.0" + meow "^5.0.0" split2 "^2.0.0" - through2 "^2.0.0" + through2 "^3.0.0" git-remote-origin-url@^2.0.0: version "2.0.0" @@ -4796,13 +5787,21 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@2.0.2, git-semver-tags@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.2.tgz#f506ec07caade191ac0c8d5a21bdb8131b4934e3" - integrity sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w== +git-semver-tags@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-3.0.0.tgz#fe10147824657662c82efd9341f0fa59f74ddcba" + integrity sha512-T4C/gJ9k2Bnxz+PubtcyiMtUUKrC+Nh9Q4zaECcnmVMwJgPhrNyP/Rf+YpdRqsJbCV/+kYrCH24Xg+IeAmbOPg== dependencies: meow "^4.0.0" - semver "^5.5.0" + semver "^6.0.0" + +git-semver-tags@^3.0.0, git-semver-tags@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-3.0.1.tgz#9cb9e4974437de1f71f32da3bfe74f4d35afb1b9" + integrity sha512-Hzd1MOHXouITfCasrpVJbRDg9uvW7LfABk3GQmXYZByerBDrfrEMP9HXpNT7RxAbieiocP6u+xq20DkvjwxnCA== + dependencies: + meow "^5.0.0" + semver "^6.0.0" gitconfiglocal@^1.0.0: version "1.0.0" @@ -4819,10 +5818,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== +glob-parent@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" @@ -4843,10 +5842,10 @@ glob@7.0.x: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +glob@7.1.4, glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4855,10 +5854,10 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4958,21 +5957,11 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.10.tgz#f2d720c22092f743228775c75e3612632501f131" - integrity sha1-8tcgwiCS90Mih3XHXjYSYyUB8TE= - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - gzip-size@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" @@ -4981,20 +5970,20 @@ gzip-size@^5.0.0: duplexer "^0.1.1" pify "^4.0.1" -gzipper@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/gzipper/-/gzipper-2.8.1.tgz#69aab96b035548eb2c971b42fb6bb2b2222e42ad" - integrity sha512-FCtErvw/6BMn64vthcENJM3fDG3e0KHMhKIp83TI5VrEc1uL/cQNXIhZq2EbPI/NB5qd5Rc84IjUSJQSFec77g== +gzipper@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/gzipper/-/gzipper-3.4.2.tgz#279251d2573d05689548d28d1e7d4c7ccb83c9df" + integrity sha512-YAW/xmjDsguqO2JW1qFWnXSuQndv1b4q23ZockCtr1lEmWAEyCjzB6wKqu88VZYAX/J/970k5Eqy2IOPlNuJXA== dependencies: - commander "^2.20.0" - uuid "^3.3.2" + commander "^3.0.2" + uuid "^3.3.3" handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.0, handlebars@^4.1.2: +handlebars@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== @@ -5005,6 +5994,17 @@ handlebars@^4.1.0, handlebars@^4.1.2: optionalDependencies: uglify-js "^3.1.4" +handlebars@^4.3.3, handlebars@^4.4.0: + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -5042,11 +6042,21 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -5225,7 +6235,7 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" -http-proxy-middleware@^0.19.1: +http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -5266,6 +6276,14 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -5273,26 +6291,33 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^2.4.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-2.7.0.tgz#c0a9a6a3b51146224e11bba0b46bba546e461d05" - integrity sha512-LIi8zzT6PyFpcYKdvWRCn/8X+6SuG2TgYYMrM6ckEYhlp44UcEduVymZGIZNLiwOUjrEud+78w/AsAiqJA/kRg== +humanize-url@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/humanize-url/-/humanize-url-1.0.1.tgz#f4ab99e0d288174ca4e1e50407c55fbae464efff" + integrity sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8= dependencies: - cosmiconfig "^5.2.0" - execa "^1.0.0" - find-up "^3.0.0" + normalize-url "^1.0.0" + strip-url-auth "^1.0.0" + +husky@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.0.1.tgz#b0d9e16e660ec352392b3c2164ba709694d86b4d" + integrity sha512-x2wzNz3mra5rSYBPb9w59Bg3d5HnJZ+DBAALbMl/1K15Yv8zhcAxhrS792nMyjkxLsoPZtNpmnX+RqLtIKxpDQ== + dependencies: + chalk "^3.0.0" + ci-info "^2.0.0" + cosmiconfig "^6.0.0" get-stdin "^7.0.0" - is-ci "^2.0.0" - pkg-dir "^4.1.0" - please-upgrade-node "^3.1.1" - read-pkg "^5.1.1" - run-node "^1.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" slash "^3.0.0" + which-pm-runs "^1.0.0" -i18next@^17.0.3: - version "17.0.6" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-17.0.6.tgz#01079cc2bcef408139ea8ce24d18ac0d512fbe85" - integrity sha512-bdNhzhcM6RG5m82RypVguCrAQNie/ycxW0Q5C6K9UDWD5hqApZfdJFbj4Ikz9jxIR+Ja1eg0yCQLhlCT+opwIg== +i18next@^17.0.16: + version "17.3.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-17.3.1.tgz#5fe75e054aae39a6f38f1a79f7ab49184c6dc7a1" + integrity sha512-4nY+yaENaoZKmpbiDXPzucVHCN3hN9Z9Zk7LyQXVOKVIpnYOJ3L/yxHJlBPtJDq3PGgjFwA0QBFm/26Z0iDT5A== dependencies: "@babel/runtime" "^7.3.1" @@ -5303,6 +6328,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.0.tgz#59cdde0a2a297cc2aeb0c6445a195ee89f127550" + integrity sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw== + dependencies: + safer-buffer ">= 2.1.2 < 3" + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -5325,11 +6357,16 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5, ignore@^3.3.7: +ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" @@ -5363,6 +6400,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -5410,6 +6455,11 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5438,22 +6488,22 @@ ini@1.3.5, ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== +inquirer@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" + integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" rxjs "^6.4.0" - string-width "^2.1.0" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -5462,7 +6512,7 @@ inside@^1.0.0: resolved "https://registry.yarnpkg.com/inside/-/inside-1.0.0.tgz#db45e993573cdb3db70b9832e8285bad46424770" integrity sha1-20Xpk1c82z23C5gy6ChbrUZCR3A= -internal-ip@^4.2.0: +internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== @@ -5507,6 +6557,11 @@ ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -5541,7 +6596,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-binary-path@^2.1.0: +is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== @@ -5558,6 +6613,11 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" @@ -5565,13 +6625,6 @@ is-ci@^1.0.10: dependencies: ci-info "^1.5.0" -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -5650,6 +6703,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -5657,7 +6715,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -5766,6 +6824,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -5783,6 +6848,11 @@ is-stream@^1.0.0, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -5790,20 +6860,13 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" -is-text-path@^1.0.0: +is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= dependencies: text-extensions "^1.0.0" -is-text-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" - integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== - dependencies: - text-extensions "^2.0.0" - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -5831,6 +6894,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -6005,11 +7073,24 @@ jasminewd2@^2.1.0: resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= +jest-worker@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + js-base64@^2.1.8: version "2.5.1" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6102,13 +7183,6 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -6264,14 +7338,14 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -less-loader@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" - integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg== +less-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== dependencies: clone "^2.1.1" loader-utils "^1.1.0" - pify "^3.0.0" + pify "^4.0.1" less@3.9.0: version "3.9.0" @@ -6297,10 +7371,10 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -license-webpack-plugin@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz#f0ab760f7f301c76f5af52e480f320656b5721bb" - integrity sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w== +license-webpack-plugin@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz#63f7c571537a450ec47dc98f5d5ffdbca7b3b14f" + integrity sha512-7poZHRla+ae0eEButlwMrPpkXyhNVBf2EHePYWT0jyLnI6311/OXJkTI2sOIRungRpQgU2oDMpro5bSFPT5F0A== dependencies: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" @@ -6312,14 +7386,14 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" -linebreak@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-0.3.0.tgz#0526480a62c05bd679f3e9d99830e09c6a7d0ed6" - integrity sha1-BSZICmLAW9Z58+nZmDDgnGp9DtY= +linebreak@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-1.0.2.tgz#4b5781733e9a9eb2849dba2f963e47c887f8aa06" + integrity sha512-bJwSRsJeAmaZYnkcwl5sCQNfSDAhBuXxb6L27tb+qkBRtUQSSTUa5bcgCPD6hFEkRNlpWHfK7nFMmcANU7ZP1w== dependencies: base64-js "0.0.8" - brfs "^1.3.0" - unicode-trie "^0.3.0" + brfs "^2.0.2" + unicode-trie "^1.0.0" lines-and-columns@^1.1.6: version "1.1.6" @@ -6366,7 +7440,7 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.3.0: +loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== @@ -6418,11 +7492,6 @@ lodash.ismatch@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - lodash.template@^4.0.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -6438,12 +7507,7 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash@4.17.14: - version "4.17.14" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" - integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== - -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.10: +lodash@4.17.15, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6459,10 +7523,15 @@ log4js@^4.0.0: rfdc "^1.1.4" streamroller "^1.0.6" -loglevel@^1.6.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" - integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== +loglevel-plugin-prefix@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.6.4: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== loose-envify@^1.0.0: version "1.4.0" @@ -6509,10 +7578,10 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== -magic-string@0.25.2: - version "0.25.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" - integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== +magic-string@0.25.3, magic-string@^0.25.0: + version "0.25.3" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9" + integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== dependencies: sourcemap-codec "^1.4.4" @@ -6523,13 +7592,6 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" -magic-string@^0.25.0: - version "0.25.3" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9" - integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== - dependencies: - sourcemap-codec "^1.4.4" - make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -6545,21 +7607,28 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + make-error@^1.1.1: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== -make-fetch-happen@^4.0.1, make-fetch-happen@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" - integrity sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== dependencies: agentkeepalive "^3.4.1" - cacache "^11.3.3" + cacache "^12.0.0" http-cache-semantics "^3.8.1" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" + https-proxy-agent "^2.2.3" lru-cache "^5.1.1" mississippi "^3.0.0" node-fetch-npm "^2.0.2" @@ -6634,7 +7703,7 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -6647,7 +7716,7 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= -meow@5.0.0: +meow@5.0.0, meow@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== @@ -6705,6 +7774,11 @@ merge-source-map@1.0.4: dependencies: source-map "^0.5.6" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" @@ -6715,7 +7789,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -6754,38 +7828,28 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.40.0" -mime@1.6.0, mime@^1.2.11, mime@^1.4.1: +mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.3.1, mime@^2.4.2: +mime@^2.3.1, mime@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimeparse@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/mimeparse/-/mimeparse-0.1.4.tgz#dafb02752370fd226093ae3152c271af01ac254a" - integrity sha1-2vsCdSNw/SJgk64xUsJxrwGsJUo= - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" - integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw== +mini-css-extract-plugin@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" + integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== dependencies: loader-utils "^1.1.0" - normalize-url "^2.0.1" + normalize-url "1.9.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" @@ -6868,15 +7932,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -6911,7 +7967,7 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -mri@^1.1.0: +mri@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== @@ -6954,20 +8010,21 @@ multimatch@^2.1.0: arrify "^1.0.0" minimatch "^3.0.0" -multimatch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" - integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== dependencies: - array-differ "^2.0.3" - array-union "^1.0.2" - arrify "^1.0.1" + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" minimatch "^3.0.4" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1, nan@^2.13.2: version "2.14.0" @@ -7005,14 +8062,15 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -"ngx-gallery@git://github.com/musicEnfanthen/ngx-gallery-dist-patch": - version "5.10.0" - resolved "git://github.com/musicEnfanthen/ngx-gallery-dist-patch#9ee16e59d050c072f76bfc65a313c81eb7e03cf3" +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= ngx-json-viewer@^2.4.0: version "2.4.0" @@ -7033,10 +8091,10 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== node-gyp@^3.8.0: version "3.8.0" @@ -7056,7 +8114,7 @@ node-gyp@^3.8.0: tar "^2.0.0" which "1" -node-libs-browser@^2.0.0: +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -7101,17 +8159,24 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.14, node-releases@^1.1.25: +node-releases@^1.1.25: version "1.1.25" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" integrity sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ== dependencies: semver "^5.3.0" -node-sass@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" - integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== +node-releases@^1.1.44: + version "1.1.44" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" + integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== + dependencies: + semver "^6.3.0" + +node-sass@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066" + integrity sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -7120,7 +8185,7 @@ node-sass@^4.12.0: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.15" meow "^3.7.0" mkdirp "^0.5.1" nan "^2.13.2" @@ -7131,18 +8196,18 @@ node-sass@^4.12.0: stdout-stream "^1.4.0" "true-case-path" "^1.0.2" -nodemon@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.19.1.tgz#576f0aad0f863aabf8c48517f6192ff987cd5071" - integrity sha512-/DXLzd/GhiaDXXbGId5BzxP1GlsqtMGM9zTmkWrgXtSqjKmGSbLicM/oAy4FR0YWm14jCHRwnR31AHS2dYFHrg== +nodemon@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.2.tgz#9c7efeaaf9b8259295a97e5d4585ba8f0cbe50b0" + integrity sha512-GWhYPMfde2+M0FsHnggIHXTqPDHXia32HRhh6H0d75Mt9FKUoCBvumNHr7LdrpPBTKxsWmIEOjoN+P4IU6Hcaw== dependencies: - chokidar "^2.1.5" - debug "^3.1.0" + chokidar "^3.2.2" + debug "^3.2.6" ignore-by-default "^1.0.1" minimatch "^3.0.4" - pstree.remy "^1.1.6" - semver "^5.5.0" - supports-color "^5.2.0" + pstree.remy "^1.1.7" + semver "^5.7.1" + supports-color "^5.5.0" touch "^3.1.0" undefsafe "^2.0.2" update-notifier "^2.5.0" @@ -7169,7 +8234,7 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7186,7 +8251,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -7196,14 +8261,15 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== +normalize-url@1.9.1, normalize-url@^1.0.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" npm-bundled@^1.0.1: version "1.0.6" @@ -7228,6 +8294,15 @@ npm-packlist@^1.1.12, npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" +npm-pick-manifest@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + npm-pick-manifest@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" @@ -7237,17 +8312,18 @@ npm-pick-manifest@^2.2.3: npm-package-arg "^6.0.0" semver "^5.4.1" -npm-registry-fetch@^3.8.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz#00ff6e4e35d3f75a172b332440b53e93f4cb67de" - integrity sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q== +npm-registry-fetch@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" + integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" figgy-pudding "^3.4.1" lru-cache "^5.1.1" - make-fetch-happen "^4.0.2" + make-fetch-happen "^5.0.0" npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" npm-run-all@^4.1.5: version "4.1.5" @@ -7271,6 +8347,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== + dependencies: + path-key "^3.0.0" + "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -7327,12 +8410,17 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + object-inspect@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== -object-keys@^1.0.12, object-keys@^1.0.6: +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -7344,6 +8432,24 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -7375,27 +8481,27 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -open@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.2.0.tgz#7cf92cb961b5d8498b071e64098bf5e27f57230c" - integrity sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw== +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - is-wsl "^1.1.0" + mimic-fn "^2.1.0" -open@^6.3.0: +open@6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== dependencies: is-wsl "^1.1.0" +open@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.0.tgz#7e52999b14eb73f90f0f0807fe93897c4ae73ec9" + integrity sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ== + dependencies: + is-wsl "^2.1.0" + opencollective-postinstall@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" @@ -7504,6 +8610,11 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" @@ -7516,13 +8627,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.1.0, p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== dependencies: p-try "^2.0.0" +p-limit@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + 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" @@ -7549,6 +8667,13 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -7569,18 +8694,19 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pacote@9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.0.tgz#85f3013a3f6dd51c108b0ccabd3de8102ddfaeda" - integrity sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg== +pacote@9.5.5: + version "9.5.5" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.5.tgz#63355a393614c3424e735820c3731e2cbbedaeeb" + integrity sha512-jAEP+Nqj4kyMWyNpfTU/Whx1jA7jEc5cCOlurm0/0oL+v8TAp1QSsK83N7bYe+2bEdFzMAtPG5TBebjzzGV0cA== dependencies: bluebird "^3.5.3" - cacache "^11.3.2" + cacache "^12.0.2" figgy-pudding "^3.5.1" get-stream "^4.1.0" glob "^7.1.3" + infer-owner "^1.0.4" lru-cache "^5.1.1" - make-fetch-happen "^4.0.1" + make-fetch-happen "^5.0.0" minimatch "^3.0.4" minipass "^2.3.5" mississippi "^3.0.0" @@ -7589,7 +8715,7 @@ pacote@9.5.0: npm-package-arg "^6.1.0" npm-packlist "^1.1.12" npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" osenv "^0.1.5" promise-inflight "^1.0.1" promise-retry "^1.1.1" @@ -7753,6 +8879,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -7779,6 +8910,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -7797,24 +8933,25 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pdfkit@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pdfkit/-/pdfkit-0.10.0.tgz#88f2aa8e3cf9e1cc2caff6447b68dd4e435cb284" - integrity sha512-mRJ6iuDzpIQ4ftKp5GvijLXNVRK86xjnyIPBraYSPrUPubNqWM5/oYmc7FZKUWz3wusRTj3PLR9HJ1X5ooqfsg== +pdfkit@>=0.8.1, pdfkit@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/pdfkit/-/pdfkit-0.11.0.tgz#9cdb2fc42bd2913587fe3ddf48cc5bbb3c36f7de" + integrity sha512-1s9gaumXkYxcVF1iRtSmLiISF2r4nHtsTgpwXiK8Swe+xwk/1pm8FJjYqN7L3x13NsWnGyUFntWcO8vfqq+wwA== dependencies: crypto-js "^3.1.9-1" - fontkit "^1.0.0" - linebreak "^0.3.0" - png-js ">=0.1.0" + fontkit "^1.8.0" + linebreak "^1.0.2" + png-js "^1.0.0" -pdfmake@^0.1.57: - version "0.1.57" - resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.1.57.tgz#408e9853777fb851eeb700aaa221905e135917a0" - integrity sha512-s6Bs71Ylh06yNgJfP61xicHZSEvFrwo8lvI/BOU4+6eDddO8lwOZi5A42RA0V8zQr6hrI1XYxtLkk/7oJ+5w+w== +pdfmake@^0.1.60: + version "0.1.63" + resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.1.63.tgz#0001ecffe4ab30843485ce08744393315721e3f1" + integrity sha512-TjchyLVDzaEmtaDNUrceNrm0QvNIFERYOeDwHwMUQ1twGy68Uhjd1MKsb9DGAh8SuB8MCWQXB7m4k7cUevLjoA== dependencies: - iconv-lite "^0.4.24" - linebreak "^0.3.0" - pdfkit "^0.10.0" + iconv-lite "^0.5.0" + linebreak "^1.0.2" + pdfkit "^0.11.0" + svg-to-pdfkit "^0.1.8" performance-now@^2.1.0: version "2.1.0" @@ -7826,6 +8963,11 @@ picomatch@^2.0.4: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== +picomatch@^2.0.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + pidtree@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" @@ -7865,33 +9007,33 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -please-upgrade-node@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" -png-js@>=0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/png-js/-/png-js-0.1.1.tgz#1cc7c212303acabe74263ec3ac78009580242d93" - integrity sha1-HMfCEjA6yr50Jj7DrHgAlYAkLZM= +png-js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/png-js/-/png-js-1.0.0.tgz#e5484f1e8156996e383aceebb3789fd75df1874d" + integrity sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g== -portfinder@^1.0.20: - version "1.0.21" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.21.tgz#60e1397b95ac170749db70034ece306b9a27e324" - integrity sha512-ESabpDCzmBS3ekHbmpAIiESq3udRsCBGiBZLsC+HgBKv2ezb0R4oG+7RnYEVZ/ZCfhel5Tx3UzdNWA0Lox2QCA== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -7926,24 +9068,29 @@ postcss-loader@3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" -postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.2.3: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@7.0.14: - version "7.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" - integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== +postcss-value-parser@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + +postcss@7.0.17, postcss@^7.0.0, postcss@^7.0.1: + version "7.0.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" + integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14: - version "7.0.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" - integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== +postcss@^7.0.17: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -7954,32 +9101,27 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: +prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" - integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== +prettier@~1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-quick@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.11.1.tgz#462ffa2b93d24c05b7a0c3a001e08601a0c55ee4" - integrity sha512-kSXCkcETfak7EQXz6WOkCeCqpbC4GIzrN/vaneTGMP/fAtD8NerA9bPhCUqHAks1geo7biZNl5uEMPceeneLuA== +pretty-quick@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-2.0.1.tgz#417ee605ade98ecc686e72f63b5d28a2c35b43e9" + integrity sha512-y7bJt77XadjUr+P1uKqZxFWLddvj3SKY6EU4BuQtMxmmEFSMpbN132pUWdSG1g1mtUfO0noBvn7wBf0BVeomHg== dependencies: - chalk "^2.3.0" - execa "^0.8.0" - find-up "^2.1.0" - ignore "^3.3.7" - mri "^1.1.0" - multimatch "^3.0.0" + chalk "^2.4.2" + execa "^2.1.0" + find-up "^4.1.0" + ignore "^5.1.4" + mri "^1.1.4" + multimatch "^4.0.0" private@^0.1.6, private@^0.1.8: version "0.1.8" @@ -8072,7 +9214,7 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== -pstree.remy@^1.1.6: +pstree.remy@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== @@ -8129,24 +9271,12 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q-io@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/q-io/-/q-io-1.13.2.tgz#eea130d481ddb5e1aa1bc5a66855f7391d06f003" - integrity sha1-7qEw1IHdteGqG8WmaFX3OR0G8AM= - dependencies: - collections "^0.2.0" - mime "^1.2.11" - mimeparse "^0.1.4" - q "^1.0.1" - qs "^1.2.1" - url2 "^0.0.0" - q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= -q@^1.0.1, q@^1.4.1, q@^1.5.1: +q@^1.4.1, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -8161,22 +9291,16 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88" - integrity sha1-GbV/8k3CqZzh+L32r82ln472H4g= - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= dependencies: - decode-uri-component "^0.2.0" object-assign "^4.1.0" strict-uri-encode "^1.0.0" @@ -8224,7 +9348,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -8239,13 +9363,13 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-1.0.0.tgz#3f9889e73dadbda9a424bce79809b4133ad46405" - integrity sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA== +raw-loader@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-3.1.0.tgz#5e9d399a5a222cc0de18f42c3bc5e49677532b3f" + integrity sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA== dependencies: loader-utils "^1.1.0" - schema-utils "^1.0.0" + schema-utils "^2.0.1" rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" @@ -8276,16 +9400,14 @@ read-package-json@^2.0.0: optionalDependencies: graceful-fs "^4.1.2" -read-package-tree@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.2.tgz#4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8" - integrity sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA== +read-package-tree@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - once "^1.3.0" read-package-json "^2.0.0" readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" read-pkg-up@^1.0.1: version "1.0.1" @@ -8321,16 +9443,6 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -8372,12 +9484,12 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.1.tgz#b158123ac343c8b0f31d65680269cc0fc1025db1" - integrity sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ== +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== dependencies: - picomatch "^2.0.4" + picomatch "^2.0.7" redent@^1.0.0: version "1.0.0" @@ -8400,11 +9512,23 @@ reflect-metadata@^0.1.2: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regenerate@^1.2.1: +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerator-runtime@0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" @@ -8429,6 +9553,13 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" + integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== + dependencies: + private "^0.1.6" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -8455,6 +9586,18 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +regexpu-core@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" + integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.1.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + registry-auth-token@^3.0.1: version "3.4.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" @@ -8475,6 +9618,11 @@ regjsgen@^0.2.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= +regjsgen@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" @@ -8482,6 +9630,13 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" + integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -8596,12 +9751,12 @@ resolve@^1.1.5, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" restructure@^0.5.3: @@ -8621,6 +9776,11 @@ retry@^0.10.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + rfdc@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" @@ -8633,6 +9793,13 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2. dependencies: glob "^7.1.3" +rimraf@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" + integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -8648,11 +9815,6 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -run-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== - run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -8667,19 +9829,26 @@ rxjs@6.4.0: dependencies: tslib "^1.9.0" -rxjs@^6.4.0, rxjs@~6.5.2: +rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== dependencies: tslib "^1.9.0" +rxjs@~6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -8706,24 +9875,23 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" - integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== +sass-loader@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f" + integrity sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA== dependencies: - clone-deep "^2.0.1" + clone-deep "^4.0.1" loader-utils "^1.0.1" - lodash.tail "^4.1.1" neo-async "^2.5.0" - pify "^3.0.0" + pify "^4.0.1" semver "^5.5.0" -sass@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.19.0.tgz#5de82c713d4299fac57384ef5219534a37fe3e6c" - integrity sha512-8kzKCgxCzh8/zEn3AuRwzLWVSSFj8omkiGwqdJdeOufjM+I88dXxu9LYJ/Gw4rRTHXesN0r1AixBuqM6yLQUJw== +sass@1.22.9: + version "1.22.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.22.9.tgz#41a2ed6038027f58be2bd5041293452a29c2cb84" + integrity sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ== dependencies: - chokidar "^2.0.0" + chokidar ">=2.0.0 <4.0.0" saucelabs@^1.5.0: version "1.5.0" @@ -8758,6 +9926,26 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.0.0, schema-utils@^2.0.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" + integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== + dependencies: + ajv "^6.10.2" + ajv-keywords "^3.4.1" + +scope-analyzer@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/scope-analyzer/-/scope-analyzer-2.0.5.tgz#72c9c6770c3e66984f84c7d3c7045998a1a7db8a" + integrity sha512-+U5H0417mnTEstCD5VwOYO7V4vYuSqwqjFap40ythe67bhMFL5C3UgPwyBv7KDJsqUBIKafOD57xMlh1rN7eaw== + dependencies: + array-from "^2.1.1" + es6-map "^0.1.5" + es6-set "^0.1.5" + es6-symbol "^3.1.1" + estree-is-function "^1.0.0" + get-assigned-identifiers "^1.1.0" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -8781,12 +9969,12 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: tmp "0.0.30" xml2js "^0.4.17" -selfsigned@^1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: - node-forge "0.7.5" + node-forge "0.9.0" semver-compare@^1.0.0: version "1.0.0" @@ -8819,17 +10007,22 @@ semver-intersect@1.4.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" - integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== +semver@6.3.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" - integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.1: +semver@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== @@ -8858,10 +10051,10 @@ send@0.17.1, send@latest: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== serve-index@^1.9.1: version "1.9.1" @@ -8929,14 +10122,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" + kind-of "^6.0.2" shallow-copy@~0.0.1: version "0.0.1" @@ -8950,11 +10141,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" @@ -9068,10 +10271,10 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== dependencies: debug "^3.2.5" eventsource "^1.0.7" @@ -9104,10 +10307,10 @@ socks@~2.3.2: ip "^1.1.5" smart-buffer "4.0.2" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= dependencies: is-plain-obj "^1.0.0" @@ -9121,22 +10324,22 @@ source-list-map@~0.1.7: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY= -source-map-explorer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.0.1.tgz#988721e8320d7b6925bc40289e5de658fe4cad4d" - integrity sha512-mv2sv2b6oN2L9n18O/eLrYiP5zfWEHESLq4utWBqNw8GnkbuRuXs8twVCOhMT5hxRzfQgS7Yxh7HlQaW8oeiAQ== +source-map-explorer@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.2.1.tgz#4bd236a1fe73e8b9db475f60197c48fc041928b8" + integrity sha512-vfjS5IRaENgXtTq2Bym0ctEorYGYNHLVCVZZeL1fvkD5iBoWKMlUhF/oFBTcTn9cxry1flplyvk0QGTROafB3Q== dependencies: btoa "^1.2.1" - chalk "^2.4.2" - convert-source-map "^1.6.0" - ejs "^2.6.2" + chalk "^3.0.0" + convert-source-map "^1.7.0" + ejs "^3.0.1" escape-html "^1.0.3" - glob "^7.1.4" - lodash "^4.17.11" - open "^6.3.0" + glob "^7.1.6" + lodash "^4.17.15" + open "^7.0.0" source-map "^0.7.3" - temp "^0.9.0" - yargs "^13.2.4" + temp "^0.9.1" + yargs "^15.1.0" source-map-loader@0.2.4: version "0.2.4" @@ -9157,10 +10360,10 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.12, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.10, source-map-support@~0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -9172,6 +10375,14 @@ source-map-support@^0.4.15, source-map-support@~0.4.0: dependencies: source-map "^0.5.6" +source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -9184,11 +10395,6 @@ source-map@0.1.x, source-map@~0.1.30: dependencies: amdefine ">=0.0.4" -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= - source-map@0.7.3, source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" @@ -9254,10 +10460,10 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -9332,25 +10538,25 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -standard-version@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/standard-version/-/standard-version-6.0.1.tgz#ad50e9770b73090d2f8f692e520d906813a3cefe" - integrity sha512-+09AwTbyLKyUwefiZSccgarp24okvH9A229NOVSpYTKWcxBxqZqdYmtQaJ8UET9mjPXRxP84vonJU4YMqCyBTQ== +standard-version@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/standard-version/-/standard-version-7.0.1.tgz#33e950cf5c571ae0358a7ffae2292aa4547dc504" + integrity sha512-3GR9dPlNpC/osTwb9YsU2KQelGvSORMPUFN7zOUE3HN4yjCTsT57IJAFsyPXPP512QDMSxwwjhxa8Em5vF5F5Q== dependencies: chalk "2.4.2" - conventional-changelog "3.1.8" - conventional-changelog-config-spec "1.0.0" - conventional-recommended-bump "5.0.0" + conventional-changelog "3.1.12" + conventional-changelog-config-spec "2.1.0" + conventional-recommended-bump "6.0.2" detect-indent "6.0.0" detect-newline "3.0.0" dotgitignore "2.1.0" figures "3.0.0" - find-up "3.0.0" + find-up "4.1.0" fs-access "1.0.1" - git-semver-tags "2.0.2" - semver "6.0.0" - stringify-package "1.0.0" - yargs "13.2.2" + git-semver-tags "3.0.0" + semver "6.3.0" + stringify-package "1.0.1" + yargs "14.2.0" static-eval@^2.0.0: version "2.0.2" @@ -9359,6 +10565,13 @@ static-eval@^2.0.0: dependencies: escodegen "^1.8.1" +static-eval@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.3.tgz#cb62fc79946bd4d5f623a45ad428233adace4d72" + integrity sha512-zsxDGucfAh8T339sSKgpFbvg15Fms2IVaJGC+jqp0bVsxhcpM+iMeAI8weNo8dmf4OblgifTBUoyk1vGVtYw2w== + dependencies: + escodegen "^1.11.1" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -9387,12 +10600,25 @@ static-module@^2.2.0: static-eval "^2.0.0" through2 "~2.0.3" -stats-webpack-plugin@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz#ccffe9b745de8bbb155571e063f8263fc0e2bc06" - integrity sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ== +static-module@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/static-module/-/static-module-3.0.3.tgz#cc2301ed3fe353e2d2a2195137013853676f9960" + integrity sha512-RDaMYaI5o/ym0GkCqL/PlD1Pn216omp8fY81okxZ6f6JQxWW5tptOw9reXoZX85yt/scYvbWIt6uoszeyf+/MQ== dependencies: - lodash "^4.17.4" + acorn-node "^1.3.0" + concat-stream "~1.6.0" + convert-source-map "^1.5.1" + duplexer2 "~0.1.4" + escodegen "~1.9.0" + has "^1.0.1" + magic-string "^0.22.4" + merge-source-map "1.0.4" + object-inspect "~1.4.0" + readable-stream "~2.3.3" + scope-analyzer "^2.0.1" + shallow-copy "~0.0.1" + static-eval "^2.0.2" + through2 "~2.0.3" "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" @@ -9470,7 +10696,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -9487,6 +10713,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.padend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" @@ -9496,6 +10731,22 @@ string.prototype.padend@^3.0.0: es-abstract "^1.4.3" function-bind "^1.0.2" +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -9510,10 +10761,10 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-package@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" - integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g== +stringify-package@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -9536,6 +10787,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -9553,6 +10811,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -9570,13 +10833,25 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + escape-string-regexp "^1.0.2" + +strip-url-auth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-url-auth/-/strip-url-auth-1.0.1.tgz#22b0fa3a41385b33be3f331551bbb837fa0cd7ae" + integrity sha1-IrD6OkE4WzO+PzMVUbu4N/oM164= + +style-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" + integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.0.1" stylus-loader@3.0.2: version "3.0.2" @@ -9604,7 +10879,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.2.0, supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -9618,12 +10893,26 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-to-pdfkit@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/svg-to-pdfkit/-/svg-to-pdfkit-0.1.8.tgz#5921765922044843f0c1a5b25ec1ef8a4a33b8af" + integrity sha512-QItiGZBy5TstGy+q8mjQTMGRlDDOARXLxH+sgVm1n/LYeo0zFcQlcCh8m4zi8QxctrxB9Kue/lStc/RD5iLadQ== + dependencies: + pdfkit ">=0.8.1" + symbol-observable@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -9650,10 +10939,10 @@ tar@^4, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" -temp@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.0.tgz#61391795a11bd9738d4c4d7f55f012cb8f55edaa" - integrity sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ== +temp@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" + integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== dependencies: rimraf "~2.6.2" @@ -9664,49 +10953,34 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -terser-webpack-plugin@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" - integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== - dependencies: - cacache "^11.0.2" - find-cache-dir "^2.0.0" - schema-utils "^1.0.0" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - terser "^3.16.1" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - -terser-webpack-plugin@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" - integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== +terser-webpack-plugin@1.4.3, terser-webpack-plugin@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" + cacache "^12.0.2" + find-cache-dir "^2.1.0" is-wsl "^1.1.0" - loader-utils "^1.2.3" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" - terser "^4.0.0" - webpack-sources "^1.3.0" + terser "^4.1.2" + webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^3.16.1: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== +terser@4.3.9: + version "4.3.9" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.9.tgz#e4be37f80553d02645668727777687dad26bbca8" + integrity sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA== dependencies: - commander "^2.19.0" + commander "^2.20.0" source-map "~0.6.1" - source-map-support "~0.5.10" + source-map-support "~0.5.12" -terser@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" - integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== +terser@^4.1.2: + version "4.6.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.1.tgz#913e35e0d38a75285a7913ba01d753c4089ebdbd" + integrity sha512-w0f2OWFD7ka3zwetgVAhNMeyzEbj39ht2Tb0qKflw9PmW9Qbo5tjTh01QJLkhO9t9RDDQYvk+WXqpECI2C6i2A== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -9717,11 +10991,6 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.0.0.tgz#43eabd1b495482fae4a2bf65e5f56c29f69220f6" - integrity sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ== - through2@^2.0.0, through2@^2.0.2, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -9880,6 +11149,13 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -9927,7 +11203,7 @@ ts-simple-ast@12.4.0: tslib "^1.9.0" typescript "2.9.1" -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@1.10.0, tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== @@ -9987,10 +11263,10 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" @@ -10000,6 +11276,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10010,21 +11296,16 @@ typescript@2.9.1: resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" integrity sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA== -typescript@3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.4.tgz#aac4a08abecab8091a75f10842ffa0631818f785" - integrity sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA== +typescript@3.5.3, typescript@~3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== typescript@^2.4.2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== -typescript@~3.4.5: - version "3.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" - integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== - uglify-js@^3.1.4: version "3.6.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" @@ -10050,6 +11331,24 @@ undefsafe@^2.0.2: dependencies: debug "^2.2.0" +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + unicode-properties@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/unicode-properties/-/unicode-properties-1.2.2.tgz#8ea79db656166f9c2eca157b0fd06c415dcf5b01" @@ -10058,6 +11357,11 @@ unicode-properties@^1.0.0: base64-js "^1.3.0" unicode-trie "^1.0.0" +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + unicode-trie@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" @@ -10190,11 +11494,6 @@ url-parse@^1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" -url2@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/url2/-/url2-0.0.0.tgz#4eaabd1d5c3ac90d62ab4485c998422865a04b1a" - integrity sha1-Tqq9HVw6yQ1iq0SFyZhCKGWgSxo= - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -10221,6 +11520,13 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -10245,6 +11551,11 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -10294,7 +11605,7 @@ void-elements@^2.0.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -watchpack@^1.5.0: +watchpack@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== @@ -10310,11 +11621,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -weak-map@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.0.tgz#b66e56a9df0bd25a76bbf1b514db129080614a37" - integrity sha1-tm5Wqd8L0lp2u/G1FNsSkIBhSjc= - webdriver-js-extender@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" @@ -10340,10 +11646,10 @@ webdriver-manager@^12.0.6: semver "^5.3.0" xml2js "^0.4.17" -webpack-bundle-analyzer@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz#3da733a900f515914e729fcebcd4c40dde71fc6f" - integrity sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA== +webpack-bundle-analyzer@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz#39b3a8f829ca044682bc6f9e011c95deb554aefd" + integrity sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g== dependencies: acorn "^6.0.7" acorn-walk "^6.1.1" @@ -10354,7 +11660,7 @@ webpack-bundle-analyzer@^3.3.2: express "^4.16.3" filesize "^3.6.1" gzip-size "^5.0.0" - lodash "^4.17.10" + lodash "^4.17.15" mkdirp "^0.5.1" opener "^1.5.1" ws "^6.0.0" @@ -10367,60 +11673,54 @@ webpack-core@^0.6.8: source-list-map "~0.1.7" source-map "~0.4.1" -webpack-dev-middleware@3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz#f37a27ad7c09cd7dc67cd97655413abaa1f55942" - integrity sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg== - dependencies: - memory-fs "^0.4.1" - mime "^2.3.1" - range-parser "^1.0.3" - webpack-log "^2.0.0" - -webpack-dev-middleware@^3.6.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" - integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== +webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" - mime "^2.4.2" + mime "^2.4.4" + mkdirp "^0.5.1" range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d" - integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A== +webpack-dev-server@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" + integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.1.5" + chokidar "^2.1.8" compression "^1.7.4" connect-history-api-fallback "^1.6.0" debug "^4.1.1" - del "^4.1.0" - express "^4.16.4" + del "^4.1.1" + express "^4.17.1" html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" - internal-ip "^4.2.0" + internal-ip "^4.3.0" ip "^1.1.5" + is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.1" + loglevel "^1.6.4" opn "^5.5.0" - portfinder "^1.0.20" + p-retry "^3.0.1" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" serve-index "^1.9.1" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" + sockjs-client "1.4.0" + spdy "^4.0.1" strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.6.2" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" + ws "^6.2.1" yargs "12.0.5" webpack-log@^2.0.0: @@ -10438,7 +11738,15 @@ webpack-merge@4.2.1: dependencies: lodash "^4.17.5" -webpack-sources@1.3.0, webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0: +webpack-sources@1.4.3, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^1.1.0, webpack-sources@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== @@ -10453,35 +11761,34 @@ webpack-subresource-integrity@1.1.0-rc.6: dependencies: webpack-core "^0.6.8" -webpack@4.30.0: - version "4.30.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.30.0.tgz#aca76ef75630a22c49fcc235b39b4c57591d33a9" - integrity sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg== +webpack@4.39.2: + version "4.39.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.2.tgz#c9aa5c1776d7c309d1b3911764f0288c8c2816aa" + integrity sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" "@webassemblyjs/wasm-edit" "1.8.5" "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" + eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.1" + watchpack "^1.6.0" + webpack-sources "^1.4.1" websocket-driver@>=0.5.1: version "0.7.3" @@ -10512,6 +11819,11 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + which@1, which@^1.2.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -10519,6 +11831,13 @@ which@1, which@^1.2.1, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -10550,17 +11869,17 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.5.2, worker-farm@^1.7.0: +worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" -worker-plugin@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-3.1.0.tgz#6311778f3514a87c273510ee3f809cc3fe161e6f" - integrity sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw== +worker-plugin@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-3.2.0.tgz#ddae9f161b76fcbaacf8f54ecd037844584e43e7" + integrity sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q== dependencies: loader-utils "^1.1.0" @@ -10581,6 +11900,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -10595,7 +11923,7 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" -ws@^6.0.0: +ws@^6.0.0, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -10639,7 +11967,7 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -10664,6 +11992,13 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + yargs-parser@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" @@ -10679,7 +12014,7 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.0.0, yargs-parser@^13.1.1: +yargs-parser@^13.0.0: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -10687,6 +12022,22 @@ yargs-parser@^13.0.0, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" + integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + 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" @@ -10729,38 +12080,39 @@ yargs@13.1.0: y18n "^4.0.0" yargs-parser "^13.0.0" -yargs@13.2.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" - integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== +yargs@14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" + integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== dependencies: - cliui "^4.0.0" + cliui "^5.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" 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.0.0" + yargs-parser "^15.0.0" -yargs@^13.2.4: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== +yargs@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" + integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.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" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^16.1.0" yargs@^7.0.0: version "7.1.0"